ECE 69500 - Introduction to Operating Systems
Ran as ECE 59500 in Spring 2017, Spring 2018, Fall 2019 semesters.
Lecture Hours: 3 Credits: 3
Areas of Specialization:
- Computer Engineering
- EE Elective
- CMPE Special Content Elective
On-campus and online
Requisites by Topic:
C programming, data structures, computer design and prototyping, and basic operating systems.
This course will cover basic design principles of major components of modern Operating Systems: 1. Processes Management: processes, threads, CPU scheduling, inter-process communication, process synchronization, mutual exclusion, deadlocks; 2. Memory Management: dynamic address relocation, segmentation, paging, virtual memory, page replacement algorithms, protection, sharing; 3. File Systems: file system interface, file system implementation, including directories, disk allocation, disk scheduling, memory-mapped files, Network File System 4. Storage Systems: Disk structure, disk scheduling, swap-space management, RAID The course will additionally introduce (1) system design principles including extra-level of indirection, optimizing the common case, separation of policy and mechanism, and the principle of locality and caching, (2) advance OS topics such as Network File System, and (3) Case study of a modern OS such as Linux. Students are expected to spend at least three hours per week gaining hands-on experience building major components of a modern time-sharing operating system.
- Operating System Concepts , 9th Edition , A. Silberschatz, P. Galvin, and G. Gagne , John Wiley & Sons , 2013 , ISBN No. 9781118063330
- Operating Systems: Design and Implementation , 3rd Edition , A. Tannenbaum and A. Woodhull , Pearson Prentice Hall , 2006
A student who successfully fulfills the course requirements will have demonstrated:
- an understanding of basic concepts of and technologies in processes, process control, synchronization, scheduling, memory management, secondary and tertiary storage management, file systems, distributed and networked operating systems
- an ability to design and modify components of an operating system
- an ability to model and analyze the performance of OS components
|1||Introduction to OS|
|1||Processes and Threads|
|1||Network File System, Distributed Systems|
|1||Case Study: Linux|
Exams, programming projects