1
play

1 Device I/O Port Locations on PCs (partial) Polling Computer - PDF document

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


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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