Chapter 13 I/O Systems

Control of devices
Connections by port, by bus
Port mapped I/O -- registers for data (in, out), control signals, status
Memory mapped I/O

Polling & busy waiting -- loop, inefficient

Interrupts
Handler -- defer handling, dispatch to correct handler, multi-level
Maskable vs. non-maskable
Address, interrupt vector, interrupt request line
Interrupt priority levels
Exception & traps

DMA -- bus-mastering
Steps (p504, fig 13.5)

I/O Interface -- hides difference, I/O structure (p506, fig13.6)
Character-stream (e.g. keyboard) vs. block (e.g. disk)
Sequential vs. random-access
Synchronous vs. asynchronous
Shareable vs. dedicated
Speed of Operation
Read-write, read-only, write-only
Blocking and non-blocking

ioctl()

Network devices -- sockets

Programmable interval timer

Kernel I/O Subsystem
I/O Scheduling
Buffering vs. caching
Spooling
Error handling
I/O protection
State information

Transforming I/O Request to Hardware Operations

Streams (Unix System V) -- modular approach

Performance -- I/O major factor in performance
Demands on CPU & demands on bus
Reduce context switches, data copying, frequency of interrupts
Increase concurrency
Move processing to hardware
Balance systems