CS 347 : Operating Systems Principles

Course runs in Slot 1: Monday 8.30-9.25, Tuesday 9.30-10.25, Thursday 10.25-11.30
Place: SIC-201, Kanwal Rekhi Building

Associated lab CS 377: Monday 2.00 - 5.00 in New Software Lab

Teaching Assistants: Abhay kadam, Anurag Sharma, Prashan Sachdeva, Neeraj Dhariwal, Vibhor Kulshrestha email ids: {abhaykadam,anuragsharma,sachdevap,neerajd,vibhork}@cse.iitb.ac.in

The course will be based on the following book:
D. M. Dhamdhere : Operating Systems---A concept-based approach, Second Edition,
Tata McrGraw Hill, 2006.


Syllabus of the course

Introduction to Operating Systems. Interaction between the OS, computer system and user programs.

Process management---Creation and scheduling of processes, Process synchronization, Message Passing, Deadlocks.

Memory management---relocation and execution of programs, sharing of programs, Virtual memory management.

File systems---file organization, directory structures, file system reliability.Disk scheduling.

Security and Protection.


Plan/log of lectures:

Lecture 1 (21 July 2011):
Introduction to the course.

Introduction to critical thinking skills. Power of abstraction as a focusing tool.
Slides

Lecture 2 (25 July 2011):
Goals of an OS. Fundamental tasks of an OS.
Program management and scheduling. Overhead of OS operation.
Slides

Lecture 3 (26 July 2011):
Resource management policies---partitioning of resources and pool-based allocation.
Security and Protection.

Lecture 4 (28 July 2011):
Overview of the course---how the OS controls operation of the OS, how programs and resources are managed, process interactions and deadlocks.
Fundamentals of computer architecture. User accessible registers and the PSW.

Lecture 5 (1 August 2011):
Memory hierarchy. Performance issues in memory hierarchies.
I/O organization. Operation of the DMA.
Slides

Lecture 6 (2 August 2011):
Interrupts---the interrupt action, interrupt processing, masking of interrupts.

Lecture 7 (4 August 2011):
System calls.
Operating system features for different computing environments---Performance measures in non-interactive and interactive environments.
Batch processing systems. Multiprogramming systems---architectural support.
Quiz 1

Lecture 8 (8 August 2011):
Multiprogramming operating systems---program mix and program priorities.

Lecture 9 (9 August 2011):
Time sharing systems. Real time systems.

Lecture 10 (11 August 2011):
Introduction to processes.
Slides

Lecture 11 (16 August 2011):
Process management: Process control block and process environment.
Switching between processes.
Process states and event management.

Lecture 12 (18 August 2011):
Process states (contd.) Swapping states; event management.
Introduction to threads---concept and benefits.
Quiz 2.

Lecture 13 (23 August 2011):
Thread models, concurrency and parallelism.
Process interactions---data sharing, control synchronization.
Race conditions.

Lecture 14 (25 August 2011):
Introduction to Process Synchronization---Critical sections, Control synchronization. Indivisible operations.
Classic problems in process synchronization.
Slides

Lectures 15 and 16 (29 August 2011):
Producers and Consumers---correctness conditions and solution outlines.
Semaphores and Monitors.

Lecture 17 (30 August 2011):
Other classic synchronization problems: Readers-Writers and Dining Philosophers.
Software implementations of critical sections---Dekker's algorithm.

Lecture 18 (5 September 2011):
Software implementations of critical sections---Peterson's algorithm, Bakery algorithm.
Scheduling preliminaries---concepts and terminology.
Non-preemptive Scheduling Policies.

Lecture 19 (6 September 2011):
Pre-emptive Scheduling policies.
Quiz 3.

Lecture 20 (8 September 2011):
Multi-level and Fair-share scheduling policies.

Lecture 21 (19 September 2010):
Real time scheduling---determining deadlines. Feasible schedules.
Rate Monotonic Scheduling.

Lecture 22 (20 September 2011):
Basics of memory allocation---static and dynamic allocation. Memory allocation as a binding.
Model of memory allocation to a process. Fragmentation and reuse of memory.
Merging of free areas; boundary tags. Compaction of memory.

Lecture 23 (22 September 2011):
Buddy system allocator. Powers of 2 memory allocators. Virtual memory allocation using paging.

Lecture 24 (26 September 2011):
Overview of virtual memory organization---non-contiguous memory allocation, address translation and page faults.

Lecture 25 (27 September 2011):
Virtual memory using paging. Demand loading of pages. Address translation. The translation look-aside buffer (TLB).
Thrashing and its prevention.

Lecture 26 (29 September 2011):
Superpages. I/O operations in memory.
Practical page table organizations---the inverted page table.

Lecture 27 (3 October 2011):
Practical page table organizations (contd.)---Multi-level page tables.
Page replacement policies (contd). Second chance and clock algorithms.

Lecture 28 (4 October 2011):
Determining memory allocation for a process. The working set.
Program sharing in virtual memory systems. Copy-on-write.

Lecture 29 (10 October 2011):
Quiz 4.
Logical organization of a file system. Directories and entries in directories.
The file control block (FCB).

Lecture 30 (11 October 2011):
File organizations. Disk space allocation. Indexed allocation.
Actions at open and close---The active files table (AFT), aka open files table (OFT).

Lecture 31 (13 October 2011):
File sharing semantics.
Fault tolerance---careful disk, stable storage and atomic actions.
Virtual file systems.