CS 347M : Operating Systems Minor

Course runs in Slot 5: Wed and Friday 9.30 -- 10.50 hrs. Place: SIC-301 (Kanwal Rekhi Building)

Class Hours: Wed and Friday after the class at 10.50 hrs. outside SIC-301.
(Additionally, students can send me mail to fix a meeting for clearing doubts.)


Teaching Assistants: Chinmay Kulkarni, Priyanka Bamne, Sanjana Vohra, Neha Garg, Piyush Hurpade, Mihir Vegad
(emails: {chinkul, priya, sanjanav, nehagarg, piyushh, mihirvegad}@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.



Credit distribution:
Quizzes (10%), Home Assignment (10-15%), Mid-sem (25-30%), End-sem (50%).
(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.


Log of lectures:

Lecture 1 (6 Jan 2016):
Introduction to the course---motivation, honesty policy, tips for learning effectiveness.
Feedback on architecture prerequisites. Feedback form
Introduction to critical thinking skills. Slides (This topic will not be done explicitly, students to study from slides.)

Lecture 2 (8 Jan 2016):
Use of architectural features in program management.
CPU---Registers and PSW, Kernel mode of CPU, state of CPU, Memory protection.
OS---Abstract view of OS, the memory map, some preliminaries of switching between programs.

Lecture 3 (13 Jan 2016):
Use of architectural features in program management (Contd.) Program state. Interrupt-driven operation of OS.

Lecture 4 (15 Jan 2016):
Interrupts and interrupt processing.

Lecture 5 (20 Jan 2016):
System calls. Masking of interrupts.

Lecture 6 (22 Jan 2016):
Computing environments. Performance

Lecture 7 (27 Jan 2016):
OS actions during booting---forming resource table, loading user interface for a user, forming initial PSW for a program
Timing diagram to show servicing of programs in the OS.

Lecture 8 (29 Jan 2016):
Functionalities in the kernel and non-kernel parts of OS.
Resouce allocation---partitioned and pool-based allocation. Virtual resources

Lecture 9 (3 Feb 2016):
Classes of operating systems---batch processing, multiprogramming, and time-sharing operating systems.
Batching in Linux

Lecture 10 (5 Feb 2016):
Priorities in multiprogramming OS.
Program models. Concurrent programs. Notion of process.

Lecture 11 (10 Feb 2016):
Processes---definition, child processes.
Signals and signal handling.

Lecture 12 (12 Feb 2016):
Vee diagram for systematic thinking.
Benefits of multi-level scheduling. Linux processes, Signals, and Shared memory.

Lecture 13 (17 Feb 2016):
Process states and state transitions.

Lecture 14 (19 Feb 2016):
Threads.

Lecture 15 (2 March 2016):
Introduction to process synchronization---interacting processes, race conditions, data access synchronization. Indivisible instructions. Critical Sections.

Lecture 16 (4 March 2016):
Properties of critical section implementation. Problem of busy waits in synchronization. Semaphores. Control synchronization.

Lecture 17 (9 March 2016):
Classic process synchronization problems. Producers--consumers and readers--writers problems.

Lecture 18 (11 March 2016):
Synchronization facilities in the pthreads package.

Lecture 19 (16 March 2016):
Condition variables.
Algorithmic implementation of critical sections. Dekker's algorithm. Lamport's Bakery algorithm.

Lecture 20 (18 March 2016):
Deadlocks. Definition and conditions for deadlock. Resource status modeling. Deadlock detection.

Lecture 21 (23 March 2016):
Deadlock prevention.

Lecture 22 (30 March 2016):
Deadlock detection algorithm. Banker's algorithm for deadlock avoidance.

Lecture 23 (1 April 2016):
Introduction to file systems---meta-data and file data.
Directory hierarchy and file naming freedom, Information in a directory entry, Bytestream and record-oriented files, Sequential and Direct access file organizations.

Lecture 24 (6 April 2016):
Overview of file system and PIOCS meta-data.
Disk space allocation and the File Map Table (FMT). Physical device table (PDT) constructed at boot time. Logical device table (LDT) per process at process creation.
Caching and buffering of data in RAM.

Actions at file Open---the File Control Block (FCB).
Overview of read/write operations on a file.

Lecture 25 (13 April 2016):
Review of the arrangement of data on disk and in kernel part of RAM during file processing activities of a process. Operations at file open, file read/write operations, and at file close.
(Each of the operations in a process is implemented through a system call with appropriate parameters.)
Use of the file system metadata and of the disk cache.

Device level I/O operations. Disk scheduling. Buffering of data.

Lecture 26 (15 April 2016):
Optimizing file system throughput and the role of disk cache.
Speeding up file processing activities in a process and the role of Buffering and blocking of file data.