The reading, quizzes, lectures, exams, and labs for this course are all designed around a set of learning objectives. These learning objectives can be divided into a few basic categories:
Lect/Lab | Subject | Concept | Issue | Approach | Skill |
---|---|---|---|---|---|
1 | Introduction to Operating Systems |
why study OS what is OS mechanism/policy separation interface vs implementation interface contracts modularity/information hiding powerful abstractions appropriate abstraction indirection/deferred binding cohesion opaque encapsulation OS types/history |
why functionality implmented in OS OS goals |
layered/hierarchical structure dynamic equilibrium |
|
2 | Resources, Services, and Interfaces |
basic OS services higher level OS services layers of services private resource APIs and ABIs service protocols upwards compatability objects and operations abstracted resources serially reusable resources partitioned resource sharable resource |
subroutines vs system calls versioned interfaces |
||
P0 | LAB 0 - Linux/C programing | ||||
3 | Processes, Execution, and State |
programs and processes process address space stacks/linkage conventions process state (elements of) process resources user-mode, supervisor-mode traps (exceptions) interrupts (async events) traps (syscalls) limited direct execution |
fork vs exec syscalls vs procedure calls |
static and dynamic libraries process implementation copy-on-write context save/restore static libraries shared libraries dynamically loadable libraries |
process operations signals (exceptions) |
4 | Scheduling Algorithms, Mechanisms and Merformance |
execution state model metrics: completion time metrics: throughput metrics: response time service level agreement process state (model) non-preemptive scheduling time sharing time slice performance under load |
scheduling goals starvation convoy cost of context switch optimal time slice end-to-end performance graceful degradation |
First In First Out Shortest Job First priority scheduling real time preemptive scheduling round-robin multi-level queues dynamic equilibrium mechanism/policy separation |
|
P1A | LAB 1A - Processes, terminal I/O and pipes |
file APIs |
|||
5 | Memory Management, Allocation and Relocation |
physical address space virtual address space text segment data segment stack segment shared library segments protected memory sharing |
memory management goals internal fragmentation external fragmentation pool rebalancing common errors |
address space layout stack vs heap allocation variable size allocation malloc vs sbrk memory allocation life cycle coalescing free list design first fit best fit worst fit next fit pool/slab allocation diagnostic free lists garbage collection |
|
6 | Virtual Memory and Paging |
swap space paged address space replacement Temporal Locality Spatial Locality Least Recently Used working set clean/dirty pages |
relocation problem thrashing paging and segmentation |
base/limit relocation segment addressing memory compaction swapping paging MMU demand paging page fault process Belady's Optimal Algorigthm LRU clock algorithm working set clock algorithm page stealing copy on write proactive page laundering scatter/gather |
|
P1B | LAB 1B - Encrypted Communication | ||||
7 | Threads, Races, and Critical Sections |
thread thread state IPC purpose non-deterministic execution race condition indeterminate results critical section |
thread motivations IPC goals |
thread stacks user mode implementations stream IPC message IPC shared memory IPC mutual exclusion atomicity spinning |
|
8 | Mutual Exclusion and Asynchronous Completions |
parallelism scenarios locking & event completion |
correct order locking goals correct mutual exclusion who to wake up sleep/wakeup races spurrious wakeup |
synchronous requests asynchronous completion types of locks interrupt disables spin locks asynchronous events waiting lists |
|
P4A | Edison Bring-up | ||||
9 | Higher Level Synchronization and Communication |
Semaphores |
bounded buffer problem producer/consumer problem costs of contention granularity convoy |
binary semaphores using semaphores condition variables using condition variables semaphore implementation CV implementation contention reduction file level locking advisory locking |
|
P2A | LAB 2A - Races and Serialization |
thread API recognize critical sections pthread_mutex operations pthread_cond operations protect critical section |
|||
10 | Deadlocks, Prevention, and Avoidance |
Dining Philosophers problem necessary conditions livelock |
reasonable spinning deadlock common errors |
compare and swap monitors java synchronization where to serialize avoidance reservations prevention detection and recovery |
|
11 | Performance |
performance metrics |
goals and challenges performance principles typical causes of performance problems common measurement errors |
load generation traces/logs internal instrumentation end-to-end measurement |
load characterization analysis techniques presentation techniques |
P2B | LAB 2B - Contention |
malloc APIs profiling |
|||
12 | Device I/O and Drivers |
I/O bus Device Controller disk geometry |
importance of disks disk performance random vs sequential I/O transfer size |
polled I/O DMA completion interrupts initiating I/O operations write-back cache write-through cache chain scheduling buffered I/O scatter/gather intelligent I/O devices read/write striping write mirroring parity/erasure coding asynchronous parallel I/O polling for asynchronous completions non-blocking I/O asynchronous event notifications |
|
13 | File Semantics and Representation |
file semantics file types and attributes data base semantics object semantics key-value semantics file namespace file name conventions copies vs links symbolic vs hard links storage volume disk partitioning |
read after write consistancy goals of file representation goals of free space representation goals of namespace representation |
BSD file system organization FAT file system organization indexed data extents (I-nodes) linked data extents (FAT) linked free lists (Unix V5) contiguous allocation bit-map free lists (BSD) FAT free list BSD directory entries FAT file descriptors the mount operation file access layers of abstratction dynamically loadable file systems user mode file systems |
|
P4B | LAB 4B - Embedded System Sensors | ||||
14 | File Systems Performance and Robustness |
disks and file system design block size & internal fragmentation causes of file system damage |
read cache write-through general/special purpose caches how to beat LRU delayed writes write-back cache detection and repair journaling and recovery meta-data-journaling copy-on-write log structured file systems checksums and scrubbing defrragmentation |
||
15 | Security, Protection, Authentication, Authorization |
confidentiality integrity controlled sharing object, agent, principal mediated access revocability trusted computing platform principles of secure design authentication authorization access control lists Linux file protection (ACLS) capabilities unforgeability Linux file descriptors (capabilties) principle of least privilege Role Based Access Control Trojan horses cryptographic hash |
challenges key security |
cryptographic hashes challenge/response authentication Linux principals Linux authentication Linux setuid at rest encryption symmetric encryption cryptographic privacy |
|
P3A | LAB 3A - File System Interpretation | ||||
16 | Distributed systems: Goals, Challenges and approaches |
goals RPC RPC stub RPC skeleton RESTful interface principles Marshal/unmarshal unforgeable capabilities |
challenges Deutsch's 7 Falacies RPC interoperability |
RPC tool chain XDR asymmetric encryption digital signatures secure sessions |
|
17 | Remote Data, Synchronization, Security |
local vs cloud client/server model distributed file systems |
remote file system goals |
distributed locks leases distributed transactions remote file transfer remote file access peer-to-peer security distributed authentication/authorization |
|
P3B | LAB 3B - File System Analysis | ||||
18 | Remote Data Performance and Robustness |
immutability reliability availability stateless server protocols idempotent operations ACID Consistency Read-After-Write Consistency Close-Open Consistency |
man in the middle attacks graceful degradation write latency cache consistency |
reliable communication distributed consensus replication and recovery striping direct client-server communication scalable distributed systems client-side caching |
|
19 | MP and Distributed Systems |
classes of distributed systems Single System Image Non-Uniform Memory Architecture loosely coupled tightly copuled unit of deployment unit of failure/replacement cluster membership Geographic Disaster Recovery availability zones Software Defined Networking Software Defined Storage Eventual Consistency BASE semantics Data plane Control plane immutable objects |
APIs -> protocols |
Symmetric Multi-Processor Horizontally Scaled Clustered heart beating Active/Active Active/Standby partitioned responsibility WAN-scale consistency models |
|
P4C | LAB 4C - IOT Security |
Last updated: 5/8/2017