Skip to main content

ECE 565 Operating Systems Design

3 Credit Hours

The course explores basic concepts and mechanisms related to the design of modern operating systems, including: process scheduling and coordination, memory management, synchronization, storage, file systems, security and protection, and their application to multi-core and many-core processors. The course involves coding projects requiring strong C programming skills.

Prerequisite

Graduate Standing
Proficiency in C

Notes: ECE465, ECE565 and CSC501 are mutually exclusive:
students may not receive credit for both ECE465 and ECE565, or both ECE465 and CSC501, or both ECE565 and
CSC501.

Course Objectives

By the end of the course, students should be able to do the following:

  1. Explain the concepts of processes, threads and their differences; apply this knowledge to design and
    implement multi-process and multi-threaded applications.
  2. Explain the operation of different process scheduling algorithms and their strengths and weaknesses in
    terms of throughput, response time, CPU utilization and fairness.
  3. Explain the concepts of race condition and critical section, and the use of different hardware and software
    synchronization mechanisms to guarantee mutual exclusion. These include: interrupt disabling, hardware
    synchronization mechanisms, mutexes, semaphores and condition variables.
  4. Apply different synchronization mechanisms to classic synchronization problems, including: bounded-
    buffer, readers-writers and dining-philosopher problems.
  5. Explain the concepts of virtual memory and address translation. Describe different address translation
    mechanisms (hardware- and software-based relocation, segmentation, paging) and memory allocation
    strategies (best fit, first fit, worst fit, slab and buddy allocators).
  6. Describe the physical structure of secondary storage devices and its implications on the use of these devices
    and their performance; evaluate different disk scheduling algorithms.
  7. Explain the function of a file system, its interfaces, and implementations; this includes evaluating
    advantages and disadvantages of different file system designs.
  8. Design, implement, and validate basic scheduling, synchronization and memory management algorithms
    within an operating system.
  9. Explain the interaction of architecture and operating system design.
  10. Describe the implications of multi- and many-core systems on operating system design.

Course Requirements

Students will be evaluated based on two exams, (tentatively) four projects, and regular quizzes. Projects will require extending an existing open-source OS with various functionalities (process scheduling, synchronization mechanisms, virtual memory).

Grading will be as follows:

  • Midterm exam: 15%
  • Final exam: 30%
  • Projects: 50%
  • Quizzes: 5%

Course Outline

  • Introduction to OS (2 lectures)
  • Multitasking: Processes & Threads (~4 lectures)
  • CPU Scheduling (~3 lectures)
  • Synchronization & deadlocks (~5 lectures)
  • Memory management (~7 lectures)
  • File system & storage (~6 lectures)

Textbook

Operating Systems: Three Easy Pieces
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
Arpaci-Dusseau Books
November, 2023 (Version 1.10)
Available at: https://pages.cs.wisc.edu/~remzi/OSTEP/

Software Requirements

The projects will require students to modify Xinu OS from Purdue University: https://xinu.cs.purdue.edu/Coding and testing will be done using NC State’s VCL: https://vcl.ncsu.edu/

Created: 4/15/2024