COP 4600

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