Concurrency
Multiple programs interleaved to as if parallel
Each program requests access to devices/services
- e.g., timers, serial ports, etc.
Exclusive or concurrent access to devices
- allow only one program at a time to access a device (e.g., serial port)
- arbitrate multiple accesses (e.g., timer)
State and arbitration needed
- keep track of state of devices and concurrent programs using resource
- arbitrate their accesses (order, fairness, exclusivity)
- monitors/locks (supported by primitive operations in ISA - test-and-set)
Interrupts
- disabling may effect timing of programs
- keeping enabled may cause unwanted interactions