第十三章

Download Report

Transcript 第十三章

Chapter 13: I/O Systems
 13.2 I/O Hardware





I/O硬件
13.3 Application I/O Interface 应用程序I/O接口
13.4 Kernel I/O Subsystem
核心I/O子系统
13.5 Transforming I/O Requests to Hardware
Operations
转换I/O请求为硬件操作
13.6 STREAMS
流
13.7 Performance
性能
Operating System Concepts
13.1
Silberschatz, Galvin and Gagne 2002
13.1 Overview
 Main job of a computer:I/O and processing
 Role of the I/O system
 Manage and control I/O operations and I/O
devices
 Two conflicting trends:
 Increasing standardization of software and
hardware interfaces
 Increasingly broad variety of I/O devices
Operating System Concepts
13.2
Silberschatz, Galvin and Gagne 2002
 外设的特点:
 种类多
 差异大(控制和速度)
 外设管理目的包括:
 外设资源的控制
 外设资源的共享
 提高外设资源的利用率。
Operating System Concepts
13.3
Silberschatz, Galvin and Gagne 2002
外部设备类型和特征
1. 按交互对象分类
 人机交互设备:视频显示设备、键盘、鼠标、打印机
 与计算机或其他电子设备交互的设备:磁盘、磁带、
传感器、控制器
 计算机间的通信设备:网卡、调制解调器
Operating System Concepts
13.4
Silberschatz, Galvin and Gagne 2002
2. 按交互方向分类
 输入(可读):键盘、扫描仪
 输出(可写):显示设备、打印机
 输入/输出(可读写):磁盘、网卡
3. 按外设特性分类
 使用特征:存储、输入/输出、终端
 数据传输率:低速(如键盘)、中速(如打印机)、高速(
如网卡、磁盘)
 信息组织特征:单个字符或数据块
 字符设备(如打印机)
 块设备(如磁盘)
Operating System Concepts
13.5
Silberschatz, Galvin and Gagne 2002
13.2 I/O Hardware
 Incredible variety of I/O devices 难以置信的I/O设备种类
 Storage devices
 Transmission devices
 Human-interface devices
 Common concepts
基本概念
 Port 端口 – a connection point between a device
and a computer
 Bus (daisy chain or shared direct access)
总线:菊花链或者共享总线
 Controller (host adapter)
控制器(主机适配器)
A collection of electronics that can operate a
port, a bus, or a device
Serial-port controller, SCSI bus controller …
Operating System Concepts
13.6
Silberschatz, Galvin and Gagne 2002
Fig 13.1 A Typical PC Bus Structure
Operating System Concepts
13.7
Silberschatz, Galvin and Gagne 2002
13.2 I/O Hardware
I/O控制技术
 I/O instructions control devices
I/O指令控制设备
 Devices have addresses, used by 设备的寻址方式
 Direct I/O instructions
直接I/O指令
 Memory-mapped I/O
存储器映射I/O指令
 Device-control registers are mapped into the
address space of the CPU
 Such as screen buffer of the graphic controller
 An typical I/O port include 4 registers:
 Status
 Control
 Data-in
 Data-out
Operating System Concepts
13.8
Silberschatz, Galvin and Gagne 2002
Fig 13.2 Device I/O Port Locations on PCs (partial)
Operating System Concepts
13.9
Silberschatz, Galvin and Gagne 2002
I/O控制技术
1. 程序控制I/O(programmed I/O)
 I/O操作由程序发起,并等待操作完成。数据的每次读
写通过CPU。常用的技术:轮询(polling)
 缺点:在外设进行数据处理时,CPU只能等待。
2. 中断驱动方式(interrupt-driven I/O)
 I/O操作由程序发起,在操作完成时(如数据可读或已
经写入)由外设向CPU发出中断,通知该程序。数据
的每次读写通过CPU。
 优点:在外设进行数据处理时,CPU不必等待,可以
继续执行该程序或其他程序。
 缺点:CPU每次处理的数据量少(通常不超过几个字
节),只适于数据传输率较低的设备。
Operating System Concepts
13.10
Silberschatz, Galvin and Gagne 2002
3. 直接存储访问方式(DMA, Direct Memory Access)
 由程序设置DMA控制器中的若干寄存器值(如
内存始址,传送字节数),然后发起I/O操作。
而后者完成内存与外设的成批数据交换,在操作
完成时由DMA控制器向CPU发出中断。
 优点:CPU只需干预I/O操作的开始和结束,而
其中的一批数据读写无需CPU控制,适于高速设
备。
System Bus
Processor
Operating System Concepts
DMA
Controller
I/O
Controller
13.11
.....
I/O
Controller
Memory
Silberschatz, Galvin and Gagne 2002
4. 通道控制方式(channel control)
 通道控制器(Channel Processor)有自己的专用存储
器,可以执行由通道指令组成的通道程序,因此可
以进行较为复杂的I/O控制,如网卡上信道访问控制
。通道程序通常由操作系统所构造,放在内存里。
 优点:执行一个通道程序可以完成几批I/O操作。
 选择通道(selector channel):可以连接多个外设
,而一次只能访问其中一个外设
 多路通道(multiplexor channel):可以并发访问
多个外设。分为字节多路(byte)和数组多路
(block)通道。
Operating System Concepts
13.12
Silberschatz, Galvin and Gagne 2002
13.2.1 Polling 轮询
 Determines state of device
决定设备的状态
 command-ready(等待命令)
 Busy(忙)
 Error(错误)
 Busy-wait cycle to wait for I/O from device
忙等待循环等待设备的I/O操作
 I/O操作由程序发起,并等待操作完成。数据的每次读写通
过CPU。
 缺点:在外设进行数据处理时,CPU只能等待。
Operating System Concepts
13.13
Silberschatz, Galvin and Gagne 2002
13.2.2 Interrupts 中断
 CPU Interrupt request line triggered by I/O device
CPU的中断需要有I/O设备的触发
 Interrupt handler receives interrupts
中断处理例程接收中断
 Maskable to ignore or delay some interrupts
通过屏蔽来忽略或者延迟某些中断
 Some un-maskable
某些中断不可屏蔽
 Maskable
 nonmaskable
Operating System Concepts
13.14
Silberschatz, Galvin and Gagne 2002
Interrupts 中断
 Interrupt vector to dispatch interrupt to correct handler
中断向量给中断分配正确的中断处理例程
 Based on priority
以优先级为基础
 Interrupt priority levels
 Interrupt mechanism also used for exceptions
中断机制也用于异常处理, 如:除零,访问不存在的内存
地址等
 Software interrupt (or a trap)
Operating System Concepts
13.15
Silberschatz, Galvin and Gagne 2002
Fig 13.3 Interrupt-Driven I/O Cycle
中断驱动的I/O循环
Operating System Concepts
13.16
Silberschatz, Galvin and Gagne 2002
Fig 13.4 Intel Pentium Processor Event-Vector Table
Operating System Concepts
13.17
Silberschatz, Galvin and Gagne 2002
13.2.3 Direct Memory Access直接内存存取
 Used to avoid programmed I/O for large data




movement
用来避免编程I/O来传输大量的数据
Requires DMA controller
需要DMA控制器
Bypasses CPU to transfer data directly between I/O
device and memory
绕过CPU在I/O设备和内存之间直接传输数据
Cycle stealing
Memory access
 Physical memory addresses for DMA
 Direct virtual-memory access (DVMA), using virtual
address
Operating System Concepts
13.18
Silberschatz, Galvin and Gagne 2002
Fig 13.6 Six Step Process to Perform DMA Transfer
通过六步来完成DMA传输
Operating System Concepts
13.19
Silberschatz, Galvin and Gagne 2002
直接存储访问方式(DMA, Direct Memory
Access)
 由程序设置DMA控制器中的若干寄存器值(如内存
始址,传送字节数),然后发起I/O操作。而后者完
成内存与外设的成批数据交换,在操作完成时由
DMA控制器向CPU发出中断。
 优点:CPU只需干预I/O操作的开始和结束,而其中
的一批数据读写无需CPU控制,适用于高速设备。
System Bus
Processor
Operating System Concepts
DMA
Controller
I/O
Controller
13.20
.....
I/O
Controller
Memory
Silberschatz, Galvin and Gagne 2002
Data
Count
Data Lines
Address Lines
DMA Request
DMA Acknowledge
Interrupt
Read
Write
Data
Register
Address
Register
Control
Logic
DMA方式下的I/O控制器结构
13.2.4 通道控制方式(channel control)
 通道控制器(Channel Processor)有自己的专用存储
器,可以执行由通道指令组成的通道程序,因此可
以进行较为复杂的I/O控制,如网卡上信道访问控制
。通道程序通常由操作系统所构造,放在内存里。
 优点:执行一个通道程序可以完成几批I/O操作。
 选择通道(selector channel):可以连接多个外设
,而一次只能访问其中一个外设
 多路通道(multiplexor channel):可以并发访问
多个外设。分为字节多路(byte)和数组多路
(block)通道。
Operating System Concepts
13.22
Silberschatz, Galvin and Gagne 2002
System Bus
Processor
Channel
Processor
Memory
I/O Bus
I/O
Controller
I/O
Controller
I/O
Controller
I/O
Controller
13.3 Application I/O Interface
应用程序I/O接口
 I/O system calls encapsulate device behaviors in
generic classes 将I/O子系统设备分为几个常用的类别
 Device-driver layer hides differences among I/O
controllers from kernel
设备驱动层对OS核心隐藏了I/O控制器的不同细节
 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
13.24
Silberschatz, Galvin and Gagne 2002
Fig 13.6 A Kernel I/O Structure
Operating System Concepts
13.25
Silberschatz, Galvin and Gagne 2002
Fig 13.7 Characteristics of I/O Devices
Operating System Concepts
13.26
Silberschatz, Galvin and Gagne 2002
13.3.1 Block and Character Devices
块或字符设备
 Block devices include disk drives
块设备包括磁盘
 Commands include read, write, seek
命令包括读,写,搜寻
 Raw I/O or file-system access
原始的I/O或文件系统存取
 Memory-mapped file access possible
存储器映射文件访问的可能性
 Character devices include keyboards, mice, serial
ports字符设备包括键盘,鼠标, Modem和串口设备
 Commands include get, put
命令有get,put
 Libraries layered on top allow line editing
顶层的函数库允许行编辑
Operating System Concepts
13.27
Silberschatz, Galvin and Gagne 2002
13.3.2 Network Devices网络设备
 Varying enough from block and character to have own
interface
从块设备和字符设备变化而来,有独自的接口
 Unix and Windows NT/9i/2000 include socket interface
Unix和Windows/NT包括socket接口
 Separates network protocol from network operation
分离网络协议于网络操作
 Includes select functionality
包括select功能—manage a set of sockets
 Approaches vary widely (half-duplex pipes, full-duplex
FIFOs, full-duplex streams, queues, mailboxes, socket)
方式广泛:管道,FIFOs,流,队列,邮箱
Operating System Concepts
13.28
Silberschatz, Galvin and Gagne 2002
13.3.3 Clocks and Timers时钟和记时器
 Provide current time, elapsed time, timer
提供当前的时间,经过的时间,定时器
 If programmable interval time used for timings,
periodic interrupts
如果把可编程的时间间隔用于计时,那么定期中断
 programmable interval timer -- the hardware to
measure elapsed time and to trigger operations
 ioctl (on UNIX) covers odd aspects of I/O such as
clocks and timers
在UNIX中,ioct1掩盖了I/O设备(象时钟和计时器)之
间区别
Operating System Concepts
13.29
Silberschatz, Galvin and Gagne 2002
13.3.4 Blocking and Nonblocking I/O
阻塞和非阻塞I/O
 Blocking - process suspended until I/O completed
阻塞—当执行可阻塞I/O系统调用时,进程挂起直到I/O完成
 Easy to use and understand
容易使用和理解
 Insufficient for some needs 在某些场合没有效率
 Nonblocking - I/O call returns as much as available
非阻塞—I/O调用返回一个代表是否成功的值
 User interface, data copy (buffered I/O)
用户界面(键盘、鼠标输入)的同时显示视频、数据拷贝(对I/O缓冲)
 Implemented via multi-threading
通过多线程来实现
 Returns quickly with count of bytes read or written
迅速的返回读写的字节数
 Asynchronous - process runs while I/O executes
异步:在I/O处理的时候进程同时运行
 Difficult to use 难以使用
 I/O subsystem signals process when I/O completed
当I/O操作完成的时候,I/O子系统向进程发信号
Operating System Concepts
13.30
Silberschatz, Galvin and Gagne 2002
13.4 Kernel I/O Subsystem
核心I/O子系统
 Kernel provide many services related to I/O:
 Scheduling
 Buffering
 Caching
 Spooling
 Device reservation
 Error handling
Operating System Concepts
13.31
Silberschatz, Galvin and Gagne 2002
13.4.1 I/O Scheduling
 Improve overall system performance
 Share device access fairly among processes
 Reduce the average waiting time for I/O to
complete
 Example: disk arm serves for many processes
at same time
 Rearrange: some I/O request ordering via perdevice queue to improve the overall system
efficiency。为改善系统性能,某些I/O需要按设备队
列的进行排序
 Some OSs try fairness 某些操作系统尝试着公平
Operating System Concepts
13.32
Silberschatz, Galvin and Gagne 2002
13.4.2 I/O Buffering
 Buffering - store data in memory while transferring
between devices
缓冲—当设备间传输数据的时候,暂时存放在内存中
 引入缓冲的理由:
 To cope with device speed mismatch
解决设备速度不匹配。例如:Modem/Disk
 To cope with device transfer size mismatch
解决设备传输块的大小不匹配。例如:网络的拆包和
装包
 To maintain “copy semantics”
为了维持拷贝语句的语义要求。确保数据的一致性
Operating System Concepts
13.33
Silberschatz, Galvin and Gagne 2002
Fig 13.8 Sun Enterprise 6000 Device-Transfer Rates
Operating System Concepts
13.34
Silberschatz, Galvin and Gagne 2002
缓冲技术
缓冲技术可提高外设利用率,尽可能使外设处于忙状态
;但有一个限制:进程的I/O请求不能超过外设的处理
能力。
1. 引入缓冲技术的目的
 匹配CPU或用户应用进程与外设的不同处理速度
 减少对CPU的中断次数,提高CPU和I/O设备之间以及
各个I/O设备之间的处理并行性。因此,缓冲区所在的
位置:内存,控制器或外设。这些在不同位置的缓冲区
组合在一起,构成多级缓冲机制。
Operating System Concepts
13.35
Silberschatz, Galvin and Gagne 2002
2. 单方向缓冲
 单缓冲(single buffer):一个缓冲区,CPU和外设轮流使用,
一方处理完之后接着等待对方处理。
 双缓冲(double buffer):两个缓冲区,CPU和外设都可以连
续处理而无需等待对方。要求CPU和外设的速度相近。
 环形缓冲(circular buffer):多个缓冲区,CPU和外设的处
理速度可以相差较大。
Operating System Concepts
13.36
Silberschatz, Galvin and Gagne 2002
3. 缓冲池(buffer pool)
 这是一种双方向缓冲技术;缓冲区整体利用率高。
 缓冲区队列:三种:空闲缓冲区,输入缓冲区,输出缓冲
区
 操作:四种:设备输入,CPU读入,设备输出,CPU写
出。上述操作访问各个缓冲区队列时,需要进行相应的互
斥操作。
Buffer Pool
in queue
Device
empty queue
CPU
out queue
Operating System Concepts
13.37
Silberschatz, Galvin and Gagne 2002
13.4.3 Caching
 Caching – a region of fast memory holding copies of
data
高速缓存—存放数据的快速存储器
 Always just a copy 总是数据的拷贝
 Key purpose: to improve I/O performance and
efficiency
 Caching and buffering are distinct(截然不同的)
functions ,but sometimes a region of memory can
be used for both purposes
Caching: to improve performance
Buffering: to cope with device transfer speed and size
mismatch 解决设备传输块的速度与大小的不匹配
Operating System Concepts
13.38
Silberschatz, Galvin and Gagne 2002
13.4.4 Spooling(假脱机技术)
 A spool is a buffer that holds output for a device,
such as a printer, that cannot accept interleaved
data streams
 Spooling - hold output for a device
spooling—保存设备的输出
 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
13.39
Silberschatz, Galvin and Gagne 2002
假脱机技术
 利用假脱机技术(SPOOLing, Simultaneous
Peripheral Operation On Line, 也称为虚拟设备技术
)可把独享设备转变成具有共享特征的虚拟设备,从而
提高设备利用率。
 引入:在多道批处理系统中,专门利用一道程序(
SPOOLing程序)来完成对设备的I/O操作。无需使用
外围I/O处理机。
Virtual I/O
Actual I/O
Application A
Application B
Operating System Concepts
SPOOLing
Program
13.40
Device
Silberschatz, Galvin and Gagne 2002
假脱机技术
 假脱机的原理:
 SPOOLing程序和外设进行数据交换,可以称为“
实际I/O”。一方面,SPOOLing程序预先从外设输入
数据并加以缓冲,在以后需要的时候输入到应用程
序;另一方面,SPOOLing程序接受应用程序的输
出数据并加以缓冲,在以后适当的时候输出到外设
。
 在SPOOLing程序中,需要管理两级缓冲区:内存
缓冲区和快速外存上的缓冲池,后者可以暂存多批
I/O操作的较多数据。
 应用程序进行I/O操作时,只是和SPOOLing程序交
换数据,可以称为"虚拟I/O"。这时虚拟I/O实际上是
从SPOOLing程序的缓冲池中读出数据或把数据送
入缓冲池,而不是跟实际的外设进行I/O操作。
Operating System Concepts
13.41
Silberschatz, Galvin and Gagne 2002
假脱机技术
 优点:
 高速虚拟I/O操作:应用程序的虚拟I/O比实际I/O速
度提高,缩短应用程序的执行时间。另一方面,程
序的虚拟I/O操作时间和实际I/O操作时间分离开来
。
 实现对独享设备的共享:由SPOOLing程序提供虚
拟设备,可以对独享设备依次共享使用。
 举例:打印机设备和可由打印机管理器管理的打印作
业队列。
 如:Windows NT中,应用程序直接向针式打印机
输出需要15分钟,而向打印作业队列输出只需要1
分钟,此后用户可以关闭应用程序而转入其他工作
,在以后适当的时候由打印机管理器完成15分钟的
打印输出而无需用户干预。
Operating System Concepts
13.42
Silberschatz, Galvin and Gagne 2002
13.4.5 Error Handling 错误处理
 OS can recover from disk read, device unavailable, transient
write failures
操作系统可以从有些磁盘读、设备无效等暂时的(transient)失败中
恢复过来(例如通过read retry, resend等)。
有些则是不可恢复的(permanent),如硬盘控制器坏。
 Most return an error number or code when I/O request fails
I/O系统调用时,如果I/O失败,大多数返回一个错误码
 Unix 中,用errno来描述
 或者用更为详细信息描述出错信息。例如 在SCSI中,用下列信息描述
各种状态:
 Sense key
 Additional sense code
 Additional sense-code qualifier
 System error logs hold problem reports
系统日志记录了出错报告
Operating System Concepts
13.43
Silberschatz, Galvin and Gagne 2002
13.4.6 Kernel Data Structures
核心数据结构
 Kernel keeps state info for I/O components,
including open file tables, network connections,
character device state 核心保存着I/O组件的状态,包
括打开文件表,网络连接,字符设备状态
 Many, many complex data structures to track
buffers, memory allocation, “dirty” blocks
许多的数据结构是为了记录缓冲、内存分配和“脏”块
 Some use object-oriented methods and message
passing to implement I/O
有些OS用面向对象的方法和消息机制来实现I/O
Operating System Concepts
13.44
Silberschatz, Galvin and Gagne 2002
Fig 13.9 UNIX I/O Kernel Structure
Operating System Concepts
13.45
Silberschatz, Galvin and Gagne 2002
 In summary, I/O subsystem supervises:
 The management of the name space for files and
devices
 Access control to files and devices
 Operation control (for example, a modem can’t seek())
 File system space allocation
 Device allocation
 Buffering, caching and spooling
 I/O scheduling
 Device status monitoring, error handling and failure
recovery
 Device driver configuration and initialization
Operating System Concepts
13.46
Silberschatz, Galvin and Gagne 2002
13.5 Transforming I/O to Hardware Operations
转换I/O请求为硬件操作
I/O Requests to Hardware Operations I/O请求到硬件操作
 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
13.47
Silberschatz, Galvin and Gagne 2002
Fig 13.10 Life Cycle of An I/O Request I/O请求的周期
Operating System Concepts
13.48
Silberschatz, Galvin and Gagne 2002
13.6 STREAMS 流
 STREAM – a full-duplex communication channel between a user-
level process and a device
 Stream (char, no record file) block, record file in file system
 A STREAM consists of:
- STREAM head interfaces with the user process
- driver end interfaces with the device
- zero or more STREAM modules between them.
 Stream modules
 Support flow control
 Each module contains a read queue and a write queue
 Read(), getmsg() -- when a user process reads data from the streams
 Write(), putmsg() -- when a user process writes to a device
 Message passing is used to communicate between queues
 Benefits of using STREAMS:
 Provide a framework to a modular and incremental approach to writing
device drivers and network protocols
Operating System Concepts
13.49
Silberschatz, Galvin and Gagne 2002
Fig 13.11 The STREAMS Structure
Operating System Concepts
13.50
Silberschatz, Galvin and Gagne 2002
13.7 Performance
性能
 I/O is a major factor in system performance:
I/O是系统性能的主要因素
 Demands CPU to execute device driver, kernel I/O
code 需要CPU执行设备驱动,核心I/O代码
 Context switches due to interrupts
因为中断而导致的上下文转换
 Data copying 数据拷贝
 Network traffic especially stressful
网络状况尤其重要
Operating System Concepts
13.51
Silberschatz, Galvin and Gagne 2002
Fig 13.12 Intercomputer Communications
Operating System Concepts
13.52
Silberschatz, Galvin and Gagne 2002
 Other system use separate front-end
processors for terminal I/O, to reduce
the interrupt burden on the main CPU,
for example:
 A terminal concentrator
 An I/O channel
Operating System Concepts
13.53
Silberschatz, Galvin and Gagne 2002
Several principles to improve performance
改进性能几个原则
 Reduce number of context switches 减少上下文转换数
 Reduce data copying 减少数据的拷贝量
 Reduce interrupts by using large transfers, smart
controllers, polling 通过使用一次大量数据传输,智能控
制器和轮换来减少中断
 Use DMA
使用DMA
 Balance CPU, memory, bus, and I/O performance for
highest throughput 平衡CPU,内存,总线和I/O性能以
达到高吞吐率
Operating System Concepts
13.54
Silberschatz, Galvin and Gagne 2002
Fig 13.13 Device-Functionality Progression
Operating System Concepts
13.55
Silberschatz, Galvin and Gagne 2002