Objectives: The aim of this course is to acquaint students with the principles and design and implementation issues of uni-processor operating systems so that they can understand and argue about such issues in existing operating systems and consider them alongside their own possible innovations in the design and implementation of new operating systems. Syllabus: Introduction to Operating Systems, History, Concepts, Structure and Characteristics Hardware Concepts Related to Operating Systems, e.g. CPU States and Protection Rings, Memory Hierarchies, DMA and I/O Channels Processes, Process Operations and States, Process Control Block (PCB), Context Switching, Process Hierarchies Inter-Process Communication (IPC), UNIX Mechanisms for IPC, (Signals, Pipes, Shared Memory, Mapped Memory and Sockets) Thread Concepts, Implementation Alternatives, Applications of Threads Process Scheduling, Scheduling Algorithms (FCFS, SJF, RR, Priority), Real-Time Scheduling, Multi-Processor Scheduling Process Concurrency Issues, Mutual Exclusion, Critical Sections, Locks, Semaphores and Monitors, Classic Problems (Producer and Consumer, Dining Philosophers) Deadlock Concepts, Deadlock Prevention and Avoidance, Deadlock Detection Memory Management Strategies, Memory Partitioning (Fixed, Dynamic), Memory Allocation Strategies, Fragmentation, Swapping Virtual Memory Concepts, Segmentation and Paging, Address Mapping, Demand Paging, Trashing, Working Set Model File and Directory Management, Blocking and Buffering, File Descriptors, Blocks and Fragments, iNodes, Unix EX3 File System Structure Secondary Storage Management, Disk Scheduling, Swap Space Management Security and Protection, Security Threats, Attacks and Assets, Intruders, Malicious Software, Authentication, Access Rights, Access Matrix, Protection Policies and Mechanisms Operating Systems Design Problems, Interface design, Implementation, Performance, and Trend References: Dhananjay M. Dhamdhere, Operating System, A concept based approach, First Edition, McGraw Hill Andrew S. Tanenbaum and Albert S. Woodhull, Operating Systems Design and Implementation, Third Edition, Prentice Hall, 2006. Abraham Silberschatz, Peter B. Galvin and Greg Gagne, Operating System Concepts, Eighth Edition, John-Wiley, 2011. Jean Bacon, Tim Harris, Operating Systems: Concurrent and Distributed Software Design, Addison Wesley, 2003. Thomas W. Doeppner, Operating Systems in Depth, John-Wiley, 2011. Ramez Elmasri, A. Gil. Carrick, David Levine, Operating Systems: A Spiral Approach, Mc Graw Hill, 2010. 7. William Stallings, Operating Systems: Internals and Design Principles, Seventh Edition, Prentice Hall, 2011.