COS Module 4
COS Module 4
• Overview
• I/O Hardware
• Application I/O Interface
• Kernel I/O Subsystem
• Transforming I/O Requests to Hardware Operations
• STREAMS
• Performance
10/25/2024 Silberschatz A., Galvin P., Gagne G, “Operating Systems Concepts”, VIIIth Edition, Wiley, 2011. 1
Objectives
• Explore the structure of an operating system’s I/O subsystem
10/25/2024 2
Overview
• I/O management is a major component of operating system design
and operation
o Important aspect of computer operation
o I/O devices vary greatly
o Various methods to control them
o Performance management
o New types of devices frequent
• Ports, busses, device controllers connect to various devices
10/25/2024 Silberschatz A., Galvin P., Gagne G, “Operating Systems Concepts”, VIIIth Edition, Wiley, 2011. 3
I/O Hardware
• Incredible variety of I/O devices
o Storage
o Transmission
o Human-interface
10/25/2024 Silberschatz A., Galvin P., Gagne G, “Operating Systems Concepts”, VIIIth Edition, Wiley, 2011. 4
A Typical PC Bus Structure
10/25/2024 5
I/O Hardware (Cont.)
• I/O instructions control devices
• Devices usually have registers where device driver places commands,
addresses, and data to write, or read data from registers after command
execution
o Data-in register, data-out register, status register, control register
o Typically 1-4 bytes, or FIFO buffer
10/25/2024 6
Device I/O Port Locations on PCs (partial)
10/25/2024 7
Polling
For each byte of I/O
1. Read busy bit from status register until 0
2. Host sets read or write bit and if write copies data into data-out register
3. Host sets command-ready bit
4. Controller sets busy bit, executes transfer
5. Controller clears busy bit, error bit, command-ready bit when transfer done
Step 1 is busy-wait cycle to wait for I/O from device
Reasonable if device is fast
But inefficient if device slow
CPU switches to other tasks?
But if miss a cycle data overwritten / lost
10/25/2024 8
Interrupts
• Polling can happen in 3 instruction cycles
o Read status, logical-and to extract status bit, branch if not zero
o How to be more efficient if non-zero infrequently?
• CPU Interrupt-request line triggered by I/O device
o Checked by processor after each instruction
• Interrupt handler receives interrupts
o Maskable to ignore or delay some interrupts
• Interrupt vector to dispatch interrupt to correct handler
o Context switch at start and end
o Based on priority
o Some nonmaskable
o Interrupt chaining if more than one device at same interrupt number
10/25/2024 9
Interrupt-Driven I/O Cycle
10/25/2024 10
Intel Pentium Processor Event-Vector Table
10/25/2024 11
Interrupts (Cont.)
• Interrupt mechanism also used for exceptions
o Terminate process, crash system due to hardware error
• Page fault executes when memory access error
• System call executes via trap to trigger kernel to execute request
• Multi-CPU systems can process interrupts concurrently
o If operating system designed to handle it
• Used for time-sensitive processing, frequent, must be fast
10/25/2024 12
Direct Memory Access
• Used to avoid programmed I/O (one byte at a time) for large data
movement
• Requires DMA controller
• Bypasses CPU to transfer data directly between I/O device and memory
• OS writes DMA command block into memory
o Source and destination addresses
o Read or write mode
o Count of bytes
o Writes location of command block to DMA controller
o Bus mastering of DMA controller – grabs bus from CPU
− Cycle stealing from CPU but still much more efficient
o When done, interrupts to signal completion
10/25/2024 13
Six Step Process to Perform DMA Transfer
10/25/2024 14
Application I/O Interface
• I/O system calls encapsulate device behaviors in generic classes
• Device-driver layer hides differences among I/O controllers from kernel
• New devices talking already-implemented protocols need no extra work
• Each OS has its own I/O subsystem structures and device driver
frameworks
• Devices vary in many dimensions
o Character-stream or block
o Sequential or random-access
o Synchronous or asynchronous (or both)
o Sharable or dedicated
o Speed of operation
o read-write, read only, or write only
10/25/2024 15
A Kernel I/O Structure
10/25/2024 16
Characteristics of I/O Devices
10/25/2024 17
Characteristics of I/O Devices (Cont.)
10/25/2024 18
Block and Character Devices
• Block devices include disk drives
o Commands include read, write, seek
o Raw I/O, direct I/O, or file-system access
o Memory-mapped file access possible
−File mapped to virtual memory and clusters brought via demand paging
o DMA
• Character devices include keyboards, mice, serial ports
o Commands include get(), put()
o Libraries layered on top allow line editing
10/25/2024 19
Network Devices
10/25/2024 20
Clocks and Timers
• Provide current time, elapsed time, timer
• Normal resolution about 1/60 second
• Some systems provide higher-resolution timers
• Programmable interval timer used for timings, periodic
interrupts
• ioctl() (on UNIX) covers odd aspects of I/O such as
clocks and timers
10/25/2024 21
Nonblocking and Asynchronous I/O
• Blocking - process suspended until I/O completed
o Easy to use and understand
o Insufficient for some needs
• Nonblocking - I/O call returns as much as available
o User interface, data copy (buffered I/O)
o Implemented via multi-threading
o Returns quickly with count of bytes read or written
o select() to find if data ready then read() or write() to
transfer
• Asynchronous - process runs while I/O executes
o Difficult to use
o I/O subsystem signals process when I/O completed
10/25/2024 22
Two I/O Methods
Synchronous Asynchronous
10/25/2024 23
Vectored I/O
• Vectored I/O allows one system call to perform multiple I/O
operations
• For example, Unix readve() accepts a vector of multiple
buffers to read into or write from
• This scatter-gather method better than multiple individual
I/O calls
o Decreases context switching and system call overhead
o Some versions provide atomicity
−Avoid for example worry about multiple threads changing data as reads /
writes occurring
10/25/2024 24
Buffering device input
1 1 3
10/25/2024 25
Kernel I/O Subsystem
• Scheduling
o Some I/O request ordering via per-device queue
o Some OSs try fairness
o Some implement Quality Of Service (i.e. IPQOS)
• Buffering - store data in memory while transferring between devices
o To cope with device speed mismatch
o To cope with device transfer size mismatch
o To maintain “copy semantics”
o Double buffering – two copies of the data
−Kernel and user
−Varying sizes
−Full / being processed and not-full / being used
−Copy-on-write can be used for efficiency in some cases
10/25/2024 26
Device-status Table
10/25/2024 27
Sun Enterprise 6000 Device-Transfer Rates
10/25/2024 28
Kernel I/O Subsystem
• Caching - faster device holding copy of data
o Always just a copy
o Key to performance
o Sometimes combined with buffering
• Spooling - hold output for a device
o If device can serve only one request at a time
o i.e., Printing
• Device reservation - provides exclusive access to a device
o System calls for allocation and de-allocation
o Watch out for deadlock
10/25/2024 29
Error Handling
10/25/2024 30
I/O Protection
10/25/2024 31
Use of a System Call to Perform I/O
10/25/2024 32
Kernel 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
o Windows uses message passing
−Message with I/O information passed from user mode into kernel
−Message modified as it flows through to device driver and back to process
−Pros / cons?
10/25/2024 33
UNIX I/O Kernel Structure
10/25/2024 34
Power Management
• Not strictly domain of I/O, but much is I/O related
• Computers and devices use electricity, generate heat,
frequently require cooling
• OSes can help manage and improve use
o Cloud computing environments move virtual machines between
servers
−Can end up evacuating whole systems and shutting them down
• Mobile computing has power management as first class OS
aspect
10/25/2024 35
Power Management (Cont.)
• For example, Android implements
o Component-level power management
− Understands relationship between components
− Build device tree representing physical device topology
− System bus -> I/O subsystem -> {flash, USB storage}
− Device driver tracks state of device, whether in use
− Unused component – turn it off
− All devices in tree branch unused – turn off branch
o Wake locks – like other locks but prevent sleep of device when lock is held
o Power collapse – put a device into very deep sleep
− Marginal power use
− Only awake enough to respond to external stimuli (button press, incoming call)
10/25/2024 36
I/O Requests to Hardware Operations
• Consider reading a file from disk for a process:
o Determine device holding file
o Translate name to device representation
o Physically read data from disk into buffer
o Make data available to requesting process
o Return control to process
10/25/2024 37
Life Cycle of An I/O Request
10/25/2024 38
STREAMS
• STREAM – a full-duplex communication channel between a
user-level process and a device in Unix System V and beyond
• A STREAM consists of:
o STREAM head interfaces with the user process
o driver end interfaces with the device
o 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
o Flow control option to indicate available or busy
• Asynchronous internally, synchronous where user process
communicates with stream head
10/25/2024 39
The STREAMS Structure
10/25/2024 40
Performance
10/25/2024 41
Intercomputer Communications
10/25/2024 42
Improving Performance
• Reduce number of context switches
• Reduce data copying
• Reduce interrupts by using large transfers, smart controllers,
polling
• Use DMA
• Use smarter hardware devices
• Balance CPU, memory, bus, and I/O performance for highest
throughput
• Move user-mode processes / daemons to kernel threads
10/25/2024 43
Device-Functionality Progression
10/25/2024 44
THANK YOU
10/25/2024 Silberschatz A., Galvin P., Gagne G, “Operating Systems Concepts”, VIIIth Edition, Wiley, 2011. 45