Вы находитесь на странице: 1из 21

I/O and Networking

Fred Kuhns
(fredk@arl.wustl.edu, http://www.arl.wustl.edu/~fredk)
Department of Computer Science and Engineering
Washington University in St. Louis

Washington
WASHINGTON UNIVERSITY IN ST LOUIS
Overview
• Two fundamental operations performed by a computing
system
– Processing of data (implement an algorithm)
– Perform I/O (move data into and out of the system)
• Large diversity in I/O devices, capabilities and
performance
– Common Categories: storage, transmission and user-interface
devices.
– Examples: display, keyboard, network, hard disks, tape drives,
CDROM ...
• OS Goal is to
1. provide simple and consistent interface to user
2. optimize I/O use for maximum concurrency
• Mechanisms used by OS
– device drivers provide standard interface to I/O devices

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 2


I/O and Devices
Processor
Device table
dispatcher Device Driver
(interrupt handler) X

Bus

command status data 0


data 1
Device Controller
(firmware and logic) ...
Device X data N-1

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 3


I/O Hardware
• Common concepts
– Port (device-machine communication point)
– Bus (daisy chain or shared communication channel)
– Controller (host adapter)
• Devices have addresses, used by
– Direct I/O instructions
– Memory-mapped I/O
• Common Techniques
– Direct I/O with polling, aka Programmed I/O: Processor does all the
work. Poll for results.
– Interrupt Driven I/O: Device notifies CPU when I/O operation
complete
– Memory Mapped I/O: rather than reading/writing to controller
registers the device is mapped into the OS memory space. increased
efficiency
– Direct memory access (DMA): DMA controller read and write directly
to memory, freeing the CPU to do other things.CPU notified when DMA
complete

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 4


Programmed I/O
• Busy-wait cycle to wait for I/O Insert Read
command to CPU I/O
from device I/O Module

• Poll at select times: periodic, Read Status


of I/O I/O CPU
entering/leaving kernel etc. Module
Not
– Determines state of device: Ready
Check Error
command-ready, busy, error Status Condition

• Processor transfer data to/from Ready

device. Read word


from I/O I/O CPU

• Read/write directly to status and Module

command registers Write word


CPU Memory
into memory
• Processor polls device for status
• Consumes a lot of processor time No
Done?
because every word read or
written passes through the Yes
Next Instruction
processor

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 5


Interrupt-Driven I/O
• Similar to direct I/O but Insert Read
command to CPU I/O
processor not required to poll I/O Module Do something
else
device. Read Status
Interrupt
• Interrupt asserted to notify
of I/O
Module I/O CPU

processor of a change in status


Check Error
• Interrupt handler receives Status Condition
interrupts Ready
Read word
• Maskable to ignore or delay from I/O I/O CPU

some interrupts Module

• Interrupt vector to dispatch Write word


CPU Memory
into memory
interrupt to correct handler
– Based on priority No
Done?
– Some unmaskable
Yes
Next Instruction

Interrupt mechanism also used for exceptions


Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 6
Direct Memory Access (DMA)
• I/O exchanges to memory
– Processor grants I/O module
authority to read from or write
to memory
– Relieves the processor from the
Issue Read
task block command
CPU DMA
Do something
– Processor is free to do other to I/O module else

things Read status


of DMA Interrupt
• An interrupt is sent when the module DMA CPU
task is complete
Next Instruction
• The processor is only involved at
the beginning and end of the
transfer
• Used to avoid programmed I/O
for large data movement
• Requires DMA controller
Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 7
Six steps to perform DMA transfer

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 8


Another way to Describe I/O Modes

• Synchronous (Programmed I/O) - control returns to


user program only upon I/O completion.
– Idle CPU until the next interrupt
– wait loop (contention for memory access).

• Asynchronous (Interrupt driven I/O) - control returns


to user program before I/O completion.
– System call – request to the operating system to allow user to
wait for I/O completion.
– Device-status table contains entry for each I/O device
indicating its type, address, and state.

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 9


I/O Interfaces (Layers)
• I/O system call layer encapsulates device behaviors
in generic classes

• Device-driver layer hides differences among I/O


controllers from kernel
– device dependent versus device independent layer

• 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

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 10


Block and Character Devices

• Block devices include disk drives


– Commands include read, write, seek
– Raw I/O or file-system access
– Memory-mapped file access possible

• Character devices include keyboards, mice, serial


ports
– Commands include get, put
– Libraries layered on top allow line editing

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 11


Communication Endpoints

• Varying enough from block and character oriented


devices to have their own interface
– Introduces new concepts such as connections, communications
protocols

• Unix and Windows/NT include socket interface


– Separates network protocol from network operation
– Includes select functionality

• Approaches vary widely (pipes, FIFOs, streams,


queues, mailboxes)

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 12


Clocks and Timers

• Provide current time, elapsed time, timer

• Programmable interval time used for timings,


periodic interrupts

• ioctl (on UNIX) covers odd aspects of I/O such as


clocks and timers

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 13


Blocking versus Nonblocking I/O
• Blocking - process suspended until I/O completed
– Easy to use and understand
– Insufficient for some needs

• Nonblocking - I/O call returns what is available


– 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


– Difficult to use
– I/O subsystem signals process when I/O completed

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 14


Kernel I/O Subsystem
• Scheduling
– Efficiency, fairness, prioritized access

• Buffering - store data in memory while transferring between devices


– To cope with device speed mismatch, transfer size mismatch and to
maintain “copy semantics”

• Caching - fast memory holding copy of data


– Always just a copy, Key to performance

• Spooling - hold output for a device


– Used when 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 deallocation
– Watch out for deadlock

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 15


Error Handling

• OS can recover from disk read, device unavailable,


transient write failures

• Most return an error number or code when I/O request


fails

• System error logs hold problem reports

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 16


Kernel Data Structures
• Kernel keeps state info for I/O components, including
open file tables, network connections, character
device state

• Many complex data structures to track buffers,


memory allocation, “dirty” blocks

• Some use object-oriented methods and message


passing to implement I/O

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 17


Example I/O Request to HW Operations

• 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

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 18


Life Cycle of an I/O Request

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 19


Intercomputer communications

context switch mode context switch mode


context switch
switch switch

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 20


Improving Performance

• I/O a major factor in system performance


– Demands CPU to execute device driver, kernel I/O code
– Context switches due to interrupts
– Data copying
– Network traffic especially stressful
• Improving Performance
– Reduce number of context switches
– Reduce data copying
– Reduce interrupts by using large transfers, smart controllers,
polling
– Use DMA
– Balance CPU, memory, bus, and I/O performance for highest
throughput

Fred Kuhns (01/17/09) CS422 – Operating Systems Concepts 21

Вам также может понравиться