We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29
Operating System
Unit IV I/O Systems I/O Systems • Overview • I/O Hardware • Application I/O Interface • Kernel I/O Subsystem
27-12-2021 CSE308 - Operating Systems 2
Overview • I/O management is a major component of operating system design and operation ✓Important aspect of computer operation ✓I/O devices vary greatly ✓Various methods to control them ✓Performance management ✓New types of devices frequent • Ports, busses, device controllers connect to various devices • Device drivers encapsulate device details • Present uniform device-access interface to I/O subsystem
27-12-2021 CSE308 - Operating Systems 3
I/O Hardware • Incredible variety of I/O devices ✓Storage ✓Transmission ✓Human-interface • Common concepts – signals from I/O devices interface with computer ✓Port – connection point for device ✓Bus - daisy chain or shared direct access ✓ PCI (Peripheral Component Interconnect ) bus common in PCs and servers, PCI Express (PCIe) ✓ expansion bus connects relatively slow devices ✓Controller (host adapter) – electronics that operate port, bus, device • Serial Advanced Technology Attachment (SATA) • Memory-mapped I/O 27-12-2021 CSE308 - Operating Systems 4 I/O Hardware (Cond..)
27-12-2021 CSE308 - Operating Systems 5
Polling • For each byte of I/O 1. Read busy bit from status register until 0 2. Host sets read or write bit and if write copies data into data-out register 3. Host sets command-ready bit 4. Controller sets busy bit, executes transfer 5. Controller clears busy bit, error bit, command-ready bit when transfer done
27-12-2021 CSE308 - Operating Systems 6
Interrupts • Polling can happen in 3 instruction cycles ✓Read status, logical-and to extract status bit, branch if not zero ✓How to be more efficient if non-zero infrequently? • CPU Interrupt-request line triggered by I/O device ✓Checked by processor after each instruction • Interrupt handler receives interrupts ✓Maskable to ignore or delay some interrupts • Interrupt vector to dispatch interrupt to correct handler ✓Context switch at start and end ✓Based on priority ✓Some nonmaskable 27-12-2021 CSE308 - Operating Systems 7 Interrupt-Driven I/O Cycle
27-12-2021 CSE308 - Operating Systems 8
Interrupts (Cond..) • Interrupt mechanism also used for exceptions ✓Terminate process, crash system due to hardware error • Page fault executes when memory access error • System call executes via trap to trigger kernel to execute request • Multi-CPU systems can process interrupts concurrently ✓If operating system designed to handle it • Used for time-sensitive processing, frequent, must be fast
27-12-2021 CSE308 - Operating Systems 9
Direct Memory Access • Used to avoid programmed I/O (one byte at a time) for large data movement • Requires DMA controller • Bypasses CPU to transfer data directly between I/O device and memory • OS writes DMA command block into memory ✓Source and destination addresses ✓Read or write mode ✓Count of bytes ✓Writes location of command block to DMA controller ✓Bus mastering of DMA controller – grabs bus from CPU ➢ Cycle stealing from CPU but still much more efficient 27-12-2021 CSE308 - Operating Systems 10 DMA (Cond..)
27-12-2021 CSE308 - Operating Systems 11
Application I/O Interface • I/O system calls encapsulate device behaviors in generic classes • Device-driver layer hides differences among I/O controllers from kernel • New devices talking already-implemented protocols need no extra work • Each OS has its own I/O subsystem structures and device driver frameworks • Devices vary in many dimensions ✓Character-stream or block ✓Sequential or random-access ✓Synchronous or asynchronous (or both) ✓Sharable or dedicated
27-12-2021 CSE308 - Operating Systems 12
Characteristics of I/O Devices
27-12-2021 CSE308 - Operating Systems 13
Characteristics of I/O Devices (Cond..) • Subtleties of devices handled by device drivers • Broadly I/O devices can be grouped by the OS into ✓Block I/O ✓Character I/O (Stream) ✓Memory-mapped file access ✓Network sockets • For direct manipulation of I/O device specific characteristics, usually an escape / back door ✓Unix ioctl() call to send arbitrary bits to a device control register and data to device data register
27-12-2021 CSE308 - Operating Systems 14
Block and Character Devices • Block devices include disk drives ✓Commands include read, write, seek ✓Raw I/O, direct I/O, or file-system access ✓Memory-mapped file access possible ➢ File mapped to virtual memory and clusters brought via demand paging ✓DMA • Character devices include keyboards, mice, serial ports ✓Commands include get(), put() ✓Libraries layered on top allow line editing
27-12-2021 CSE308 - Operating Systems 15
Network Devices • Varying enough from block and character to have own interface • Linux, Unix, Windows and many others include socket interface ✓Separates network protocol from network operation ✓Includes select() functionality • Approaches vary widely (pipes, FIFOs, streams, queues, mailboxes)
27-12-2021 CSE308 - Operating Systems 16
Clocks and Timers • Provide current time, elapsed time, timer • Normal resolution about 1/60 second • Some systems provide higher-resolution timers • Programmable interval timer used for timings, periodic interrupts • ioctl() (on UNIX) covers odd aspects of I/O such as clocks and timers
27-12-2021 CSE308 - Operating Systems 17
Nonblocking and Asynchronous I/O • Blocking - process suspended until I/O completed ✓Easy to use and understand ✓Insufficient for some needs • Nonblocking - I/O call returns as much as available ✓User interface, data copy (buffered I/O) ✓Implemented via multi-threading ✓Returns quickly with count of bytes read or written ✓select() to find if data ready then read() or write() to transfer • Asynchronous - process runs while I/O executes ✓Difficult to use ✓I/O subsystem signals process when I/O completed
27-12-2021 CSE308 - Operating Systems 18
Two I/O methods
27-12-2021 CSE308 - Operating Systems 19
Vectored I/O • Vectored I/O allows one system call to perform multiple I/O operations • For example, Unix readve() accepts a vector of multiple buffers to read into or write from • This scatter-gather method better than multiple individual I/O calls ✓Decreases context switching and system call overhead ✓Some versions provide atomicity ➢ Avoid for example worry about multiple threads changing data as reads / writes occurring
27-12-2021 CSE308 - Operating Systems 20
Kernel I/O Subsystem • Scheduling ✓Some I/O request ordering via per-device queue ✓Some OSs try fairness ✓Some implement Quality Of Service (i.e. IPQOS) • 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” • Double buffering – two copies of the data ✓ Kernel and user ✓ Varying sizes 27-12-2021 CSE308 - Operating Systems 21 Device-status Table
27-12-2021 CSE308 - Operating Systems 22
Kernel I/O Subsystem (Cond..) • Caching - faster device holding copy of data ✓Always just a copy ✓Key to performance ✓Sometimes combined with buffering • Spooling - hold output for a device ✓If device can serve only one request at a time ✓i.e., Printing • Device reservation - provides exclusive access to a device ✓System calls for allocation and de-allocation ✓Watch out for deadlock
27-12-2021 CSE308 - Operating Systems 23
Error Handling • OS can recover from disk read, device unavailable, transient write failures ✓Retry a read or write, for example ✓Some systems more advanced – Solaris FMA, AIX ➢ Track error frequencies, stop using device with increasing frequency of retry-able errors • Most return an error number or code when I/O request fails • System error logs hold problem reports
27-12-2021 CSE308 - Operating Systems 24
I/O Protection • User process may accidentally or purposefully attempt to disrupt normal operation via illegal I/O instructions ✓All I/O instructions defined to be privileged ✓I/O must be performed via system calls ➢ Memory-mapped and I/O port memory locations must be protected too
27-12-2021 CSE308 - Operating Systems 25
Use of a system call to perform I/O
27-12-2021 CSE308 - Operating Systems 26
Kernel Data Structures • 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 • Some use object-oriented methods and message passing to implement I/O ✓Windows uses message passing ➢ Message with I/O information passed from user mode into kernel
27-12-2021 CSE308 - Operating Systems 27
UNIX I/O Kernel Structure
27-12-2021 CSE308 - Operating Systems 28
Acknowledgement Operating-System Concepts by Abraham-Silberschatz Peter Baer Galvin Greg Gagne