Advanced Operating Systems - Lecture 36: Device-independent I/O software. This lecture will cover the following: device independent I/O software layer; buffered and un-buffered I/O; block and character devices; network devices; kernel I/O subsystem and data structures; life cycle of a typical I/O request;...
Trang 1CS703 Advanced Operating Systems
By Mr Farhan Zaidi
Trang 236
Trang 3Overview of today’s lecture
Trang 4Functions of the device-independent I/O software
Uniform interfacing for device drivers
Buffering
Error reporting
Allocating and releasing dedicated devices Providing a device-independent block size
Trang 5Usually interfaces to device drivers through a standard
interface
Buffering options
(1) Unbuffered input
(2) Buffering in user space
(3) Buffering in the kernel followed by copying to user space (4) Double buffering in the kernel
Trang 6Block devices include disk drives
– Commands include read, write, seek
– Raw I/O or filesystem access
– Memorymapped file access possible
Character devices include keyboards, mice, serial ports
– Commands include get, put
– Libraries layered on top allow line editing
Trang 7Varying enough from block and character to have own interface
Unix and Windows NT/9i/2000/XP include socket
interface
– Separates network protocol from network operation
– Includes select functionality
Approaches vary widely (pipes, FIFOs, streams, queues, mailboxes)
Trang 8Provide current time, elapsed time, timer
Programmable interval timer used for timings, periodic interrupts
ioctl (on UNIX) covers odd aspects of I/O such as
clocks and timers
Trang 9Blocking 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 multithreading inside the kernel – 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
Trang 10Scheduling
– Some I/O request ordering via perdevice queue
– Some OSs try 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”
Trang 11Caching fast memory holding copy of data
Spooling hold output for a device from multiple sources
Device reservation provides exclusive access to a device
– System calls for allocation and deallocation
– Watch out for deadlock
Trang 12OS 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
Trang 13Kernel 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 objectoriented methods and message passing to implement I/O
Kernel Data Structures
Trang 14Unix I/O Kernel Structure
Trang 15Reduce data copying
Reduce interrupts by using large transfers, smart
controllers, polling
Use DMA
Balance CPU, memory, bus, and I/O performance for highest throughput
Improving Performance
Trang 16Life Cycle of An I/O Request
Trang 17Intercomputer Communications