CS 347 : Operating Systems Principles

Course Time Table:

Classes in Slot 3: Monday 10.35-11.30, Tuesday 11.35-12.30, Thursday 8.30-9.25 ( Place: LCC-21 (Second Floor, new classroom complex) )

Office Hours: Thursdays 9.25-10.25 ( Place: Initially outside LCC-21, later in Room F-3 (First Floor, CSE building) )
Also available by prior appointment at other but mutually convenient times.

Associated lab CS 377: Friday 2.00 - 5.00 in Old Software Lab (Ground floor, Math+CSE bldg)

Teaching Assistants: T. Ashok, Ashwin Paranjape, Naman Jain, Pravin Made, Sameep Bagadia
(emails: tala.ashok@gmail.com, {ashwinp, namank, madepravin, sameep}@cse)

Text book:
D. M. Dhamdhere : Operating Systems---A concept-based approach, Third Edition,
Tata McrGraw Hill, 2012.


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.



Typical credit distribution:
Quizzes (10%), Home Assignment (10%), Mid-sem (30%), End-sem (50%).
(Minor redistribution may be made depending on nature of home assignment.)


Honesty policy:
Highest standards of academic honesty would be enforced.
Students must not discuss or copy in any evaluation unit---home assignment, quiz, exams, lab assignment, etc.
Even looking in the direction of someone's answerpaper during a written quiz or exam would be
considered dishonest and would be dealt with accordingly.

Plan/log of lectures:

Lecture 1 (6 Jan 2014):
Introduction to the course.
Introduction to critical thinking skills.
Slides

Lecture 2 (7 Jan 2014):
Power of abstraction as a focusing tool.
Goals of an OS---effective utilization of a computer, user convenience, ensuring non-interference.
Overhead of OS operation. Interrupt-drive operation of an OS.

Lecture 3 (9 Jan 2014):
Fundamental tasks of an OS: 1. Program management and scheduling.
2. Resource management policies---partitioning of resources and pool-based allocation. Virtual resources.

Lecture 4 (13 Jan 2014):
Fundamental tasks of an OS: (Contd.) 2. Resource Management---Virtual resources. 3. Security and Protection (develop an abstract view for it).
Overview of the course: Evolution of OSs, notions of performance. Process Management.

Lecture 5 (16 Jan 2014):
Overview of the course (Contd): Advanced topics---process synchronization and deadlocks, file system efficiency and reliability, structure of an OS.
Fundamentals of computer architecture. User accessible registers and the PSW. Privileged mode of the CPU.

Lecture 6 (20 Jan 2014):
State of the CPU.
The interrupt action. Interrupt servicing. System calls.
Complete view of OS operation.

Lecture 7 (21 Jan 2014):
Quiz 1.
Context save and Scheduling. Masking of interrupts. I/O organization. Operation of the DMA.

Lecture 8 (23 Jan 2014):
System calls. The "SI n" instruction.
Classes of operating systems---Batching, Multiprogramming, Time sharing, real time, embedded and distributed systems.
System performance, user service, and protection and security in these operating systems.
Notions of system performance and user service.

Lecture 9 (27 Jan 2014):
Multiprogramming OS---architectural support, preemptive priorities, program switching, assignment of program priorities.
Time Sharing and Real time systems.

Lecture 10 (28 Jan 2014):
How creation of multiple processes could help reduce response time of an application.
Real time and embedded operating systems.
Introduction to processes.

Lecture 11 (30 Jan 2014):
Processes---parallelism and concurrency.
Information in the PCB. Process state transitions.

Lecture 12 (3 Feb 2014):
Recap: Concurrency and parallelism, revisiting timing charts.
Event management actions for various events. Swapping states.

Lecture 13 (4 Feb 2014):
Swapping states (contd.), Signal handling.
Threads---Kernel-level and User-level threads.

Lecture 14 (6 February 2014):
Thread models---kernel-level and user-level threads. Overheads implications. concurrency and parallelism.
Introduction to scheduling---schematic showing Long-term, Medium-term and Short-term scheduling.
Scheduling terms. Non-preemptive scheduling.

Lecture 15 (10 February 2014):
Non-preemptive scheduling.
Pre-emptive scheduling.

Lecture 16 (11 February 2014):
Multi-level scheduling. Fair scheduling. Quiz 3.

Lecture 17 (11 February 2014):
Real-time scheduling.

Lecture 18 (24 February 2014):
Bloom's levels of learning and how we use them in the course.
Interacting processes and interaction modes. Race conditions and Critical Sections.

Lecture 19 (25 February 2014):
Synchronization---looping and blocking. Need for invidisible operations.
Semaphores---Implementing critical sections and signaling using semaphores.

Lecture 20 (27 February 2014):
Classic process synchronization problems: Producer--Consumer with bounded buffers
Monitors.

Lecture 21 (3 March 2014):
Classic process synchronization problems (contd.): Readers--Writers. Dining Philosophers.
Algorithmic approach to process synchronization: Peterson algorithm, Bakery agorithm.

Lecture 22 (4 March 2014):
Model of memory allocation to a process.
Issues in contiguous memory allocation---memory reuse, fragmentation, merging. Relocation issues.
Use of first-fit, etc.; Buddy system and Boundary tags.

Lecture 23 (6 March 2014):
External and internal fragmentation.
Virtual memory using paging---how it avoids fragmentation. Basic schematic.

Lecture 24 (10 March 2014):
Basic demand paging schematic---MMU, TLB, Page Table, Swap space, effective memory access time, page-in and page-out operations.
Page fault characteristic and desirable operating zone.

Lecture 25 (11 March 2014):
Superpages.

Lecture 26 (13 March 2014):
Memory allocation and page replacement---Some important issues in page replacement.

Lecture 27 (18 March 2014):
Working sets (contd.)
Page table organizations.

Lecture 28 (20 March 2014):
Shared pages, memory mapped files.

Lecture 29 (24 March 2014):
Copy on write
Program linking and program forms. Sharing of programs and data.

Lecture 30 (25 March 2014):
Quiz5.
Introduction to file system layers---the file system and IOCS layers.
File system, Access methods.

Lecture 31 (27 March 2014):
Disk space allocation, indexed allocation and file map table.
Interface between FS and IOCS layers---the file control block (FCB).

Lecture 32 (1 April 2014):
File system meta-data. Concurrent sharing of files.
File system reliability---recovery and fault tolerance. Stable storage and atomic operations.

Lecture 33 (3 April 2014):