Concurrency
Multiple programs being interleaved to give appearance of parallelism
Each program can request access to devices and services (e.g., timers)
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