* Network Programming - client/server - ports - sockets - file descriptors - API: socket, bind, connect, listen, connect/accept, close * Concurrent Servers - Process-based - Event-based - Thread-based - Pros and cons of each * Threads - Difference between process and thread - Pthread interface/library - create, join, self, cancel, exit * Data Sharing - Global vs local vs local static - What does it mean to have shared data * Synchronization - Critical section - Ordering of thread execution (topo. sort of threads) - Unsafe regions of thread/process graphs - Mutual exclusion - Mutexes * lock/release - Semaphores * acquire/release * implementation and understanding of P() and V() - Producer/Consumer problem - Readers/Writers problem - Thread Safety * Four classes of unsafe functions * Races * Deadlock (define, as process graph, deterministic?) * Livelock * Scheduling - Process State Diagram - Goals: * minimize response, maximize throughput, fairness - Metrics: * (avg) waiting time, (avg) completion time - Algorithms: - FCFS - RR -- time quantum - SRTF - HPF * Priority inversion (pre-emptive) - Multi-level feedback - Lottery * Docker / Containers - Motivation - Terminology: why is it called a container? - Composition of a container - What's included? - What's NOT included? - How are changes tracked? * Files and Directories - Abstraction of hardware --> OS - 5 User Requirements on Data - Files - Operations: create, delete, open/close, read/write, seek - Access - Directories - Methods * Sequential vs. Direct - Naming strategies * Single-level * Two-level * Multi-level - Soft vs. Hard links - Directories - Operations: search, create, delete (rm), list (ls), rename (mv) - Protections and Permissions - Access Lists/Groups vs. Access Control Bits * Physical Disks - Physical Block * Surface Tracks, Sectors (HD) * Flash Translation Layer -> Block, Page (SSD) - Logical Blocks - Scheduling: FCFS, SSTF, SCAN - RAID (define) * File Organization - Mapping of files (and their blocks) to logical/physical blocks - File Descriptor - Implementations - Contiguous Allocation - Linked Files - Indexed Files - Multi-level Indexed Files - Free list management - Bitmap - Free list * Skills Test (topics from first exam) - virtual memory and page faults