第6章 输入输出系统
一、I/O 系统的功能、模型和接口 1.I/O 系统的基本功能
(1)隐藏物理设备的细节。
(2)与设备的无关性。
(3)提高处理机和I/O 设备的利用率。 ( 4 ) 对I/O 设备进行控制。
(5)确保对设备的正确共享。
(6)错误处理。
2.I/O 系统的层次结构和模型
(1)I/O 软件的层次结构
如图6-1所示为I/O 系统的层次结构,图中的箭头表示I/O 的控制流:
图6-1 I/O 系统的层次结构
(2)I/O 系统中各种模块之间的层次视图
如图6-2所示,I/O 系统中各种I/O 模块之间的层次视图。
图6-2 I/O 系统中各种模块之间的层次视图
3.I/O 系统接口
在I/O 系统与高层之间的接口中,根据设备类型的不同,又进一步分为:
(1)块设备接口。
(2)流设备接口(字符设备接口)。
(3)网络通信接口。
二、I/O 设备和设备控制器
1.I/O 设备
(1)I/O 设备的类型
①按使用特性分类
I/O 设备按照使用特性分为存储设备和I/O 设备,其中I/O 设备又可分为输入设备、输出设备和交互式设备。
②按传输速率分类
从设备的传输速率上I/O 设备又分为低速设备、中速设备和高速设备。
③信息交换的单位
I/O 设备按照信息交换的单位分为块设备和字符设备。
(2)设备与控制器之间的接口
设备并不是直接与CPU 进行通信,而是与设备控制器通信,因此,在I/O 设备中应含有与设备控制器间的 接口,在该接口中有三种类型的信号(见图6-3所示),各对应一条信号线。三种信号线中只有数据线是双向的。
2. 设备控制器
(1)设备控制器的基本功能
①接收和识别命令。
②数据交换。
③标识和报告设备的状态。
④地址识别。
⑤数据缓冲区。
⑥差错控制。
(2)设备控制器的组成
设备控制器的组成如图6-4所示,包括:
①设备控制器与处理机的接口。
②设备控制器与设备的接口。
③I/O 逻辑。
图6-4 设备控制器的组成
3.I/O 通道
(1)I/O 通道设备的引入 ①定义
I/O 通道是专门负责输入/输出的处理机。
②与一般处理机的差别
a. 其指令类型单一;
b. 通道没有自己的内存,通道程序是放在主机的内存中的,即通道与CPU 共享内存。
(2)通道类型
根据信息交换方式的不同,可把通道分成以下三种类型:
①字节多路通道。
②数组选择通道。
③数组多路通道。
三、中断机构和中断处理程序
1. 中断简介
(1)中断和陷入 ①中断
中断是指CPU 对 I/O 设备发来的中断信号的一种响应。中断是由外部设备引起的,故又称外中断。 ②陷入
a. 定义
陷入是指一种由CPU 内部事件所引起的中断,也称为内中断。
b. 与中断的区别
中断和陷入的主要区别是信号的来源,即是来自CPU 外部,还是CPU 内部。
(2)对多中断源的处理方式
①屏蔽(禁止)中断。
②嵌套中断。
2. 中断处理程序
中断处理程序的处理过程可分成以下几个步骤:
(1)测定是否有未响应的中断信号。
(2)保护被中断进程的CPU 环境。
(3)转入相应的设备处理程序。
(4)中断处理。
(5)恢复CPU 的现场并退出中断。 中断的处理流程如图6-5所示。
图6-5 中断处理流程
四、设备驱动程序
1. 设备驱动程序概述
(1)设备驱动程序的功能
①接收由与设备无关的软件发来的命令和参数,并将命令中的抽象要求转换为与设备相关的低层操作序列。
②检查用户I/O 请求的合法性,了解I/O 设备的工作状态,传递与I/O 设备操作有关的参数,设置设备的工 作方式。
③发出I/O 命令,如果设备空闲,便立即启动I/O 设备,完成指定的I/O 操作;如果设备忙碌,则将请求者 的请求块挂在设备队列上等待。
④及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。
(2)设备驱动程序的特点
①驱动程序是实现在与设备无关的软件和设备控制器之间通信和转换的程序。
②不同类型的设备应配置不同的驱动程序。
③驱动程序与I/O 设备所采用的I/O 控制方式紧密相关。
④有很多驱动程序的基本部分已经固化在ROM 中。
⑤驱动程序应允许可重入。
(3)设备处理方式
①为每一类设备设置一个进程。
②在整个系统中设置一个I/O 进程。
③不设置专门的设备处理进程,而只为各类设备设置相应的设备驱动程序,供用户或系统进程调用。
2. 设备驱动程序的处理过程
(1)将抽象要求转换为具体要求。
(2)对服务请求进行校验。
(3)检查设备的状态。
(4)传送必要的参数。
(5)启动I/O 设备。
3 . 对I/O 设备的控制方式
(1)程序I/O 方 式
此时CPU 和 I/O 设备只能串行工作。图6-6(a) 示出了程序I/O 方式的流程。
图6-6 程序I/O 和中断驱动方式的流程
(2)使用中断的可编程I/O 方式
此时,CPU 与 I/O 设备并行操作。图6-6 (b) 显示了中断驱动方式的流程。
(3)直接存储器访问方式 (DMA)
图6-6 (c) 显示了DMA 方式的基本流程。
①DMA 方式的特点
a. 数据传输的基本单位是数据块,即在CPU 与 I/O 设备之间,每次传送至少一个数据块。
b. 所传送的数据是从设备直接送入内存的,或者相反。
c. 仅在传送一个或多个数据块的开始和结束时才需CPU 干预,整块数据的传送是在控制器的控制下完成的。
②DMA 控制器的组成
如图6-7所示,DMA控制器由主机与DMA 控制器的接口;DMA 控制器与块设备的接口;I/O控制逻辑三部分组成。
图6-7 DMA 控制器的组成
③DMA 工作过程
图6-8是DMA方式的工作流程。
图6-8 DMA 方式的工作流程图
【说明】DMA 方式在内存和I/O 设备之间开辟直接数据通道。
(4)I/O 通道控制方式
①I/O 通道控制方式的特点
a. 数据传输的基本单位是一组数据块。
b. 实现了CPU、通道和I/O 设备三者的并行操作。
②通道程序
通道程序是由一系列通道指令(或称为通道命令)所构成的。
五、与设备无关的I/O 软件
1. 基本概念
(1)I/O 重定向
所谓I/O 重定向,是指用于I/O 操作的设备可以更换(即重定向),而不必改变应用程序。
(2)设备无关性
即应用程序独立于具体使用的物理设备。
2.与设备无关的软件
(1)设备驱动程序的统一接口。
(2)缓冲管理。
(3)差错控制。
(4)对独立设备的分配与回收。
(5)独立于设备的逻辑数据块。
3. 设备分配
(1)设备分配中的数据结构
①设备控制表DCT
系统为每一个设备都配置了一张设备控制表,用于记录设备的情况,如图6-9所示。
图6-9 设备控制表
②控制器控制表、通道控制表和系统设备表
a. 控制器控制表 (COCT)
系统为每一个控制器都设置了用于记录控制器情况的控制器控制表,如图6-10(a)所示。
b. 通道控制表 (CHCT)
每个通道都有一张通道控制表,如图6-10(b)所示。
c. 系统设备表 (SDT)
记录了系统中全部设备的情况,每个设备占一个表目,如图6-10(c)所示。
图6-10 COCT 、CHCT和 SDT 表
(2)设备分配时应考虑的因素
①设备的固有属性。
②设备分配算法。
③设备分配中的安全性。
(3)独占设备的分配程序
首先分配设备,其次分配控制器,最后分配通道。
4. 逻辑设备名到物理设备名映射的实现
(1)逻辑设备表LUT
在逻辑设备表的每个表目中包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址。
(2)逻辑设备表的设置问题
①在整个系统中只设置一张 LUT。
②为每个用户设置一张LUT。
六、用户层的I/O 软件
1. 系统调用与库函数
(1)系统调用
系统调用将CPU 的状态从用户态转换到核心态,图6-11显示了系统调用的执行过程。
图6-11 系统调用的执行过程
(2)库函数
内核提供了OS 的基本功能,而库函数扩展了OS 内核,使用户能方便取得操作系统的服务。
2 .假脱机 (SPOOLing) 系统
(1)假脱机技术 (Simultaneaus Periphemal Operating OnLine,SPOOLing 技术)
把在联机情况下外围操作与CPU 对数据的处理同时进行的技术称为SPOOLing 技术,或称为假脱机技术。
(2)SPOOLing 的组成
如图6-12 (a) 所示为SPOOLing系统的组成。SPOOLing的工作原理如图6-12 (b) 所示。
图6-12 SPOOLing 系统组成及工作原理 SPOOLing 系统主要由以下四部分构成:
①输入井和输出井
输入井和输出井是在磁盘上开辟出来的两个存储区域。
②输入缓冲区和输出缓冲区
这是在内存中开辟的两个缓冲区,用于缓和CPU 和磁盘之间速度不匹配的矛盾。
③输入进程(预输入进程)和输出进程(缓输出进程)。
④井管理程序。
(3)SPOOLing 系统的特点
①提高了I/O的速度。
②将独占设备改造为共享设备。
③实现了虚拟设备功能。
七、缓冲区管理
1. 缓冲的引入
(1)缓和CPU 与 I/O 设备间速度不匹配的矛盾。
(2)减少对CPU 的中断频率,放宽对CPU 中断响应时间的限制。
(3)解决数据粒度不匹配的问题。
(4)提高CPU 和 I/O 设备之间的并行性。
2.单缓冲区和双缓冲区
(1)单缓冲区
假定从磁盘把一块数据输入到缓冲区的时间为T,OS 将该缓冲区中的数据传送到用户区的时间为M, 而CPU 对这一块数据处理(计算)的时间为C 。T 和 C 是可以并行的(见图6-13)。单缓冲区处理每块数据的用时为 max(C,T)+M。
图6-13 单缓冲工作示意图
(2)双缓冲区
双缓冲区处理一块数据的用时为max(C+M,T), 如图6- 14所示。
图6-14 双缓冲工作示意图
3. 环形缓冲区
在环形缓冲中包括多个缓冲区,其每个缓冲区的大小相同。作为输入的多缓冲区可分为三种类型:用于装输 入数据的空缓冲区R 、已装满数据的缓冲区G 以及计算进程正在使用的现行工作缓冲区C。
4. 缓冲池
(1)缓冲池的组成
①缓冲区的组成
缓冲池管理多个缓冲区,每个缓冲区由用于标识和管理的缓冲首部以及用于存放数据的缓冲体两部分组成。
②三个队列
a. 空白缓冲队列emq。
b. 输入队列inq。
c. 输出队列outq。
③四种工作缓冲区
a. 用于收容输入数据的工作缓冲区; b. 用于提取输入数据的工作缓冲区; c. 用于收容输出数据的工作缓冲区;
d. 以及用于提取输出数据的工作缓冲区。 (2)缓冲区的工作方式
缓冲区可以工作在如下四种工作方式,如图6-15所示。
图6-15 缓冲区的工作方式
八、磁盘存储器的性能和调度
1. 磁盘性能简述
(1)数据的组织和格式
①磁盘的结构和布局如图6-16所示。
图6-16 磁盘的结构和布局
②磁盘格式化
为了在磁盘上存储数据,必须先将磁盘低级格式化。
(2)磁盘的类型
①固定头磁盘。
②移动头磁盘。
(3)磁盘访问时间
可把对磁盘的访问时间分成以下三部分。
①寻道时间Ts。假 设s 为启动磁臂的时间;m 是与磁盘驱动器速度有关的常数;n 为磁头移动的磁道数,则
②旋转延迟时间L。 假设磁盘的旋转速度为r,则
③传输时间Tt。假设每次所读/写的字节数为b, 一条磁道上的字节数为N, 则
因此,总的平均访问时间Ta 表示为:
2.早期的磁盘调度算法
(1)先来先服务 (FCFS) 算法
FCFS 算法根据进程请求访问磁盘的先后次序进行调度。
(2)最短寻道时间优先 (SSTF) 算法
①SSTF 算法每次选择与当前磁头所在的磁道距离最近的磁道,以使每次的寻道时间最短。
②SSTF 算法不能保证平均寻道时间最短,可能导致优先级低的进程发生“饥饿”现象。
3. 基于扫描的磁盘调度算法
( 1 ) 扫 描 (SCAN) 算 法
扫描算法在磁头当前移动方向上选择与当前磁头所在磁道距离最短的磁道。
(2)循环扫描 (CSCAN) 算法
为了减少SCAN 的 延 迟 ,CSCAN 算法规定磁头单向移动,到尽头后直接返回到另一端的开始位置。
(3)LOOK 和 CLOOK 调度算法
①LOOK算法
LOOK 算法是对 SCAN 算法的一种改进,由于SCAN 算法的磁头要走到磁盘尽头才会转换方向,而实际上 并不需要走到尽头,只需要走到该方向上最后一个请求即可。
②CLOOK 算法
CLOOK 同理是一种对CSCAN 算法的改进。