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:
- Explain the concepts of processes, threads and their differences; apply this knowledge to design and
implement multi-process and multi-threaded applications. - Explain the operation of different process scheduling algorithms and their strengths and weaknesses in
terms of throughput, response time, CPU utilization and fairness. - 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. - Apply different synchronization mechanisms to classic synchronization problems, including: bounded-
buffer, readers-writers and dining-philosopher problems. - 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). - 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. - Explain the function of a file system, its interfaces, and implementations; this includes evaluating
advantages and disadvantages of different file system designs. - Design, implement, and validate basic scheduling, synchronization and memory management algorithms
within an operating system. - Explain the interaction of architecture and operating system design.
- 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