| Lecture | 
          Topics | 
          Link to the Video | 
        
| Introduction to Operating Systems [Chapter 1]  | 
          1. Introduction to operating systems 2. Basic functions 3. Links to advanced study  | 
          |
| Operating Systems Services [Chapter 2]  | 
          1. OS services 2. System calls 3. Linking and loading  | 
          |
| Processes [Chapter 3]  | 
          1. Process creation and termination 2. Ready queue and wait queue 3. fork() and exec()  | 
          |
| 1. Message queues 2. Pipes, RPC, and sockets  | 
          ||
| Threads [Chapter 4]  | 
          1. Notion of threads 2. Creation and management 3. Java, PThreads, OpenMP, Intel TBB 4. Signals 5. Kernel threads  | 
          |
| Scheduling [Chapter 5, Part I]  | 
          1. Scheduling 2. Shortest job first, FCS 3. Multicore systems 4. Real time scheduling  | 
          |
| [Chapter 5, Part II] | 
          1. Linux, Windows and Solaris schedulers 2. Algorithmic considerations 3. Proof that SJF is optimal  | 
          |
| Synchronization [Chapter 6]  | 
          1. Locks: Peterson's Algorithm 2. Locks using atomic operations 3. Semaphores 4. Monitors and conditional variables  | 
          |
| Examples of Synchronization [Chapter 7]  | 
          1. Bounded buffer problem 2. Readers-writers lock 3. Dining philosophers problem 4. Examples of Windows, Linux, and Java  | 
          |
| Deadlocks [Chapter 8]  | 
          1. Four necessary conditions for a deadlock 2. Hold and wait edges 3. Deadlock prevention and avoidance 4. The Banker's algorithm 5. Deadlock recovery  | 
          |
| Main memory [Chapter 9, Part I]  | 
          1. Page tables 2. TLBs 3. Inverted page tables and hash-based page tables  | 
          |
| Main memory [Chapter 9, Part II]  | 
          1. Sun Sparc and Intel architectures 2. Page swapping  | 
          |
| Virtual memory [Chapter 10, Part I]  | 
          
             1. Demand paging 
            2. Copy on write 
            3. Page replacement algorithms | 
          |
| Virtual memory [Chapter 10, Part II]  | 
           1. Thrashing  2. Buddy and slab allocators 3. Page table and TLB optimizations  | 
          |
| Storage Structures [Chapter 11]  | 
           1. Design of hard disks  2. Flash drives 3. The boot process 4. RAID systems  | 
          |
| I/O Systems [Chapter 12]  | 
           1. Memory-mapped and I/O-mapped addressing  2. DMA 3. Polling and interrupts 4. Kernel's I/O subsystem  | 
          |
| File-System Interface [Chapter 13]  | 
          
             1. Concept of files 
            2. Sequential and random access 
            3. Directory structure and mount points | 
          |
| File-System Implementation [Chapter 14]  | 
           1. File System Layers  2. FAT tables and inodes 3. Free space management 4. Consistency and recovery  | 
          |
| File-System Internals [Chapter 15]  | 
           1. Mounting local and distributed file
            systems  2. Virtual file system (VFS) 3. Network file system (NFS)  | 
          |
| Security [Chapter 16, Part I]  | 
          1. Buffer overflow attacks  2. Program threats 3. Symmetric and asymmetric encryption  | 
          |
| Security [Chapter 16, Part II]  | 
          1. Digital signatures and authentication  2. Network security 3. Example: Windows 10  | 
          |
| Protection [Chapter 17]  | 
          1. Access matrix 2. Access control lists and capability lists 3. Lock and key based security 4. Language based protection  | 
          |
| Virtualization
           [Chapter 18, Part I]  | 
           1. Types of virtualization  2. CPU virtualization 3. Memory virtualization  | 
          |
| Virtualization
           [Chapter 18, Part II]  | 
          1. Application containment 2. Details and corner cases  | 
          |
| Networks and Distributed Systems [Chapter 19, Part I]  | 
          1. The 7-layer OSI model 2. IP, TCP, and UDP 3. Introduction to distributed systems  | 
          |
| Networks and Distributed Systems [Chapter 19, Part II]  | 
          1. Distributed file systems 2. File cache consistency  | 
          |
|  Linux Kernel  [Chapter 20, Part I]  | 
          1. Kernel modules  2. Process management 3. Scheduling  | 
          |
| Linux Kernel  [Chapter 20, Part II]  | 
          1. Kernel memory management  2. Linux file systems 3. IPC 4. Networking and security  | 
          |
| Windows 10  [Chapter 21, Part I]  | 
           1. Major subsystems  2. Scheduling 3. Virtual memory management 4. I/O manager 5. Registry  | 
          |
| Windows 10  [Chapter 21, Part II]  | 
           1. Windows 10 file systems  2. The networking stack 3. Scheduling priorities and process management 4. IPC in Windows 10  |