Upload
jaquan-partney
View
213
Download
0
Embed Size (px)
Citation preview
WashingtonWASHINGTON UNIVERSITY IN ST LOUIS
I/O and Networking
Fred Kuhns([email protected], http://www.arl.wustl.edu/~fredk)
Department of Computer Science and EngineeringWashington University in St. Louis
Fred Kuhns (04/10/23) CS422 – Operating Systems Concepts 2
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 to1. provide simple and consistent interface to user2. optimize I/O use for maximum concurrency
• Mechanisms used by OS– device drivers provide standard interface to I/O devices
Fred Kuhns (04/10/23) CS422 – Operating Systems Concepts 3
I/O and Devices
Processor
Device Controller(firmware and logic)
Device X
command status data 0
data 1
data N-1
...
Bus
Device DriverX
Device table
dispatcher(interrupt handler)
Fred Kuhns (04/10/23) CS422 – Operating Systems Concepts 4
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 Techniques1. Direct I/O with polling, aka Programmed I/O: Processor does all the
work. Poll for results.2. Interrupt Driven I/O: Device notifies CPU when I/O operation
complete3. Memory Mapped I/O: rather than reading/writing to controller
registers the device is mapped into the OS memory space. increased efficiency
4. 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 (04/10/23) CS422 – Operating Systems Concepts 5
Programmed I/O
• Busy-wait cycle to wait for I/O from device
• Poll at select times: periodic, entering/leaving kernel etc.– Determines state of device:
command-ready, busy, error
• Processor transfer data to/from device.
• Read/write directly to status and command registers
• Processor polls device for status• Consumes a lot of processor
time because every word read or written passes through the processor
Insert Readcommand toI/O Module
Read Statusof I/OModule
CheckStatus
Read wordfrom I/OModule
Write wordinto memory
Done?
Yes
No
Next Instruction
CPU Memory
I/O CPU
ErrorCondition
I/O CPU
CPU I/O
Ready
NotReady
Fred Kuhns (04/10/23) CS422 – Operating Systems Concepts 6
Interrupt-Driven I/O
• Similar to direct I/O but processor not required to poll device.
• Interrupt asserted to notify processor of a change in status
• Interrupt handler receives interrupts
• Maskable to ignore or delay some interrupts
• Interrupt vector to dispatch interrupt to correct handler– Based on priority– Some unmaskable
Insert Readcommand toI/O Module
Read Statusof I/OModule
CheckStatus
Read wordfrom I/OModule
Write wordinto memory
Done?
Yes
No
Next Instruction
CPU Memory
I/O CPU
ErrorCondition
I/O CPU
CPU I/O
Ready
Do somethingelse
Interrupt
Interrupt mechanism also used for exceptions
Fred Kuhns (04/10/23) CS422 – Operating Systems Concepts 7
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 task
– Processor is free to do other things
• An interrupt is sent when the task is complete
• 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
Next Instruction
CPU DMA
Interrupt
DMA CPU
Do somethingelse
Issue Readblock commandto I/O module
Read statusof DMAmodule
Fred Kuhns (04/10/23) CS422 – Operating Systems Concepts 8
Six steps to perform DMA transfer
Fred Kuhns (04/10/23) CS422 – Operating Systems Concepts 9
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 (04/10/23) CS422 – Operating Systems Concepts 10
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 (04/10/23) CS422 – Operating Systems Concepts 11
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 (04/10/23) CS422 – Operating Systems Concepts 12
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 (04/10/23) CS422 – Operating Systems Concepts 13
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 (04/10/23) CS422 – Operating Systems Concepts 14
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 (04/10/23) CS422 – Operating Systems Concepts 15
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 (04/10/23) CS422 – Operating Systems Concepts 16
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 (04/10/23) CS422 – Operating Systems Concepts 20
Intercomputer communications
context switch modeswitch
modeswitch
context switchcontext switch
Fred Kuhns (04/10/23) CS422 – Operating Systems Concepts 21
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