Indian Institute of Technology Kanpur
Course Title: Operating System Principles
Course No: CS962
Credits: 3-0-0-0-[9]
Instructors: Dr. Debadatta Mishra, Dr. Sandeep Shukla, Dr. Indranil Saha
Course Overview:
Practical understanding of operating system design is desirable for application developers, system software developers, security professionals and system administrators. The goal of this course is to provide better understanding of the OS concepts using programming assignments on small teaching OS (gemOS) and full fledged Linux OS (a.k.a. Linux Kernel). The students will also be exposed to the OS hardware interfaces during the course. All standard OS concepts along with some advanced topics will be covered with a hands-on approach to offer better clarity on the concepts.
Objectives:
Having successfully completed the course, the students will be able to
- Understand different OS concepts and apply them for better programming
- Understand OS APIs and their usage
- Connect the dots from application to the hardware
- Analyse the performance, security and flexibility aspects of alternate designs for different OS subsystems
- Design new features in the OS layer
Grading:
Quizzes: 15%
Programming assignments: 40% (using gemOS and Linux kernel)
Midsem: 15%
End Sem: 30%
Course Contents: The course will primarily focus on the following topics.
- Introduction:- Motivation, OS as a middleware, overview of OS abstractions and interfaces, process, Virtual memory and process address space, files, system call API (UNIX/Linux)
- OS design principles: Principle of limited direct execution, isolation and resource multiplexing, privilege architecture (X86) and OS mode execution, user to OS context switching (system call and fault handlers using gemOS, Linux)
- Process scheduling: context switch mechanisms, OS scheduling subsystem, Linux scheduling subsystem, scheduling policies
- Memory Management: virtual memory, segmentation, paging (with X86 MMU), page replacement policies
- Filesystems and block layer: file system organization and interfacing, page cache, Linux EXT4 file system, block I/O interfacing, I/O scheduler
- Concurrency: Threads, Synchronization using hardware primitives, semaphores, classical problems, deadlocks
- Device drivers: Device probe and initialization, Interrupt handling, DMA
Detailed breakdown of lecture hours for different topics is provided in the following table.
Module |
Topic |
Hourse |
Introduction |
Introduction to OS, System call API for process, memory and file management, working of a shell |
4 |
OS design principles |
Limited direct execution, privilege separation, X86 privilege architecture |
1 |
Process Management |
Process context switching, scheduling (mechanism and policy), scheduling policies |
4 |
Memory management |
Virtual Memory, segmentation, paging, page replacement policies |
4 |
Filesystems and block layer |
File system organization, Linux VFS layer and Ext4 FS, Page cache |
4 |
Concurrency |
Threads, spinlocks, semaphores, classical problems |
1 |
Device drivers |
Device probe and initialization interrupt handling, DMA |
2 |
Total lectures |
|
20 |
References:
- Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces. Online 2018.
- Maurice J Bach, The Design of Unix Operating System, Prentice-Hall Inc.1986
- Robert Love. Linux Kernel Development (Third ed.), O'Reilly 2010.