Operating Systems
The Operating Systems course is a culmination of most software coursework, and some hardware coursework, that precedes it. Students utilize their knowledge of hardware and software to develop and investigate the connection between hardware and software in practice. The course utilizes C/C++ and assembly languages.
Review
Basic Von Neumann Architecture – Reiteration
Three-State and Superscalar Pipelines – Reiteration
Operating System Fundamentals
Boot Process – i386, x64, ARM
OS Model Evolution (Monitor, Batch, Shared)
Uniprogrammed vs Multiprogrammed Systems
Kernel & OS Layering (including Microkernel vs Macrokernel)
Procedure vs System Calls
Hardware Interrupts & Traps
Program Segmentation (including Stack)
Processes and Threads (including segmentation differences)
Kernel Threads vs Userspace Threads (Including Multicore)
CPU Scheduling & Signals
Containers / Virtualization
Communication & Scheduling
Race Conditions & Data Corruption / Loss
Critical Sections / Regions
Mutexes & Semaphores
Process / Thread Synchronization Strategies
Atomic Locking at Instruction Level
Dining Philosophers Problem (Visualization)
Producer-Consumer Problem & Solutions
Readers-Writers Problem & Solutions
Copy-on-Write
Admissions, Memory, and CPU Schedulers
Batch Scheduling
Preemptive Scheduling
Real-time Scheduling
Memory Management
Physical and Logical Addressing
Memory Allocation & Tracking
Fixed and Dynamic Partitioning
Fragmentation & Compaction
Memory Overlays
Virtual Memory: Paging, Caching, and Coherency
Memory Management Units
Page Replacement Algorithms
Paging with Segmentation
Shared Objects (e.g., Libraries)
File Systems
File Control Block
Directory Implementations
Contiguous & Linked List Allocation
Chained Table Allocation (FAT)
Indexed Allocation: Single & Multilevel
Chained Indexed Allocation & Inodes
File Block Size, Caching, and Consistency
Backups, RAID, and Journaling
Device I/O
Programmed IO Models (Memory & Data Busses)
Polling Drivers
Interrupt Drivers
DMA Drivers
Buffering & Driver Layers
Clocking Systems
Human Interface Devices: Keyboards, Mice, and Displays
Networking
The Internet Protocol (as compared to OSI Model)
IP Address Systems
Transmission Control Protocol (TCP)
User Datagram Protocol (UDP)
Networking
Causes of Deadlock
Deadlock Recovery Strategies
Deadlock Avoidance: Safe States
Preventing Deadlock Programmatically
Communication Deadlock, Livelock, and Starvation