CS 347 : Operating Systems Principles

Course Time Table:

Classes in Slot 2: Monday 9.30-10.25, Tuesday 10.35-11.30, Thursday 11.35-12.30 ( Place: LCC-12 (First Floor, new classroom complex) )
Office Hours: Wednesday 1.00-2.00 pm, Thursday 9.30-10.25 am. ( Place: Room F-3 (First Floor, CSE building) )

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

Teaching Assistants: Akanksha (akankshapatel@cse), Darshan (darshank@cse), Pararth (pararth@cse), Rahul (varshneya@cse), Senthilkumaran(kumaran@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 (7 Jan 2013):
Introduction to the course.
Introduction to critical thinking skills.
Slides

Lecture 2 (8 Jan 2013):
Power of abstraction as a focusing tool.
Goal of an OS---effective utilization of a computer. Features of a computing environment.
Slides

Lecture 3 (10 Jan 2013):
Overhead of OS operation.
Fundamental tasks of an OS: 1. Program management and scheduling.
2. Resource management policies---partitioning of resources and pool-based allocation. Virtual resources.
3. Security and Protection.

Lecture 4 (14 Jan 2013):
Fundamental OS tasks (contd.): Security and Protection.
Fundamentals of OS operation---events and interrupts.

Lecture 5 (15 Jan 2013):
Overview of the course: Fundamental topics---how the OS controls operation of the computer, and how programs are managed, memory allocation and file systems. 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.

Lecture 6 (17 Jan 2013):
Privileged mode of the CPU. State of the CPU.
Memory hierarchy. Performance issues in memory hierarchies.
I/O organization. Operation of the DMA.
The interrupt action. Interrupt processing by OS.

Lecture 7 (21 January 2013):
Masking of interrupts. Interrupt servicing. System calls.
Complete view of OS operation.

Lecture 8 (22 January 2013):
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 9 (24 January 2013):
Multiprogramming operating systems---program mix and program priorities.

Lecture 10 (28 January 2013):
Program priorities in Multiprogramming---the timing chart. Throughput and the degree of multiprogramming.
Time sharing systems. Real time systems.

Lecture 11 (29 January 2013):
Introduction to processes.
The process concept. Process states and state transitions.

Lecture 12 (31 January 2013):
Process states (Contd.) Swapping states. Process management: Process control block and process environment.
Switching between processes.

Lecture 13 (4 February 2013):
Process states and event management.
Process interactions---data sharing, control synchronization. Introduction to threads---concept and benefits.

Lecture 14 (5 February 2013):
Thread modelsi---kernel-level and user-level threads. Overheads implications. concurrency and parallelism.
Introduction to process synchronization.

Lecture 15 (7 February 2013):
Introduction to Process Synchronization---Critical sections, control synchronization, indivisible operations.
Classic problems in process synchronization.

Lectures 16, 17 (11, 12 February 2013):
Producers and Consumers---correctness conditions and solution outlines.
Semaphores and Monitors.

Lecture 18 (14 February 2013):
Software implementations of critical sections---Peterson's algorithm, Bakery algorithm.

Lecture 19 (25 February 2013):
Scheduling preliminaries---concepts and terminology.
Non-preemptive Scheduling Policies. Pre-emptive Scheduling policies.

Lecture 20 (26 February 2013):
Pre-emptive Scheduling policies.
Multi-level and Fair-share scheduling policies.

Lecture 21 (28 February 2013):
Real time scheduling---determining deadlines. Feasible schedules. Rate Monotonic Scheduling.
Basics of memory allocation---static and dynamic allocation. Model of memory allocation to a process. Fragmentation and reuse of

Lecture 22 (4 March 2013):
Model of memory allocation to a process. Fragmentation and reuse of memory.
Overview of virtual memory organization---non-contiguous memory allocation, address translation and page faults.
Quiz 3.

Lecture 23 (5 March 2013):
Virtual memory using paging: Demand loading of pages. Address translation. The translation look-aside buffer (TLB).

Lecture 24 (7 March 2013):
Superpages. I/O operations in memory.
Practical page table organizations---the inverted page table.

Lecture 25 (12 March 2013):
Practical page table organizations---the inverted page table (contd.) and multi-level page table.
Page replacement policies.

Lecture 26 (14 March 2013):
Determining memory allocation for a process. The working set.
Program sharing in virtual memory systems. Copy-on-write. Memory-mapped files.

Lecture 27 (18 March 2013):
Linking and relocation of programs. Object modules and binary programs.
Self-relocating programs.
Basics of memory allocation---static and dynamic allocation. Memory allocation as a binding.

Lecture 28 (19 March 2013):
Reuse of memory---free list, best-fit and first-fit allocation, Merging of free areas.
Buddy system allocator. Powers of 2 memory allocators.

Lecture 29 (21 March 2013):
Quiz 4.
Sharing of pages in virtual memory.

Lecture 30 (25 March 2013):
Logical organization of a file system---the file system and IOCS.

Lecture 31 (26 March 2013):
File organizations. Disk space allocation.

Lecture 32 (28 March 2013):
Indexed allocation of disk space.
Interface between the file system and IOCS. File sharing semantics.

Lecture 33 (1 April 2013):
File system reliability---recovery and fault tolerance.
Implementation of atomic actions. Virtual File System.

Lecture 34 (2 April 2013):
The IOCS---Access methods and Physical IOCS.
Operation of the Physical IOCS. Device drivers. Disk scheduling.
Buffering of records.