Introduction to Operating Systems
Revised: December 2008 (Andrew R. Dalton)
Course Description
The system call interface and the implementation of the operating system kernel (process management, memory management, and file systems); concurrency (including synchronization primitives, inter-process communication and deadlock); system security; 3 credit hours. Prerequisites: CS 151.
Objectives
- Understanding of the system call interface and of the key concepts in the design of an operating system kernel
- Understanding of concurrency problems and solution techniques
Text
1. A. Tanenbaum and A. Woodhull. Operating Systems Design and Implementation, Third Edition. Prentice Hall.
Optional:
1. J. Corbet, A. Rubini, and G. Kroah-Hartman. Linux Device Drivers, Third Edition. O'Reilly. Online Copy
Grading Procedure
Grading procedures and factors influencing course grade are left to the discretion of individual instructors, subject to general university policy.
Attendance Policy
Attendance policy is left to the discretion of individual instructors, subject to general University policy.
Course Outline
-
Introduction to the C Programming Langauge
An abbreviated overview of the C programming language. -
Introduction to Operating Systems
Some basic terminology (process, kernel), functions of operating systems, history of operating system development, current system classifications (parallel, distributed, real-time). -
System Call Abstraction
Components of an operating system kernel, the system call interface (generic and UNIX-specific). Structuring of an operating system kernel (monolithic, microkernel, etc). -
Basic Process Management and Threads
Process state transition diagram, context switches, threads. -
Process Synchronization
Interprocess communication, the critical section problem, software solutions, semaphores, monitors, classical problems, pthreads, Java synchronization. -
Deadlock Handling
Deadlock characterization, deadlock prevention, deadlock avoidance, and deadlock detection. - Process Scheduling
Scheduling algorithms both in general and for UNIX and Minix3. -
Input/Output
An introduction to the aspects of computer hardware relevant to the operating system including device drivers, I/O interrupts, interrupt vectors, DMA, memory-mapped I/O, programmed I/O, interupt-driven I/O, storage hierarchy, caching, cache coherency, dual-mode operation, memory protection using base and limit registers, timer interrupts and time slicing (quantums and preemptive CPU scheduling). -
Memory management
Memory management for non-virtual memory systems: swapping, contiguous allocation, segmentation, and paging. Virtual memory systems: demand paging, page replacement, and thrashing. Linux and Minix examples. -
File Systems and Secondary Storage
The kernel I/O subsystem (interrupt handling and device drivers), disk scheduling, the file system interface, and file system implementation.









