Lecture | Concept | Issue | Approach | Skill |
---|---|---|---|---|
1 |
what is OS mechanism/policy separation interface vs implementation interface contracts modularity and information hiding abstraction (convenience, simplification) indirection and deferred binding OS types/history |
why functionality implmented in OS OS goals |
layered and hierarchical structure dynamic equilibrium |
|
2 |
basic OS services higher level OS services layers of services private, reusable, sharable APIs and ABIs service protocols objects and operations abstracted resources and operations upwards compatability |
static and dynamic libraries structure of the Operating System subroutines vs system calls versioned interfaces |
||
3 |
programs and processes process state (elements of) process resources user-mode, supervisor-mode traps (exception handling) interrupts for asynchronous events traps for system calls limited direct execution |
fork vs exec syscalls vs procedure calls |
process implementation context save and restore |
process operations signals (exception handling) |
4 |
metrics: completion time metrics: throughput metrics: response time service level agreement process state (model) non-preemptive scheduling time sharing time slice |
scheduling goals starvation convoy cost of context switch optimal time slice CPU scheduling != performance |
First In First Out Shortest Job First priority scheduling real time preemptive scheduling round-robin multi-level queue scheduling dynamic equilibrium mechanism/policy separation |
|
5 |
physical vs virtual address space text segment data segment stack segment shared library segments protected memory sharing |
memory management goals relocation problem internal fragmentation splitting and external fragmentation pool rebalancing common memory allocation errors |
address space layout base/limit relocation segment addressing 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 garbage collection |
malloc APIs |
6 |
swap space paged address space replacement Temporal Locality Spatial Locality Least Recently Used working set clean/dirty pages |
thrashing |
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 |
|
7 |
thread thread state IPC purpose non-deterministic execution race condition indeterminate results critical section parallelism scenarios |
thread motivations IPC goals |
thread stacks user mode implementations stream IPC message IPC shared memory IPC mutual exclusion atomic updates synchronous requests asynchronous completion spinning |
thread API recognize critical sections pthread_mutex operations pthread_cond operations |
8 |
locking and event completion |
locking goals correct mutual exclusion when is spinning reasonable who to wake up sleep/wakeup races |
types of locks interrupt disables spin locks compare and swap asynchronous events waiting lists |
protect critical section |
9 |
Semaphores |
bounded buffer problem producer/consumer problem the costs of contention granularity convoy |
binary semaphores bounded buffer problem w/semaphores condition variables producer/consumer w/condition variables implementing semaphores and CVs contention reduction file level locking advisory locking |
|
10 |
Dining Philosophers problem necessary conditions livelock |
deadlock common synchronization errors |
avoidance reservations prevention detection and recovery monitors java synchronization where to serialize |
|
11 |
performance metrics |
goals and challenges performance principles typical causes of performance problems |
load generation traces/logs internal instrumentation end-to-end measurement |
load characterization profiling analysis techniques presentation techniques |
12 |
disk geometry device classes device class interfaces device driver services higher level frameworks dynamically loadable modules Device Driver Interface Driver Kernel Interface |
importance of disks disk performance random vs sequential I/O transfer size interface stability |
polled I/O DMA completion interrupts initiating I/O operations chain scheduling buffered I/O scatter/gather intelligent I/O devices user-mode device drivers read/write striping write mirroring parity/erasure coding asynchronous parallel I/O polling for asynchronous completions asynchronous event notifications auto-configuration dynamic resource allocation hot-plug |
|
13 |
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 |
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) contiguous allocation bit-map free lists (BSD) BSD directory entries FAT file descriptors the mount operation file access layers of abstratction dynamically loadable file systems user mode file systems |
file APIs |
14 |
immutability |
disks and file system design block size and internal fragmentation causes of file system damage |
read cache write-through general vs special purpose caches how to beat LRU delayed writes write-back cache detection and repair journaling and recovery meta-data-journaling log structured file systems checksums and scrubbing garbage collection defragmentation |
|
15 |
confidentiality integrity controlled sharing object, agent, principal mediated access revocability trusted computing platorm authentication authorization authorization matrix access control lists Linux file protection (ACLS) capabilities unforgeability Linux file descriptors (capabilties) principle of least privilege Role Based Access Control Trojan horses |
challenges |
cryptographic hashes challenge/response authentication Linux principals Linux authentication Linux setuid at rest encryption |
|
16 |
distributed system goals RPC RPC stub RPC skeleton RESTful interface principles unforgeable capabilities |
distributed systems challenges Deutsch's 7 Falacies man in the middle attacks key security |
RPC tool chain XDR symmetric encryption asymmetric encryption cryptographic privacy digital signatures secure sessions reliable communication distributed locks leases distributed transactions distributed consensus |
|
17 |
local vs cloud client/server model distributed file systems reliability availability stateless server protocols idempotent operations ACID Consistency Read-After-Write Consistency Close-Open Consistency |
remote file system goals graceful degradation write latency cache consistency |
remote file transfer remote file access peer-to-peer security distributed authentication/authorization replication and recovery striping direct client-server communication scalable distributed systems client-side caching |
|
18 |
classes of distributed systems Single System Image Non-Uniform Memory Architecture unit of deployment unit of failure/replacement domain services service management hypervisors cluster membership Geographic Disaster Recovery availability zones Software Defined Networking Software Defined Storage Single Point of Failure Eventual Consistency BASE semantics Data plane Control plane |
APIs -> protocols CAP Theorem |
Symmetric Multi-Processor loosely coupled systems Tightly Coupled Horizontally Scaled VM service deployment Clustered heart beating Active/Active Active/Standby partitioned resource management WAN-scale replication WAN-scale consistency models |
Last updated: 5/29/2016