Course Objectives
To provide the basics in designing of an operating system.

1. Principles of operating systems(5 hours)
1.1. Evolution of operating systems
1.1.1. User driven
1.1.2. Operator driven
1.1.3. Simple batch system
1.1.4. Off-line batch system
1.1.5. Directly-coupled off-line system
1.1.6. Multi-programmed spooling system
1.1.7. On-line timesharing system
1.1.8. Multiprocessor systems
1.1.9. Multi-computer/Distributed systems

2. Program construction utilities(6 hours)
2.1. Assembler
2.2. Archiver
2.3. Link editor
2.4. Relocating loader

3. Concurrent processes(5 hours)
3.1. Interleaving
3.2. Non-determinism
3.3. Process interaction sharing
3.4. Synchronization
3.5. Communication
3.6. Locks
3.7. Semaphores
3.8. Monitors

4. The system nucleus(kernel)(6 hours)
4.1. Context switching
4.2. First level interrupt handling
4.3. Kernel implementation of processes
4.4. Kernel implementation of semaphores

5. Scheduling(5 hours)
5.1. Priority pre-emption
5.2. Run to completion
5.3. Time-sliced
5.4. Multi-level queues

6. Input/Output(6 hours)
6.1. Polled input/output
6.2. Interrupt driven input/output
6.3. Device driver structure

7. Memory management(6 hours)
7.1. Single contiguous store allocation and overlays
7.2. Fixed partition store allocation
7.3. Dynamic partition store allocation and fragmentation/compaction
7.4. Virtual addressing
7.5. Memory management policy

8. Case study(6 hours)
8.1. Unix
8.2. Windows NT

Laboratories:
6 Laboratories based on standard operating system

References:
1. Mark Donovan: System programming

Related articles suggested by Google