0% found this document useful (0 votes)
33 views42 pages

Chapter 13

This document summarizes a chapter about I/O systems from an operating systems textbook. It discusses I/O hardware components like buses, ports, and controllers. It covers I/O access methods like polling and interrupts, as well as techniques like DMA. It also describes the application I/O interface, kernel I/O subsystem, and characteristics of different types of I/O devices in an operating system.

Uploaded by

gajus87
Copyright
© © All Rights Reserved
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
0% found this document useful (0 votes)
33 views42 pages

Chapter 13

This document summarizes a chapter about I/O systems from an operating systems textbook. It discusses I/O hardware components like buses, ports, and controllers. It covers I/O access methods like polling and interrupts, as well as techniques like DMA. It also describes the application I/O interface, kernel I/O subsystem, and characteristics of different types of I/O devices in an operating system.

Uploaded by

gajus87
Copyright
© © All Rights Reserved
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/ 42

COP 4610: Introduction to Operating Systems (Spring 2015)

Chapter 13:
I/O Systems

Zhi Wang

Florida State University


Content

• I/O hardware
• Application I/O interface
• Kernel I/O subsystem
• I/O performance
Objectives

• Explore the structure of an operating system’s I/O subsystem


• Discuss the principles of I/O hardware and its complexity
• Provide details of performance of I/O hardware and software
Overview
• I/O management is a major component of OS design and operation
• important aspect of computer operation
• I/O devices is the way computer to interact with user and other systems
• I/O devices vary greatly
• various methods to control them
• performance varies
• device drivers encapsulate device details; presents an uniform interface
• new types of devices frequently emerges
I/O Hardware
• Incredible variety of I/O devices
• storage, communication, human-interface
• Common concepts: signals from I/O devices interface with computer
• bus: an interconnection between components (including CPU)
• port: connection point for device
• controller: component that control the device
• can be integrated to device or separate circuit board
• usually contains processor, microcode, private memory, bus controller,
etc
• I/O access can use polling or interrupt
A Typical PC Bus Structure
I/O Hardware
• Some CPU architecture has dedicated I/O instructions
• e.g., x86: in, out, ins, outs
• Devices usually provide registers for data and control I/O of device
• device driver places (pointers to) commands and data to register
• registers include data-in/data-out, status, control ( or command) register
• typically 1-4 bytes, or FIFO buffer
• Devices are assigned addresses for registers or on-device memory
• direct I/O instructions
• to access (mostly) registers
• memory-mapped I/O
• data and command registers mapped to processor address space
• to access (large) on-device memory (graphics)
I/O Ports on PCs (Partial)
Polling
• For each I/O operation:
• busy-wait if device is busy (status register)
• send the command to the device controller (command register)
• read status register until it indicates command has been executed
• read execution status, and possibly reset device status
• Polling requires busy wait
• reasonable if device is fast; inefficient if device slow
Interrupts
• Polling requires busy-wait, inefficient use of CPU resource
• Interrupts can avoid busy-wait
• device driver send a command to the controller, and return
• OS can schedule other activities
• device will interrupt the processor when command has been executed
• OS retrieves the result by handling the interrupt
• Interrupt-based I/O requires context switch at start and end
• if interrupt frequency is extremely high, context switch wastes CPU time
• solution: use polling instead
• example: NAPI in Linux enables polling under very high network load
Interrupt-Driven I/O Cycle
Intel Pentium Interrupt Vector Table
Interrupts
• Interrupt is also used for exceptions
• protection error for access violation
• page fault for memory access error
• software interrupt for system calls
• Multi-CPU systems can process interrupts concurrently
• sometimes a CPU may be dedicated to handle interrupts
• interrupts can also have CPU affinity
Direct Memory Access
• DMA transfer data directly between I/O device and memory
• OS only need to issue commands, data transfers bypass the CPU
• no programmed I/O (one byte at a time), data transferred in large blocks
• it requires DMA controller in the device or system
• OS issues commands to the DMA controller
• a command includes: operation, memory address for data, count of bytes…
• usually it is the pointer of the command written into the command register
• when done, device interrupts CPU to signal completion
Six Steps of DMA Transfer
Application I/O Interface
• I/O system calls encapsulate device behaviors in generic classes
• in Linux, devices can be accessed as files; low-level access with ioctl
• Device-driver layer hides differences among I/O controllers from kernel
• each OS has its own I/O subsystem and device driver frameworks
• new devices talking already-implemented protocols need no extra work
• Devices vary in many dimensions
• character-stream or block
• sequential or random-access
• synchronous or asynchronous (or both)
• sharable or dedicated
• speed of operation
• read-write, read only, or write only
Kernel I/O Structure
Characteristics of I/O Devices
Characteristics of I/O Devices
• Broadly, I/O devices can be grouped by the OS into
• block I/O
• character I/O (Stream)
• memory-mapped file access
• network sockets
• Direct manipulation of I/O device usually an escape / back door
• Linux’s ioctl call to send commands to a device driver
Block and Character Devices
• Block devices access data in blocks, such as disk drives…
• commands include read, write, seek
• raw I/O, direct I/O, or file-system access
• memory-mapped file access possible (e.g., memory-mapped files)
• DMA
• Character devices include keyboards, mice, serial ports…
• very diverse types of devices
Network Devices
• Varying enough from block and character to have own interface
• very different from pipe, mailbox…
• Popular interface for network access is the socket interface
• it separates network protocol from detailed network operation
• some non-network operations are implemented as sockets
• e.g., Unix socket
Clocks and Timers
• Clocks and timers can be considered as character devices
• very important devices as they provide current time, elapsed time, timer
• Normal resolution about 1/60 second, some OS provides higher-resolution ones
Synchronous/Asynchronous I/O
• Synchronous I/O includes blocking and non-blocking I/O
• blocking I/O: process suspended until I/O completed
• easy to use and understand, but may be less efficient
• insufficient for some needs
• non-blocking I/O: I/O calls return as much data as available
• process does not block, returns whatever existing data (read or write)
• use select to find if data is ready, then use read or write to transfer data
• Asynchronous I/O: process runs while I/O executes,
• I/O subsystem signals process when I/O completed via signal or callback
• difficult to use but very efficient
Two I/O Methods

synchronous! asynchronous!
Kernel I/O Subsystem
• I/O scheduling
• to queue I/O requests via per-device queue
• to schedule I/O for fairness and quality of service
• 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 improve performance (double buffering in video)
Kernel I/O Subsystem
• Caching: hold a copy of data for fast access
• key to performance
• sometimes combined with buffering
• Spooling: hold output 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
Device-status Table
Sun Enterprise 6000 Device-Transfer Rates
Error Handling
• Some OSes try to recover from errors
• e.g., device unavailable, transient write failures
• sometimes via retrying the read or write
• some systems have more advanced error handling
• track error frequencies, stop using device with high error frequency
• Some OSes just return an error number or code when I/O request fails
• system error logs hold problem reports
I/O Protection
• OS need to protect I/O devices
• e.g., keystrokes can be stolen by a keylogger if keyboard is not protected
• always assume user may attempt to obtain illegal I/O access
• To protect I/O devices:
• define all I/O instructions to be privileged
• I/O must be performed via system calls
• memory-mapped I/O and I/O ports must be protected too
Use System Call to Perform I/O
Kernel Data Structures
• Kernel keeps state info for I/O components
• e.g., open file tables, network connections, character device state
• many data structures to track buffers, memory allocation, “dirty” blocks
• sometimes very complicated
• Some OS uses message passing to implement I/O, e.g., Windows
• message with I/O information passed from user mode into kernel
• message modified as it flows through to device driver and back to process
UNIX I/O Kernel Structure
I/O Requests to Hardware
• System resource access needs to be mapped to hardware
• 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
Life Cycle of An I/O Request
Streams
• Stream is a full-duplex communication channel between a user-level process
and a device in Unix systems
• A stream consists of:
• stream head interfaces with the user process
• driver end interfaces with the device
• zero or more stream modules between them (stacked)
• each module contains a read queue and a write queue
• Message passing is used to communicate between queues
• asynchronous internally, synchronous for user interface
Streams Structure
Performance
• I/O is a major factor in system performance:
• CPU to execute device driver, kernel I/O code
• context switches due to interrupts
• data buffering and copying
• network traffic especially stressful
Intercomputer Communications
Performance
• To improve performance
• reduce number of context switches
• reduce data copying
• reduce interrupts by using large transfers, smart controllers, polling
• use DMA
• use smarter hardware devices
• move user processes to kernel threads
Device-Functionality Progression
End of Chapter 13

You might also like