文章目录
【第七章】输入输出系统
| 本章概念
1.I/O系统的功能、模型和接口
- I/O系统 管理的主要对象: I/O设备和对应的 设备控制器
- I/O系统的主要任务: 完成用户提出的I/O请求、提高I/O速率、改善I/O设备的利用率
- I/O系统的基本功能: 够隐藏物理设备的细节、保证OS与设备无关、提高处理机和I/O设备的利用率、对I/O设备进行控制、确保对设备的正确共享、能够处理错误
- I/O软件的层次结构:
- 各种I/O模块之间的关系:I/O系统接口(上接口)、软件/硬件接口(下接口)、在上下接口之间是I/O系统
- I/O系统的分层:中断处理程序、设备驱动程序、与设备无关的I/O软件
- I/O系统接口:
- 块设备接口
- 流设备(字符设备)接口:get操作用于从字符缓冲区取得一个字符(到内存);put操作用于将一个新字符(从内存)输出到字符缓冲区网络
- 网络通信接口:OS提供相应的网络软件和网络通信接口,以使计算机能通过网络同网络上的其他计算机进行通信,或上网浏览信息
2.I/O设备和设备控制器
-
I/O设备的类型
- 按使用特性分类:存储设备、IO设备
- 按传输速率分类:低速、中速、高速设别
- 按信息交换单位分类:块设备、字符设备
- 按设备的共享属性分类:独占设备、共享设备
-
设备与控制器之间的接口: 设备并不是直接与CPU进行通信,而是与设备控制器通信
-
设备控制器
- 主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换
- 设备控制器是CPU与I/O设备之间的接口,接收从CPU发来的命令,并去控制I/O设备工作
- 设备控制器是一个可编址的设备。当仅控制一个设备时,它只有一个惟一的设备地址;若控制器可连接多个设备时,则每一个设备地址对应一个设备
- 设备控制器的基本功能:接收和识别命令、数据交换、标识和报告设备的状态、地址识别、数据缓冲区、差错控制
- 设备控制器的组成:设备控制器与处理机的接口、设备控制器与设备的接口、I/O逻辑
-
I/O通道
- 目的:使一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU从繁杂的I/O任务中解脱出来
- 通道是特殊处理机,但是区别在于通道的指令类型单一、没有自己的内存(与CPU共享)
- 类型:字节多路通道,数组选择通道,数组多路通道
- “瓶颈”问题:因为通道的价格昂贵,所以通道不足,造成“瓶颈”现象。
- 解决"瓶颈问题"的办法:增加设备到CPU间的通路而不增加通道,多通路方式不仅解决了“瓶颈”问题,而且提高了系统的可靠性
- 单通路 VS 多通路 IO系统
I/O设备的控制方式
-
使用轮询的可编程I/O方式(基本不用)
-
使用中断的可编程I/O方式(广泛采用)
-
直接存储器访问(DMA)方式(DMA的引入:进一步减少CPU对I/O设备的干预)
-
I/O通道控制方式
- 引入:是DMA方式的发展,可进一步减少CPU的干预
- 通道程序:由一系列通道指令所构成的。通道指令不同于CPU指令。指令包含:操作码、内存地址、计数、通道程序结束位P、记录结束位R。
3.中断和中断处理程序
- 什么是中断?
- 中断和陷入:中断(Interrupt)是指CPU对I/O设备发来的中断信号的一种响应 、 而 陷入(Trap)是指CPU内部事件所引起的中断
- 中断向量表、中断优先级
- 对多中断源的处理方式
- 中断源:引起中断的事件
- 当处理机正在处理一个中断时,又来了一个新的中断请求,有两种处理方式: 屏蔽(禁止)中断、嵌套中断
- 中断处理程序:测定是否有未响应的中断信号、保护被中断进程的CPU现场、转入相应的设备处理程序、处理中断、恢复CPU现场并退出中断
4.用户层的I/O软件
-
大部分I/O软件都放在OS内部,仍有一小部分在用户层
-
假脱机技术:
- 为了缓和CPU的高速性与I/O设备的低速性间的矛盾
- 利用一个程序模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上;用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备
- 外围操作与CPU对数据的处理同时进行,这种在联机情况下实现的同时外围操作称为假脱机技术
- 特点:提高了I/O的速度、将独占设备改造为共享设备、实现了虚拟设备功能
-
假脱机技术系统的组成
- 输入井和输出井:在磁盘上开辟的两个大存储空间<
- 输入缓冲区和输出缓冲区:缓和CPU和磁盘之间速度不匹配的矛盾
- 输入进程Spi:数据从输入设备通过输入缓冲区再送入输入井,当CPU需要输入数据时,直接从输入井读入内存
- 输出进程Sp:从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上
- 井管理程序:用于控制作业与磁盘井之间信息的交换
-
假脱机打印系统
- 打印机属于独占设备。利用SPOOLing技术,可将之改造为一台可供多个用户共享的设备,从而提高设备的利用率,也方便了用户
- 磁盘缓冲区:磁盘空间,暂存用户程序的输出数据;打印缓冲区:设在内存,暂存从磁盘缓冲区送来的数据;
-
共享打印机
-
假脱机的【管理进程】
①在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存。
②为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入表中,再将该表挂到假脱机文件队列上
-
假脱机的【打印进程】
①打印机空闲时,进程从请求打印队列的队首取出一张请求打印表。
②根据表中的要求 将要打印的数据,从输出井传送到内存缓冲区,再由打印机进行打印
③打印完,进程再次察看请求打印队列,若非空,重复上述工作,直到队列为空。
④进程才将自己阻塞起来。仅当下次再有打印请求时,进程才被唤醒
-
-
守护进程
- 方案修改:取消假脱机管理进程,为打印机建立一个守护进程,由它 执行一部分原来的假脱机管理进程的功能。
- 守护进程是允许使用打印机的唯一进程
5.缓冲区管理
- 缓冲区是一个存储区域,可以由专门的硬件组成;更多的是利用内存
- 缓冲管理的主要功能是组织好这些缓冲区,并提供获得和释放缓冲区的手段。
- 为什么要引入缓冲区?
- CPU与I/O设备间速度不匹配
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决数据粒度不匹配的问题
- 提高CPU与I/O设备之间的并行性
- 单缓冲
- 每当用户进程发出一I/O请求时,操作系统便在主存中为之分配一缓冲区
- 系统对每一块数据的处理时间为:Max(C,T)+M
- 双缓冲
- 在双缓冲时,系统处理一块数据的时间可以粗略地认为是Max(C,T),如果 C>T,则可使CPU不必等待设备输入
- 环形缓冲区
- 当输入与输出若两者的速度相差悬殊,双缓冲的效果则不够理想,不过可以随着缓冲区数量的增加,使情况有所改善
- 引入多缓冲机制,可将多个缓冲组织为循环缓冲
- 缓冲池
- 当系统较大时,将会有许多循环缓冲,这不仅要消耗大量的内存空间,而且利用率不高
- 为了提高缓冲区的利用率,引入公用缓冲池,在池中设置了多个可供若干个进程共享的缓冲区。
- 缓冲池的组成:空闲缓冲队列emq、空闲缓冲队列emq、输出队列out、收容输入缓冲区、 提取输入缓冲区、 收容输出缓冲区、 提取输出缓冲区。
- 工作方式:收容输入、提取输入、收容输出、提取输出
- 缓存
- 缓存是保存数据副本的高速内存区域
- 为了缓和CPU运行速率与内存读/写速率不匹配的矛盾
- 缓冲 VS 缓存:缓冲可以保存数据项的唯一的现有版本;缓存只是提供一个位于其他地方的数据项的更快存储副本;有时,同一个内存区,既可以是缓冲,也可以是缓存
6. 磁盘性能概述和磁盘调度
- 磁盘的结构
- 盘面(磁头):磁盘设备可包含一或多个盘片,每个盘片分为一个或两个盘面,每个面上有一个读写磁头
- 磁道(柱面):每个盘面可分成若干条磁道
- 扇区:每条磁道逻辑上分成若干个大小相同的扇区。每个扇区的大小相当于一个盘块(数据块)
- 每条磁道上可存储相同数目的二进制位
- 磁盘密度即每英寸中所存储的位数,显然是内层磁道的密度较外层磁 道的密度高。
- 数据的组织和格式
- 为了在磁盘上存储数据,必须先将磁盘格式化
- 每个扇区包括2个字段:标识符字段、数据字段
- 磁盘的类型
- 硬盘、软盘;
- 单片盘、多片盘;
- 固定头磁盘:每个磁道上都有一个读写磁头。
- 移动头磁盘:每个盘面仅配有一个磁头,能移动寻道
| 本章算法
1.单缓冲区和双缓冲区的处理时间计算
T:从磁盘把一块数据输入到缓冲区的时间
C:CPU对这块数据处理的时间。
M:操作系统将该缓冲区中的数据传送到工作区的时间
单缓冲区:系统对每一块数据的处理时间为:Max(C,T)+M
双缓冲区:系统对每一块数据的处理时间为:Max(C,T)
2.磁盘容量计算
容量=柱面×磁头×扇区,每扇区存放512B数据
3.磁盘访问时间的计算
-
磁盘在工作时是以恒定速率旋转
-
读写的过程:磁头必须移动到所要求的磁道上 → 等待所指定的扇区的开始位置旋转到磁头下 → 开始读写数据
-
磁盘的访问时间计算公式:寻道时间 + 旋转延迟时间(查询扇区平均时间) + 传输时间
-
寻道时间 = 启动磁臂的时间 + m*磁头移动 n 条磁道所花费的时间 m是一个常数,一般是 0.2。对于高速磁盘则小于 0.1
-
旋转延迟时间(查询扇区平均时间) = 0.5 * 1 / 转速 (转速的单位:r/s,注意换算。 本质:0.5 * 周期。 T = 1 / f)
4.磁盘调度算法 与 平均寻道时间的计算
-
磁盘调度的目标, 是使磁盘的平均寻道时间最小。
-
FCFS调度算法(先来先):根据进程请求访问磁盘的先后次序进行调度
SSTF调度算法(最短):寻找当前距离最近的磁头所在的磁道,以使每次的寻道时间最短,但不保证平均寻道时间最短
SCAN调度算法(反复循环扫描):①磁臂从磁盘的一端向另一段移动,沿途响应服务请求。②到达另一端时, 磁头改变移动方向,继续处理。磁头在磁盘上来回扫描
CSCDN调度算法(单向循环扫描):①磁头从磁盘一段移到另一端,随着移动不断的处理 请求。②到达另一端时, 立即返回相对的另一端,返回期间不处理任何请求
CLOOK调度算法(单项循环扫描,但是以最远请求为断点):①磁头只移动到一个方向上【最远的请求】为止!然后马上返回【另一端的最远请求】(而非另一端!)
5.磁盘传输文件耗时:知柱面查找时间、间隔柱面时间
| 课后简答题
1.试说明I/O系统的基本功能。
①隐藏物理设备的细节;
②保证OS与设备无关;
③提高处理机和IO设备的利用率;
④控制IO设备;
⑤确保对设备的正确共享;
⑥处理错误。
2.IO软件一般分为用户层软件、设备独立性软件、设备驱动程序和中断处理程序这4个层次,它们的基本功能分别是什么?请说明下列工作分别是在哪一层完成的?
( 1)向设备寄存器写命令。 —— 设备驱动管理器中完成
( 2)检查用户是否有权使用设备。 —— 设备独立性软件中完成
( 3)将二进制整数转换成ASCl的格式打印。 ——用户层软件中完成
(4)缓冲管理。 ——设备独立性软件中完成
3.设备控制器由哪几部分组成?为了实现 CPU与设备控制器之间的通信,设备控制器应具备哪些功能?
①设备控制器的组成部分主要包括设备控制器与CPU的接口、设备控制器与设备的接口、EO逻辑这3部分。
②设备控制器应具备接收和识别命令、交换数据、标志和报告设备的状态、缓冲地址、识别数据、控制差错等功能。
4.(考研真题)什么是通道?通道经常采用图1-7-1所示的交叉连接方式,为什么?
①通道是一种特殊的处理机,它具有执行UO指令的能力,并且可以通过执行通道I/O程序来控制1/O操作。
②图1-7-1中的交叉连接主要是为了解决通道的瓶颈问题。之所以会产生瓶颈问题,是因为通道价格昂贵,设置的通道数量较少,导致系统吞吐量下降。交叉连接的多通路方式不仅解决了瓶颈问题,还提高了系统可靠性。
5.设备中断处理程序通常须完成哪些工作?它对中断进行处理的过程包含哪些步骤?
设备中断处理程序要完成:
①唤醒被阻塞的驱动进程;
②保存被中断进程的CPU现场信息;
③转人相应的设备处理程序;
④处理中断;
⑤恢复被中断进程的CPU现场。
对中断进行处理的过程为:
①测定是否有未响应的中断信号;
②保护被中断进程的CPU现场;
③转人相应的设备处理程序;
④处理中断;
⑤恢复CPU现场并退出中断。
6.(考研真题)为什么要有设备驱动程序?用户进程是如何通过设备驱动程序来控制设备工作的?
设备驱动程序与硬件密切相关,主要负责接收上层软件发来的IO指令,并将其转换成具体要求发送给设备控制器;
反之,也将来自设备控制器的信号传送给上层软件。采用设备驱动程序实现IO系统的高层与设备控制器之间的通信,驱动I/O设备工作。
用户进程通过设备驱动程序控制设备工作的过程为:
①接收由用户进程发来的IO命令和参数,并将命令中的抽象要求转换为具体要求,如将磁盘盘块号转换为磁盘的盘面、磁道和扇区号;
②检查用户I/O请求的合法性,如果请求不合法,则拒绝接收I/O请求并反馈用户进程;
③了解I/O设备的状态,如果设备准备就绪,则可由设备控制器设置设备的工作方式、传递有关参数;否则,将请求者的请求块挂到设备请求队列上等待;
④发出I/O命令,如果设备空闲,则立即启动EO设备,完成指定的U/O操作。
7,推动IO控制方式发展的主要因素是什么?
①尽量减少CPU对1/O控制的干预,把CPU从繁杂的IO控制中解脱出来,以便更多地去完成数据处理任务;
②缓和CPU的高速性和设备的低速性之间速度不匹配的矛盾,以提高CPU利用率和系统吞吐量;
③提高CPU和1/O设备操作的并行程度,使CPU和L/O设备都处于忙碌状态,提高整个系统的资源利用率和系统吞吐量。
8.请说明中断驱动1/O方式和DMA ( direct memory access,直接存储器访问)方式有什么不同。
它们主要在以下两个方面有不同。
(1) VO中断频率。
在中断驱动1/0方式中,每当输入数据缓冲寄存器中装满输入数据或将输出数据缓冲寄存器中的数据输出之后,设备控制器就会发生- -次中断, 由于设备控制器中配置的数据缓冲寄存器通常较小,如1个字节或1个字,因此中断比较频繁。
而在DMA方式中,在DMA控制器的控制下,-次能完成一批连续数据的传输, 并在整批数据传送完成后才发生一次中断,因此可大大减少CPU处理1/O中断的时间。
(2)数据的传送方式。
在中断驱动VO方式中,由CPU直接将输出数据写人控制器的数据缓冲寄存器中以供设备输出,或在中断发生后直接从数据缓冲寄存器中取出输人数据以供进程处
理,即数据的传送必须经过CPU;
而在DMA方式中,数据传送是在DMA控制器的控制下直接在
内存和10设备间进行的,CPU只须将磁盘地址、内存地址和字节数传给DMA控制器即可。
9.设备无关性的基本含义是什么?为什么要设置设备无关性软件?
为了提高OS的可适应性和可扩展性,在现代OS中都实现了设备无关性(设备独立性),其基本含义是应用程序独立于物理设备。
为了实现设备无关性,引人了逻辑设备和物理设备这两个概念。在应用程序中,可通过逻辑设备名称请求使用某类设备;而系统在实际执行时,必须使用其对应的物理设备名称,应用程序应与实际使用的物理设备无关
设置设备无关性软件的目的是:①增加设备分配的灵活性;②实现I/O重定向。当IO设备被更换时不必改变应用程序,即IO重定向
10.设备分配过程中可能会出现死锁吗?为什么?
在设备分配过程中,如果在进程发出IO请求后,系统为其分配了IO设备,则进程仍继续运行;
运行中再次发出新的I/O请求,只有当某个请求不满足时,进程才会阻塞。这种情况下,一个进程可以同时使用多个设备。虽然进程推进迅速,但此时的资源分配方式是不安全的,可能会发生死锁。
11.SPOOLing ( simultaneous peripheral operations on-line,假脱机)系统由哪几部分组成?以打印机为例,说明如何利用SPOOLing技术实现多个进程对打印机的共享?
SPOOLing系统由磁盘上的输入井和输出井、内存中的输入缓冲区和输出缓冲区、输人进程和输出进程以及井管理程序组成。
采用SPOOLing技术共享打印机时,对所有提出输出请求的用户进程,系统接受它们的请求时,并不真正分配打印机,而是由SPOOLing管理进程做两件事情:
①在输出井中为它申请一空闲缓冲区,并将要打印的数据送入其中;
②为用户进程申请一张空白的用户打印请求表,并将用户的打印请求填入该表中,再将该表挂到SPOOLing文件队列上。
12.(考研真题)在单缓冲区情况下,为什么系统对一块数据的处理时间为max (C,T) + M?
以输入为例,假定从磁盘中把一块数据输入缓冲区的时间为T;
OS将缓冲区数据传送到用户区的时间为M;
CPU对这块数据进行计算的时间为C。
在单缓冲区情况下,由于设备的输入操作和CPU的处理操作可以并行执行,因此系统对每一整块数据的处理时间为max (C.T) +M。