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.

 

  1. 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) 
  2. 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)
  3. Process scheduling: context switch mechanisms, OS scheduling subsystem, Linux scheduling subsystem, scheduling policies
  4. Memory Management: virtual memory, segmentation, paging (with X86 MMU),  page replacement policies
  5. Filesystems and block layer: file system organization and interfacing, page cache, Linux EXT4 file system, block I/O interfacing, I/O scheduler
  6. Concurrency: Threads, Synchronization using hardware primitives, semaphores, classical problems, deadlocks
  7. 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:

  1. Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces. Online 2018.
  2. Maurice J Bach, The Design of Unix Operating System, Prentice-Hall Inc.1986
  3. Robert Love. Linux Kernel Development (Third ed.), O'Reilly 2010.