Midterm Topics
- Purpose of an operating system
- Protecting and synchronizing hardware access
- Safe sharing of resources
- Isolation and protection
- Choosing the right interface
- Policy and mechanism
- What will the interface require of users?
- What will the interface require of the implementer?
- Safety characteristics
- Performance characteristics
- Generality
- Limitations
- read() and write() as examples
- OS view of the machine
- Hardware interfaces
- Privileged execution
- Interrupts
- Boot loaders and the bootstrapping process
- Processes
- Goal: Isolation + Efficiency
- Process control block
- Process address space and stacks
- Run queues and wait queues
- Parent-child relationships
- Unix system calls for managing processes
- Buffering issues
- Blocking and nonblocking operations
- Threads
- Efficiency w/o Isolation -- but sometimes more convenient
- Kernel threads vs. user threads
- Posix threads API calls for creating and managing threads
- Signals and asynchronous notification
- Scheduling
- Goals
- Maximize CPU utilization, throughput
- Minimize latency: turnaround time, waiting time, response time,
user latency
- Particular schedulers: First Come First Serve, Shortest Job First, Round Robin, Priority
- Gantt charts
- Quanta
- Synchronization
- Race conditions
- Critical sections/atomic operations
- Goals: Mutual exclusion, Progress, Starvation Freedom (Fairness)
- Spinlocks
- Synchronization objects
- Mutexes, Recursive Mutexes, Read/Write Locks, Condition Variables,
Barriers, Monitors, Semaphores
- Implementation: Interrupt prevention, atomic instructions
- Non-blocking I/O
- Wait-free/lock-free data structures
- Deadlock
- Necessary conditions
- Lock ordering
- Prevention vs. detection
- Homework
- WeensyOS 1
- Lab 1
- Therac and Flash papers
- (WeensyOS 2 wouldn't hurt)
- Skills
- Code analysis
- Interface analysis ("Choosing the right interface", above)