* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download ch13
Plan 9 from Bell Labs wikipedia , lookup
Process management (computing) wikipedia , lookup
Copland (operating system) wikipedia , lookup
Unix security wikipedia , lookup
Security-focused operating system wikipedia , lookup
Mobile operating system wikipedia , lookup
Spring (operating system) wikipedia , lookup
Chapter 13: I/O Systems
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Silberschatz, Galvin and Gagne ©2007
Chapter 13: I/O Systems
I/O Hardware
Explicit I/O Instructions vs. Memory-Mapped I/O
Polling vs. Interrupts
Programmed I/O vs. DMA
Device Drivers
Application I/O Interface
Kernel I/O Subsystem
Transforming I/O Requests to Hardware Operations
Streams
Performance
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.2
Silberschatz, Galvin and Gagne ©2007
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 the performance aspects of I/O
hardware and software
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.3
Silberschatz, Galvin and Gagne ©2007
The Requirements of I/O
Without I/O, computers are not very useful
But… thousands of devices, each slightly different
How can we standardize the interfaces to these devices?
Devices unreliable: media failures and transmission errors
How can we make them reliable?
Devices unpredictable and/or slow
How can we utilize them if we don’t know what they will do
or how they will perform?
Some operational parameters:
Byte/Block
Some devices provide single byte at a time (e.g. keyboard)
Others provide whole blocks (e.g. disks, tapes, etc)
Sequential/Random
Some devices must be accessed sequentially (e.g. tape)
Others can be accessed randomly (e.g. disk, cd, etc.)
Polling/Interrupts
Some devices require continual monitoring
Others generate interrupts when they need service
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.4
Silberschatz, Galvin and Gagne ©2007
The Goal of the I/O Subsystem
Provide Uniform Interfaces, Despite Wide Range of Different Devices
This code works on many different devices:
int fd = open(“/dev/something”);
for (int i = 0; i < 10; i++) {
fprintf(fd,”Count %d\n”,i);
}
close(fd);
Why? Because code that controls devices (“device driver”)
implements standard interface.
We will try to get a flavor for what is involved in actually controlling
devices in rest of lecture
Can only scratch surface!
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.5
Silberschatz, Galvin and Gagne ©2007
Modern I/O Systems
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.6
Silberschatz, Galvin and Gagne ©2007
I/O Devices
Device Rates vary over
many orders of magnitude
System better be able
to handle this wide
range
Better not have high
overhead/byte for fast
devices!
Better not waste time
waiting for slow
devices
Some typical device,
network, and bus data
rates.
Table from Tanenbaum, Modern Operating Systems
3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.
0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.7
Silberschatz, Galvin and Gagne ©2007
Intel Chipset Components: Pentium 4
Northbridge:
Handles memory
Graphics
Southbridge:
PCI bus
Disk controllers
USB controllers
Audio
Serial I/O
Interrupt controller
Timers
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.8
Silberschatz, Galvin and Gagne ©2007
Sun Enterprise 6000 Device-Transfer Rates
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.9
Silberschatz, Galvin and Gagne ©2007
How does processor talk to device?
Memory / I/O Bus
CPU
Interrupt
Controller
Bus
Adaptor
Other Devices
or Buses
Regular
Memory
Bus
Adaptor
Address+
Data
Interrupt Request
Device
Controller
Bus
Interface
read
write
control
status
Registers
(port 0x20)
Hardware
Controller
Addressable
Memory
and/or
Queues
CPU interacts with a Controller
Contains a set of registers that
can be read and written
Memory Mapped
May contain memory for request
Region: 0x8f008020
queues or bit-mapped images
Regardless of the complexity of the connections and buses, processor accesses
registers in two ways:
I/O instructions: explicit in/out instructions
Example from the Intel architecture: out 0x21,AB
Memory mapped I/O: load/store instructions
Registers/memory appear in physical address space
I/O accomplished with load and store instructions
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.10
Silberschatz, Galvin and Gagne ©2007
Device I/O Port Locations on PCs (partial)
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.11
Silberschatz, Galvin and Gagne ©2007
Memory-Mapped I/O (1)
(a)
(b)
(c)
Separate I/O and memory space.
Memory-mapped I/O.
Hybrid: control in I/O address, data in memory
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.12
Silberschatz, Galvin and Gagne ©2007
Memory-Mapped I/O (2)
(a) A single-bus architecture.
(b) A dual-bus memory architecture.
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.13
Silberschatz, Galvin and Gagne ©2007
Memory-Mapped I/O vs. Explicit I/O Instructions
Explicit I/O Instructions:
Must use assembly language
Prevents user-mode I/O
Memory-Mapped I/O:
No need for special instructions (can use in C)
Allows user-based I/O
Caching addresses must be prevented
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.14
Silberschatz, Galvin and Gagne ©2007
Notifying the OS: Polling
The OS needs to know when:
The I/O device has completed an operation
The I/O operation has encountered an error
One way is to Poll:
OS periodically checks a device-specific status
register
I/O device puts completion information in status
register
Busy-wait cycle to wait for I/O from device
Pro: simple, potentially low overhead
Con: may waste many cycles on polling if
infrequent, expensive, or unpredictable I/O
operations
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.15
Silberschatz, Galvin and Gagne ©2007
Notifying the OS: Interrupts
I/O Interrupt:
Device generates an interrupt whenever it needs
service
Pro: handles unpredictable events well
Con: interrupts relatively high overhead
Some devices combine both polling and interrupts
Example: Intel E1000 Gigabit Ethernet Adapter:
Interrupt for first incoming packet
Poll for subsequent packets until hardware
packet arrival queue is empty
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.16
Silberschatz, Galvin and Gagne ©2007
Interrupts (Revisited)
CPU Interrupt-request line triggered by I/O
device
Interrupt handler receives interrupts
Maskable to ignore or delay some interrupts
Interrupt vector to dispatch interrupt to correct
handler
Based on priority
Some nonmaskable
Interrupt mechanism also used for exceptions
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.17
Silberschatz, Galvin and Gagne ©2007
Interrupt-Driven I/O Cycle
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.18
Silberschatz, Galvin and Gagne ©2007
Intel Pentium Processor Event-Vector Table
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.19
Silberschatz, Galvin and Gagne ©2007
Precise and Imprecise Interrupts (1)
Properties of a precise interrupt:
1.
2.
3.
4.
PC (Program Counter) is saved in a known
place.
All instructions before the one pointed to by
the PC have fully executed.
No instruction beyond the one pointed to by
the PC has been executed.
Execution state of the instruction pointed to
by the PC is known.
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.20
Silberschatz, Galvin and Gagne ©2007
Precise and Imprecise Interrupts (2)
(a) A precise interrupt. (b) An imprecise interrupt.
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.21
Silberschatz, Galvin and Gagne ©2007
Transfering Data To/From Controller
Programmed I/O:
Each byte transferred via processor in/out or
load/store
Pro: Simple hardware, easy to program
Con: Consumes processor cycles proportional
to data size
Direct Memory Access:
Give controller access to memory bus
Ask it to transfer data to/from memory directly
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.22
Silberschatz, Galvin and Gagne ©2007
Programmed I/O (1)
Steps in printing a string.
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.23
Silberschatz, Galvin and Gagne ©2007
Programmed I/O (2)
Writing a string to the printer using programmed I/O.
Figure from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.24
Silberschatz, Galvin and Gagne ©2007
Direct Memory Access (DMA)
Used to avoid programmed I/O for large data movement
Requires DMA controller
Bypasses CPU to transfer data directly between I/O device and
memory
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.25
Silberschatz, Galvin and Gagne ©2007
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
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
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.26
Silberschatz, Galvin and Gagne ©2007
A Kernel I/O Structure
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.27
Silberschatz, Galvin and Gagne ©2007
Device Drivers
Device-specific code
in the kernel that
interacts directly with
the device hardware
Supports a
standard, internal
interface
Same kernel I/O
system can
interact easily with
different device
drivers
Special devicespecific
configuration
supported with the
ioctl() system
call
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.28
Silberschatz, Galvin and Gagne ©2007
Device Drivers
Device Drivers typically divided into two pieces:
Top half: accessed in call path from system calls
Implements a set of standard, cross-device calls
like open(), close(), read(), write(),
ioctl()
This
is the kernel’s interface to the device driver
Top half will start I/O to device, may put thread to
sleep until finished
Bottom half: run as interrupt routine
Gets input or transfers next block of output
May wake sleeping threads if I/O now complete
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.29
Silberschatz, Galvin and Gagne ©2007
Uniform Interfacing for Device Drivers
(a)
(b)
Without a standard driver interface.
With a standard driver interface.
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.30
Silberschatz, Galvin and Gagne ©2007
Characteristics of I/O Devices
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.31
Silberschatz, Galvin and Gagne ©2007
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
Single character at a time
Commands include get, put
Libraries layered on top allow line editing
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.32
Silberschatz, Galvin and Gagne ©2007
Network Devices
Different enough from block and character to
have own interface
Unix and Windows NT/9x/2000 include socket
interface
Separates network protocol from network
operation
Includes select functionality
Approaches vary widely (pipes, FIFOs, streams,
queues, mailboxes)
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.33
Silberschatz, Galvin and Gagne ©2007
Clock Devices and Timers
Maintaining the time of day
Accounting for CPU usage
Preventing processes from running longer than they
are allowed to
Handling alarm system call made by user
processes
Providing watchdog timers for parts of the system
itself.
Doing profiling, monitoring, statistics gathering
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.34
Silberschatz, Galvin and Gagne ©2007
Clock Hardware
A programmable clock.
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.35
Silberschatz, Galvin and Gagne ©2007
Clock Software (2)
Three ways to maintain the time of day.
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.36
Silberschatz, Galvin and Gagne ©2007
Clock Software (3)
Simulating multiple timers with a single clock.
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.37
Silberschatz, Galvin and Gagne ©2007
Blocking and Nonblocking I/O
Blocking Interface: “Wait”
When request data (e.g. read() system call), put process
to sleep until data is ready
When write data (e.g. write() system call), put process
to sleep until device is ready for data
Non-blocking Interface: “Don’t Wait”
Returns quickly from read or write request with count of
bytes successfully transferred
Read may return nothing, write may write nothing
Asynchronous Interface: “Tell Me Later”
When request data, take pointer to user’s buffer, return
immediately; later kernel fills buffer and notifies user
When send data, take pointer to user’s buffer, return
immediately; later kernel takes data and notifies user
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.38
Silberschatz, Galvin and Gagne ©2007
Two I/O Methods
Asynchronous
Synchronous
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.39
Silberschatz, Galvin and Gagne ©2007
Kernel I/O Subsystem
Scheduling
Some I/O request ordering via per-device 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”
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.40
Silberschatz, Galvin and Gagne ©2007
Buffering (1)
(a) Unbuffered input.
(b) Buffering in user space.
(c) Buffering in the kernel followed by copying to user space.
(d) Double buffering in the kernel.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.41
Silberschatz, Galvin and Gagne ©2007
Buffering (2)
Networking may involve many copies of a packet.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.42
Silberschatz, Galvin and Gagne ©2007
UNIX I/O Kernel Structure
Kernel keeps
state for I/O
components,
including open
file tables,
network
connections,
character
device state
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.43
Silberschatz, Galvin and Gagne ©2007
I/O Requests to Hardware 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
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.44
Silberschatz, Galvin and Gagne ©2007
Life Cycle of An I/O Request
User
Program
Kernel I/O
Subsystem
Device Driver
Top Half
Device Driver
Bottom Half
Device
Hardware
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.45
Silberschatz, Galvin and Gagne ©2007
Device-status Table
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.46
Silberschatz, Galvin and Gagne ©2007
I/O Subsystem Example: STREAMS
STREAM – a full-duplex communication channel
between a user-level process and a device in Unix
System V
A STREAM consists of:
- STREAM head interfaces with the user process
- Driver end interfaces with the device
- 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
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.47
Silberschatz, Galvin and Gagne ©2007
The STREAMS Structure
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.48
Silberschatz, Galvin and Gagne ©2007
I/O 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:
Use DMA
Reduce/eliminate data copying
Reduce number of context switches
Reduce interrupts by using large transfers,
smart controllers, polling
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.49
Silberschatz, Galvin and Gagne ©2007
Interaction of I/O and VM
The kernel deals with (kernel) virtual addresses
These do not necessarily correspond to physical
addresses
Contiguous virtual addresses are probably not
contiguous in physical memory
Some systems have an I/O map — the I/O bus manager
has a (version of) the virtual memory map
More often, the kernel has to translate the virtual
addresses itself
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.50
Silberschatz, Galvin and Gagne ©2007
Other I/O Issues
Scatter/Gather I/O
Suppose we’re reading a single packet or disk block into two or
more non-contiguous pages
The I/O transfer has to use more than one (address, length) pair
for that transfer to scatter the data around memory
The same applies on output, where it has to be gathered from
different physical pages
Direct I/O
For efficiency, we may want to avoid copying data to/from user
space
Sometimes possible to do direct I/O
Must consult user virtual memory map for translation
Must lock pages in physical memory during I/O
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.51
Silberschatz, Galvin and Gagne ©2007
End of Chapter 13
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Silberschatz, Galvin and Gagne ©2007
Kernel I/O Subsystem
Caching - fast memory holding copy of data
Always just a copy
Key to performance
Spooling - hold a copy of output for a device
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 deallocation
Watch out for deadlock
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.53
Silberschatz, Galvin and Gagne ©2007
I/O Protection
User process may accidentally or purposefully
attempt to disrupt normal operation via illegal
I/O instructions
All I/O instructions defined to be privileged
I/O must be performed via system calls
Memory-mapped and I/O port memory
locations must be protected too
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.54
Silberschatz, Galvin and Gagne ©2007
Device-Functionality Progression
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.55
Silberschatz, Galvin and Gagne ©2007
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
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.56
Silberschatz, Galvin and Gagne ©2007
Device-Independent I/O Software
Functions of the device-independent I/O software.
Picture from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.57
Silberschatz, Galvin and Gagne ©2007
User-Space I/O Software
Layers of the I/O system and the main functions of each
layer.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
Operating System Concepts with Java – 7th Edition, Nov 15, 2006
13.58
Silberschatz, Galvin and Gagne ©2007