CSE 258
- Operating Systems
Syllabus
This course provides an introduction to operating system design and
implementation. The operating system provides a well-known, convenient, and
efficient interface between user programs and the bare hardware of the computer
on which they run. The operating system is responsible for allowing resources
(e.g., disks, networks, and processors) to be shared, providing common services
needed by many different programs (e.g., file service, the ability to start or
stop processes, and access to the printer), and protecting individual programs
from one another.
The course will start with a brief historical perspective of the evolution of
operating systems over the last fifty years, and then cover the major components
of most operating systems. This discussion will cover the tradeoffs that can be
made between performance and functionality during the design and implementation
of an operating system. Particular emphasis will be given to three major OS
subsystems: process management (processes, threads, CPU scheduling,
synchronization, and deadlock), memory management (segmentation, paging,
swapping), file systems, protection and security, and operating system support for distributed systems
This course is intended for undergraduate Computer Science and Computer
Engineering majors (junior and senior students) and for MS students.
For a detailed schedule of what material is covered in which class,
see the Class
Master Schedule
Part 1: Introduction
What is an operating system?
Why operating system is important?
History of operating system
Operating systems and architecture
Part 2: Process management
Processes, threads
CPU scheduling
Synchronization
Deadlock
Part 3: Memory management
Explicit memory management
Virtual memory
Paging & page replacement algorithms
Virtual memory in the real world
Part 4: File systems
File system
I/O management
Storage system
Part 6: Advanced topics
Networking, Protection &
Security