Chapter 1 - Introduction - Basic OS functions - Multiprogramming - Timesharing - Types of modern OSes - Monolithic vs. Microkernel - Storage Pyramid - Basic I/O processing - Traps and Interrupts - Virtual Machine Monitors Chapter 2 - Processes and Threads - What is a process - Process states - What is a thread Kernel-level vs. User-level - PCB (PTE) - Scheduling algorithms Goals FCFS, SJF, R-R, Priority, Lottery - IPC - Race conditions - def. and cause - Synchronization primitives semaphores - binary and counting mutex locks condition variables message passing - Deadlock vs. Starvation - Classic problems Chapter 3 - Deadlocks - Why do deadlocks happen? - Necessary conditions for a deadlock - Resource allocation graphs - Safe and unsafe states Deadlock detection algorithm Banker's algorithm - Recovery preemption, rollback, killing processes Chapter 4 - Memory Management - Memory Hierarchy - Partitions base and limit registers - Swapping - Tracking memory usage - Allocating and freeing memory - Virtual Memory virtual/logical vs. real/physical MMU Page tables PTE Two-level page tables Inverted page tables TLB - Page replacement algorithms - Memory protection - Locking/pinning pages Chapter 5 - Input/Output - I/O hardware Devices Controllers Memory-mapped I/O Direct Memory Access (DMA) - I/O software Programmed I/O Interrupt-driven I/O DMA Software layers - I/O devices Disk drive operation Disk driver I/O scheduling Other devices clocks, terminals, graphics display, keyboard, tape? Chapter 6 - File Systems - Files attributes operations - Directories and iNodes hierarchical structure operations - Space allocation and tracking FATs Extent Lists - Types of file systems Hard Disk (generic Unix, DOS, NTFS) CD-ROM (write-once - sort of) Chapter 9 - Security - Cryptography Secret key cryptography Public key cryptography Digital Signatures One-way functions - User Authentication - Viruses - Access Control Lists (ACLs) - Capabilities