IO Management
IO Management
1
IO Subsystem
● IO – input output
● Deals with controlling the devices for IO
● Very large number of IO devices
● With different properties
Managing IO devices
● Devices with different requirements
● They seem to require different interfaces to
manipulate and manage them
● We don’t want a different interface for every
device
● How can we have a uniform and efficient
approach to handling I/O devices?
Type of devices
● Human interface
● Interact with the user
● Ex: Printers, Video Display, Keyboard, Mouse
● Machine interface
● Interact with electronic equipment
● Ex: Disk and tape drives, Sensors, Controllers, Actuators
● Communication
● Used to communicate with remote devices
● Ex: Ethernet, Modems, Wireless
Differences between devices
● Data rate
● May be differences of several orders of magnitude
between the data transfer rates
● Example:
● Keyboard vs Gigabit Ethernet
● Disk vs USB
● Can we use the same strategy?
Data rates
Handling IO devices
● We have two main paths
● Control path
● Deals with controlling the device
● Less overhead and usually does not cause
bottlenecks
● Data path
● Deals with moving data from/to device and main
memory
● May cause bottlenecks
Considerations
● Complexity of control
● Unit of transfer
● Should we transfer a byte, or a block or should we
stream?
● Data representation
● Encoding schemes
● Error conditions
● Devices respond to errors differently
● Expected error rate also differs
Considerations
● Need a common interface
● At least user-level applications should see a
common interface
● Dissimilar but similar devices
● Examples: USB stick vs magnetic disk
● Need to have a common interface
● Achieved via having another layer ;)
● Priority
● Which device should we server first?
How to access devices