Chapter 13: I/O Systems - University of...
Transcript of Chapter 13: I/O Systems - University of...
Chapter 13: I/O SystemsChapter 13: I/O Systems
13.2 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Chapter 13: I/O SystemsChapter 13: I/O Systems
■ I/O Hardware
■ Application I/O Interface
■ Kernel I/O Subsystem
■ Transforming I/O Requests to Hardware Operations
■ Streams
■ Performance
13.3 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
ObjectivesObjectives
■ Explore the structure of an operating system’s I/O subsystem
■ Discuss the principles of I/O hardware and its complexity
■ Provide details of the performance aspects of I/O hardware and software
13.4 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
I/O HardwareI/O Hardware
■ Incredible variety of I/O devices
■ Common concepts● Port ● Bus (daisy chain or shared direct access)● Controller (host adapter)
■ Devices have addresses (logical bus address), used by ● Direct I/O instructions (to registers on device/controller)
Typically: status, control, data-in, data-out registers● Memory-mapped I/O● Some systems / architectures / devices use both
E.g., a graphics controller may use ports for basic operations, but a memory-mapped region for screen data
13.5 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
A Typical PC Bus StructureA Typical PC Bus Structure
13.6 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Device I/O Port Locations on PCs (partial)Device I/O Port Locations on PCs (partial)
13.7 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
PollingPolling
■ One method of performing I/O● Typically: status, control (command), data-in, data-out registers
■ Poll to determine state of device (check status bits)● command-ready● busy● error
■ Busy-wait cycle to wait for I/O from device
■ When device is ready● Host sets write in command register● Host writes a byte into the data-out buffer● Host sets the command-ready bit● When controller notices command-ready, sets busy bit● Controller reads command register, interprets command, reads data-
out register, writes data to the device● Controller clears command-ready bit, clears error bit, clears busy bit
13.8 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
InterruptsInterrupts
■ Alternative I/O technique, eliminates busy wait and polling
■ General process of handling interrupts for I/O● CPU Interrupt request line triggered by I/O device
This is a hardware signal● Interrupt handler (software) receives interrupts
Somewhat like an exception handler Interrupts can be unmaskable or maskable; have priority
● Interrupt vector used to dispatch interrupt to correct handler Prioritized, so handler execution can be interrupted Some unmaskable
■ Interrupt mechanism also used for exceptions and traps (software interrupts or system calls)
13.9 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Interrupt-Driven I/O CycleInterrupt-Driven I/O Cycle
13.10 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Intel Pentium Processor Event-Vector TableIntel Pentium Processor Event-Vector Table
13.11 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Direct Memory AccessDirect Memory Access
■ 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
■ Increases throughput for CPU and system
13.12 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Six Step Process to Perform DMA TransferSix Step Process to Perform DMA Transfer
13.13 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
ApplicationApplication I/O Interface I/O Interface
■ Additional level of abstraction● Insert device driver between I/O system (in kernel) and
devices● I/O system calls encapsulate device behaviors in generic
classes
■ Kernel I/O subsystem uses standard APIs (for a particular OS) to communicate with device drivers
● Device-driver layer hides differences among I/O controllers from kernel – handles communication between kernel and controllers
13.14 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
A Kernel I/O StructureA Kernel I/O Structure
13.15 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Device CharacteristicsDevice Characteristics
■ 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
■ Must be considered when● Writing device drivers● Using devices
13.16 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Characteristics of I/O DevicesCharacteristics of I/O Devices
13.17 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Block and Character DevicesBlock and Character Devices
■ Block devices include disk drives● Commands include read(), write(), seek() ● Raw I/O or file-system access
Most use the file system, except for some OS code / functions● Memory-mapped file access possible
■ Character (stream) devices include keyboards, mice, serial ports
● Commands include get(), put()● Libraries layered on top allow line editing
13.18 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Network DevicesNetwork Devices
■ Varies enough from block and character to have own interface
■ Many operating systems include a socket interface● Separates network protocol from network operation● Includes select() functionality
Returns info indicating which sockets have packets waiting and which sockets have room to accept a new packet
Eliminates polling and busy waits Can block while waiting
■ Approaches vary widely (pipes, FIFOs, streams, queues, mailboxes)
● Can look and function quite similar to these familiar structures
13.19 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Clocks and TimersClocks and Timers■ Hardware functions
● Provide current time, elapsed time, timer● Heavily used by OS and some applications
■ Programmable interval timer used for timings, periodic interrupts
● Used by scheduler with time slices● Flushing caches, timeouts, wait/sleep, etc.
■ Timer is often rather coarse resolution, compared to actual system clock speed
● E.g., only 18-60 ticks per second Must take into consideration
● Often an instruction also exists which will retrieve the actual system time, if need greater resolution
13.20 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Blocking and Nonblocking I/OBlocking and Nonblocking I/O
■ Blocking/Synchronous - process suspended until I/O completed● Easy to use and understand● Insufficient for some needs, required by others● Reduces performance and throughput, unless required● Can use multi-threading to improve or simulate asynchronous I/O
■ Nonblocking - I/O call returns as much as available (e.g., kbd, mouse, video, audio – think of a browser window)
● User interface, data copy (buffered I/O)● Implemented via multi-threading● Returns quickly with count of bytes read or written
■ Asynchronous - process runs while I/O executes● Sometimes can be difficult to use correctly and well● I/O subsystem signals process when I/O completed
13.21 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Two I/O MethodsTwo I/O Methods
Synchronous Asynchronous
13.22 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Kernel I/O Subsystem ServicesKernel I/O Subsystem Services
■ Scheduling● Way to improve throughput and I/O performance● Some I/O request ordering via per-device queue● Some OSs try for 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”● Double buffering can be used to decouple producer from
consumer See following pages for different device speed characteristics
13.23 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Device-status TableDevice-status Table
13.24 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Sun Enterprise 6000 Device-Transfer RatesSun Enterprise 6000 Device-Transfer Rates
13.25 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Kernel I/O SubsystemKernel I/O Subsystem
■ Caching - fast memory holding copy of data● Different from buffering – to reduce unnecessary I/Os● Always just a copy – must manage refreshing and writing out (who
manages depends on where located)● Important impact on performance
■ Spooling - hold output for a device● Special kind of buffering – to serialize I/O● If device can serve only one request at a time
i.e., printer, tape
■ Device reservation - provides exclusive access to device● Used when device can service only one request at a time
e.g., lock tape drive to particular process● System calls for allocation and deallocation● Watch out for deadlock
13.26 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Error HandlingError Handling
■ OS must be able to handle read, device unavailable, transient write failures
■ Initially try to recover – retries, timeouts
■ If unrecoverable error, must return an error number or code (errno) when I/O request fails (or throw an exception)
■ Log error and related information in system error logs
■ System must handle error gracefully (if can)
■ Good OSs will provide enough information to debug and correct the problem easily
13.27 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
I/O ProtectionI/O Protection
■ User process may accidentally or intentionally 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
● This means that all I/O must be done by OS
■ Discussed this at beginning of course
13.28 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Use of a System Call to Perform I/OUse of a System Call to Perform I/O
13.29 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Kernel Data StructuresKernel 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
13.30 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
UNIX I/O Kernel StructureUNIX I/O Kernel Structure
13.31 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
What Happens During an I/O Request?What Happens During 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
13.32 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Life Cycle of An I/O RequestLife Cycle of An I/O Request
13.33 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
STREAMSSTREAMS
■ STREAM – a full-duplex communication channel between a user-level process and a device (actually, a device driver)
■ A STREAM consists of:- STREAM head, which interfaces with the user process- Driver end, which interfaces with the device- Zero or more STREAM modules between them.
■ Each module contains a read queue and a write queue
■ Message passing is used to communicate between queues
■ Stream I/O is asynchronous, except when the user process communicates with the stream head
13.34 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
The STREAMS StructureThe STREAMS Structure
13.35 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
PerformancePerformance
■ I/O a major factor in system performance:
● Requires CPU cycles to execute device driver, kernel I/O code● Results in context switches due to interrupts● Involves much data copying● Network traffic especially stressful
13.36 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Intercomputer CommunicationsIntercomputer Communications
13.37 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Improving PerformanceImproving Performance
■ Reduce number of context switches
■ Reduce data copying
■ Reduce interrupts by using large transfers, smart controllers, polling
■ Use DMA to increase concurrency
■ Balance CPU, memory, bus, and I/O performance for highest throughput
■ Reduce number of opens / closes, setup / teardown, etc.● Threading / thread pools
13.38 Silberschatz, Galvin and Gagne ©2009Operating System Concepts
Device-Functionality ProgressionDevice-Functionality Progression
End of Chapter 13End of Chapter 13