Outline CMSC 421 Section 0202 � I/O Hardware � Application I/O Interface � Kernel I/O Subsystem � Transforming I/O Requests to Hardware Operations � Streams � Performance I/O Systems Chapter 13: I/O Systems Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.2 I/O Hardware A Typical PC Bus Structure � There is an incredible variety in I/O devices � There are shared common concepts � Device communicates with system using a connection point � Port � Bus (daisy chain or shared direct access) � Controller (host adapter) � Handshake between CPU and device controller done with polling/interrupts � Offloading to DMA for large I/O Device-registers (control, state, data) accessible via the � controller of device allow a computer to control a device � I/O instructions control devices � Devices have addresses, used by � Direct I/O instructions � Memory-mapped I/O Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.3 Operating System Concepts 13.4 1
Device I/O Port Locations on PCs (partial) Polling � Computer system determines state of device using � Polling � Interrupts � Polling determines state of device using certain commands � command-ready bit � Busy bit � Error bit � Command register � Data in/out registers � Busy-wait cycle to wait for I/O from device Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.5 Operating System Concepts 13.6 Interrupts Interrupt-Driven I/O Cycle � CPU’s Interrupt Request Line is triggered by I/O device, and CPU checks after each instruction, and device sets interrupt address � Device raises interrupt � CPU catches interrupt and dispatches it � Handler clears the interrupt � Interrupt handler receives interrupts � Maskable to ignore or delay some interrupts � Interrupt vector to dispatch interrupt to correct handler � Based on priority � Some unmaskable � Chaining of handlers � Interrupt mechanism also used for exceptions Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.7 Operating System Concepts 13.8 2
Direct Memory Access Intel Pentium Processor Event-Vector Table � Used to avoid programmed I/O for large data movement � Requires DMA controller � Bypasses CPU to transfer data directly between I/O device and memory � CPU writes DMA control block � DMA controller interacts with device using � DMA-request raised by device to signal the DMA controller that device has data � DMA-acknowledge raised by DMA to tell device to put data on data bus Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.9 Operating System Concepts 13.10 Application I/O Interface Six Step Process to Perform DMA Transfer � I/O system calls encapsulate device behaviors in generic classes � Device-driver layer hides differences among I/O device controllers from kernel � Devices vary in many dimensions � Character-stream or block � Sequential or random-access � Sharable or dedicated � Speed of operation � read-write, read only, or write only Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.11 Operating System Concepts 13.12 3
A Kernel I/O Structure Characteristics of I/O Devices Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.13 Operating System Concepts 13.14 Block and Character Devices Network Devices � Block devices include disk drives � Varying enough from block and character to have own interface � Commands include read, write, seek � Unix and Windows NT/9 x /2000 include socket interface � Raw I/O (device is viewed as a linear array of logical blocks) or file-system access � Similar to electric sockets � Memory-mapped file access possible � Local and remote sockets and connecting them with � Executing a program can be done with memory- addresses mapping of the executable to VM � Separates network protocol from network operation � Character devices include keyboards, mice, serial ports � Includes select functionality that manage a set of sockets and informs the CPU which socket have data or are ready � Commands include get, put to accept more data � Libraries layered on top allow line editing � Approaches vary widely � pipes, FIFOs, streams, queues, mailboxes Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.15 Operating System Concepts 13.16 4
Clocks and Timers Blocking and Nonblocking I/O � Provide current time, elapsed time, timer � Blocking - process suspended until I/O completed � Easy to use and understand � Programmable Interval Timer can be used for � Insufficient for some needs implementing timers (via periodic interrupts) � OS can implement many timers using a single � Nonblocking - I/O call returns as much data as available Programmable timer � User interface, data copy (buffered I/O) � Implemented via multi-threading � ioctl (on UNIX) covers odd aspects of I/O such as � Returns quickly with count of bytes read or written clocks and timers � Asynchronous - process runs while I/O executes � Difficult to use � I/O subsystem signals process when I/O completed Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.17 Operating System Concepts 13.18 Kernel I/O Subsystem Sun Enterprise 6000 Device-Transfer Rates � Scheduling to improve performance � Some I/O request ordering via per-device queue � Some OSs try fairness � Buffering - store data in memory while transferring between devices � To cope with device speed mismatch � To cope with device transfer size mismatch � To maintain “copy semantics” � To allow programmer to overwrite user I/O buffer as soon as I/O command returns, without having to worry about when data have been output to the device � Can also be implemented with VM and copy-on-write Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.19 Operating System Concepts 13.20 5
Kernel I/O Subsystem Error Handling � Caching - fast memory holding copy of data � OS can recover from disk read, device unavailable, transient write failures � Always just a copy � Most return an error number or code when I/O request � Key to performance fails � Sometimes can be used together with buffering � Spooling - hold output for a device � System error logs hold problem reports � If device can serve only one request at a time � i.e., printers, tape drives, etc � Device reservation - provides exclusive access to a device � System calls for allocation and deallocation of devices � Watch out for deadlocks Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.21 Operating System Concepts 13.22 Kernel Data Structures UNIX I/O Kernel Structure � Kernel keeps state info for I/O components, including open file tables, network connections, character device state � Many, many complex data structures to track buffers, memory allocation, “dirty” blocks, etc � Some use object-oriented methods and message passing to implement I/O Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.23 Operating System Concepts 13.24 6
I/O Requests to Hardware Operations Life Cycle of An I/O Request � Consider reading a file from disk for a process: � Determine device holding file � Translate name to device representation � Physically read data from disk into buffer � Make data available to requesting process � Return control to process Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.25 Operating System Concepts 13.26 STREAMS The STREAMS Structure STREAM – a full-duplex communication channel between a � user-level process and a device � A STREAM consists of: � STREAM head that interfaces with the user process using read/write or get/put message in a synchronous manner � driver end that interfaces with the device � and zero or more STREAM modules between them, that communicate via message passing in asynchronous manner Each module contains a read queue and a write queue � Message passing is used to communicate between queues, and � may implement flow control � STREAMs provide a modular and incremental approach to developing device drivers and protocols Silberschatz, Galvin and Gagne 2002 Silberschatz, Galvin and Gagne 2002 Operating System Concepts 13.27 Operating System Concepts 13.28 7
Recommend
More recommend