操作系统笔记第六章【输入输出系统】
输入输出系统
I/O系统是OS的重要组成部分,用于管理诸如打印机和扫描仪的等I/O设配,以及用于存储数据。
I/O系统的基本功能、模型和接口
I/O系统的功能:第一、二方面为了方便用户使用I/O;第三、四方面用于提高CPU与I/O设备的利用率;第五、六方面为用户在共享设备时提供方便,以保证系统能有条不紊的运行,甚至能自动修复错误。
I/O系统的基本功能
- 隐藏物理设备的细节
- 与设配的无关性
- 提高处理机和I/O设备的利用率
- 对I/O设备进行控制
目前对I/O设备由四种控制方式:1. 采用轮询的可编程I/O方式;2. 采用中断的可编程方式;3. 直接存储器访问方式;4. I/O通道方式
- 确保对设备的正确共享
共享性上分为两种设备:1. 独占设备;2. 共享设备
- 错误处理
对于临时性错误,可通过重试操作来纠正,只有发生持久性错误时,才需向上层报告。
I/O系统的层次结构和模型
目前普遍采用层次结构的I/O系统,将系统中的设备管理模块分为若干层次。
- I/O软件的层次结构
- 用户层I/O软件:产生I/O请求、格式化I/O,Spooling
- 设备独立性软件:映射、保护、分块、缓冲、分配
- 设备驱动程序:检查状态
- 中断处理程序:用于保存被中断进程的CPU环境。
- I/O系统中各个模块之间的层次视图
- I/O系统的上、下接口
- I/O系统接口
- 软件/硬件接口
- I/O系统的分层
- 中断处理程序
- 设备驱动程序
- 设备独立性程序
- I/O系统的上、下接口
I/O系统接口
根据设备类型的不同,进一步划分若干个接口
- 块设备接口
块设备接口是块设备管理程序与高层之间的接口。反映了大部分磁盘存储器和光盘存储器的本质特征,用于控制该类设备输入输出。
- 块设备:指数据的存取和传输都是以数据块为单位的设备。
- 隐藏磁盘的二维结构:块设备隐藏了磁盘地址的二维结构情况
- 将抽象命令映射为底层操作
- 流设备接口
- 字符设备:数据的存取以字符为单位的设备,传输速率较低。不能指定数据的输入源地址及输出的目的地址。
- get和put操作:采用顺序存取方式,以字符设备建立一个字符缓冲区(队列),get得到字符到内存,put把新字符输出到字符缓冲区。
- in-control指令
大多数流设备属于独占设备,必须互斥方式实现共享。
- 网络通信接口
I/O设备和设备控制器
I/O设备一般是执行I/O操作的机械部分和执行控制的电子部件组成。
I/O设备
- I/O设备的类型
按特性分类:第一类是存储设备;第二类是I/O设备。
按传输速率分类:低速设备;中速设备;高速设备。
- 设备与控制器之间的接口
设备并不是直接与CPU相连,而是与设备控制器通信。在I/O设备中应含有与设备控制器间的接口,该接口中有三类型的信号。、
- 数据信号
- 控制信号
- 状态信号线
设备控制器
设备控制器的主要功能是,控制一个或多个I/O设备,实现I/O设备和计算机之间的数据交换。
- 设备控制器的基本功能
- 接受和识别命令
- 数据交换
- 识别和报告设备的状态
- 地址识别
- 数据缓冲区
- 差别控制
- 设备控制器的组成
- 设备控制器与处理机的接口
- 设备控制器与设备的接口
- I/O逻辑
内存映像I/O
驱动城区将抽象的I/O命令换出的一系列具体命令、参数等数据装入设备控制器的相应寄存器,由控制器来执行这些命令,具体实施对I/O设备的控制。
- 利用特定的I/O指令
所需特定I/O指令:io-store cpu-reg,dev-no,dev-reg
该方法缺点:访问内存和访问设备需要两种不同的指令。
- 内存映像I/O
I/O编制与内存一致,不一个范围。
I/O通道
- I/O通道的引入
CPU与设备控制器之间增设了I/O通道,为了建立独立的I/O操作。
I/O通道是一种特殊的处理机,具有执行I/O的能力,并通过执行通道I/O程序来控制I/O操作。
- 通道类型
- 字节多路通道
轮转一周访问各个通道,不适用高速设备。
- 数组选择通道
可链接高速设备,但是利用率低。
- 数组多路通道
- “瓶颈”问题
解决瓶颈方法最有效方法:增加设备到主机间的通路而不是通道。
中断机构和中断处理程序
中断处理程序是I/O系统最低的一层,它是整个I/O系统的基础。
中断简介
- 中断和陷入
- 中断
中断是指CPU对I/O设备发来的中断信号的一种响应,I/O设备可以是字符设备,也可以是块设备、通信设备等。
- 陷入
由CPU内部事件引起的中断
- 中断
- 中断向量表和中断优先级
- 中断向量表
- 中断优先级
- 对多中断源的处理方式
当处理机正在处理一个中断时,又来了一个新的中断请求,这是应当如何处理?
- 屏蔽(禁止)中断
正在处理中断时,屏蔽所有的中断直至本次处理结束。
- 嵌套中断
相应最高的中断请求;高优先级可以抢占低优先级。
- 屏蔽(禁止)中断
中断处理程序
CPU响应后便专项中断处理程序,中断处理程序执行相应的处理,处理完后解除响应进程的阻塞状态。中断处理可分为以下几个步骤:
1. 测定是否有未响应的中断信号
2. 保护被中断进程的CPU环境
3. 转入相应的设备处理程序
4. 中断处理
5. 恢复CPU的现场并退出中断
设备驱动程序
设备驱动程序概述
设备处理程序通常又被称为设备驱动程序
- 设备驱动程序的功能
- 接受由与设备无关的软件发来的命令和参数
- 检查用户I/O请求的合法性
- 发出I/O命令,如果设备空闲,便立即启动I/O设备。
- 及时响应由设备控制器发来的中断请求。
- 设备驱动程序的特点
设备驱动程序属于低级的系统例程,它与一般的应用程序及系统程序之间有下述明显特征:
- 驱动程序是在实现与设备无关的软件和设备控制器之间通信和转换的程序。
- 驱动程序与设备控制器以及I/O设备的硬件特性紧密相关
- 驱动程序与I/O设备采用的I/O控制方式紧密相关
- 其中一部分必须用汇编语言书写。
- 驱动程序允许重入
- 设备处理方式
根据设备处理时是否设置进程,以及设置什么样的进程,把设备处理方式分为三类:
- 为每一类设备设置一个进程
- 在整个系统中设置一个I/O进程
- 不设置专门的设备处理进程,而职位各类设备设置相应的设备驱动程序,供用户或系统进程调用。
设备驱动程序的处理过程
设备驱动程序主要任务是启动制定设备,完成上层指定的I/O工作。但是在启动之前必须要完成准备工作。以下是设备驱动的处理过程:
- 将抽象要求转化为具体条件
- 对服务器请求进行校检
- 检查设备状态
- 传送必要的参数
- 启动I/O设备
对I/O设备的控制方式
- 使用轮询可编程I/O方式
- 使用中断的可编程I/O方式
- 直接存储器访问方式
- I/O通道控制方式
与设备无关的I/O软件
与设备无关的I/O软件,以实现设备独立性,也称为设备无关性。
与设备无关软件的基本概念
- 以物理设备名使用设备
- 引入逻辑名
- 逻辑设备名称到物理设备名称的转换
与设备无关的软件
与设备无关的软件是I/O系统的最高层软件。
- 设备驱动程序的统一接口
- 缓冲管理
- 差错控制
- 对独立设备的分配和回收
- 独立于设备的逻辑数据块
设备分配
为实现对独立设备的分配,必须在系统中配置相应的数据结构。
- 设备分配中的数据结构
- 设备控制表DCT
- 控制器控制表、通道控制表和系统设备表
- 设备分配时应考虑的因素
- 设备故有属性
- 设备分配算法
- 设备分配中的安全性
- 独占设备的分配程序
逻辑设备名到物理设备名映射的实现
- 逻辑设备表
逻辑设备表包括:逻辑设备名、物理设备名和设备驱动程序的入口地址。 - 逻辑设备表的设置问题
用户区的I/O软件
系统调用与库函数
- 系统调用
不允许用户态应用程序直接调用运行核心态的OS过程。系统调用:应用程序可以通过它间接调用OS中的I/O过程,对I/O设备进行操作。
- 库函数
假脱机系统
假脱机技术可以将一台物理I/O设备虚拟为多台逻辑I/O设备。
- 假脱机技术
为了解决CPU与I/O速度的不匹配引入假脱机技术。
- SPOOLing的组成
- 输入井和输出井
- 输入缓冲区和输出缓冲区
- 输入进程和输出进程
- 井管理程序
- SPOOLing系统的特点
- 提高了I/O的速度
- 将独占设备改为共享设备
- 实现了虚拟设备系统
- 假脱机打印机系统
- 磁盘缓冲区
- 打印缓冲区
- 假脱机管理进程和假脱机打印进程
- 守护进程
缓冲区管理
缓冲区的管理主要功能是组织好缓冲区,并提供获得和释放缓冲区的手段。
缓冲的引入
- 缓和CPU与I/O速度的不匹配
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决数据粒度不匹配的问题
- 提高CPU和I/O设备之间的并行性
单缓冲和双缓冲区
- 单缓冲区
- 双缓冲区
环形缓冲区
当输入输出速度基本匹配时,双缓冲能获得较好的效果。但是若二者速度相差甚远,则不够理想。此时引入环形缓冲。
- 环形缓冲区的组成
- 多个缓冲区
- 多个指针
- 环形缓冲区的使用
- 进程之间的同步问题
缓冲池
- 缓冲池的主城
- 空白缓冲队列 emq
- 输入队列 inq
- 输出队列 outq
- Getbuf过程和Putbuf过程
- 缓冲区方式
- 收容输入
- 提取输入
- 收容输出
- 提取输出
磁盘存储器的性能和调度
磁盘性能简述
- 数据的组织和格式
- 磁盘的类型
常见的分类由:硬盘和软盘、规定头磁盘和活动头磁盘
- 磁盘的访问时间
- 寻道时间
刺头移动到磁道上经历的时间。启动磁臂s与移动n条磁道花费时间和:T_s=m×n+sTs=m×n+s。其中m是常数,与磁盘驱动器速度有关。
- 旋转延迟时间
制定山区移动到磁头下面所经历的时间。
- 传输时间
T_t=\frac{b}{rN}Tt=rNb
可访问时间T_a=T_S+\frac{1}{2r}+\frac{b}{rN}Ta=TS+2r1+rNb
- 寻道时间
早期的磁盘调度算法
- 先来先服务
- 最短寻到时间优先
基于扫描的磁盘调度算法
- 扫描算法
- 循环扫描算法
- NStepSCAN算法和FSCAN调度算法
习题
-
请说明I/O系统的基本功能
1. 隐藏物理设备的细节 2. 与设备的无关性 3. 提高处理机和I/O设备的利用率 4. 对I/O进行控制 5. 确保对设备的正确共享 6. 错误处理
-
简要说明I/O软件的四个层次的基本功能
1. 用户I/O软件:用于实现用户与I/0设备交互 2. 设备独立性软件:用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护,以及设备分配与释放等。 3. 设备驱动程序:与硬件直接有关,用来具体实现系统对设备发出的操作指令,驱动I/0设备工作 4. 中断处理:于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完后恢复现场,并返回到被中断的进程
-
I/O系统接口与软/硬件接口分别是什么接口?
I/0系统接口是I/0系统与上层系统之间的接口,向上层提供对设备进行操作的抽象I/0命令,以方便高层对设备的使用; 软件/硬件(RW/HW)接口的上面是中断处理程序何用于不同设备的设备驱动程序,它的下面是各种设备的控制器。
-
与设备无关性的基本含义是什么?为什么要设置该层?
为了提高OS的可适应性和可扩展性在现代0S中都毫无例外地实现了设备独立性,也称设备无关性。 基本含义:应用程序基本使用的物理设备。为实现设备独立性而引入了逻辑设备和物理设备两概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。
-
试说明设备控制器的组成。
1. 设备控制器与处理机的接口。 2. 设备控制器与设备的接口 3. I/O逻辑
-
为实现CPU与设备控制器间的通信,设备控制器应具备哪些功能?
1. 接受和识别指令 2. 数据交换 3. 识别和报告设备的状态 4. 地址识别 5. 数据缓冲区 6. 差错控制
-
为什么说中断是OS赖以生存的基础?
因为进程之间的切换是靠中断来完成的。中断也是设备管理的基础。
-
对多中断源的两种处理方式分别用于何种场合?
1) 屏蔽(禁止)中断:当处理机正在处理一个中断时,将屏蔽掉所有的中断,直到处理机已处理完本次中断,再去检查是否有中断产生。所有中断按顺序处理,优点是简单,但不能用于实时性要求较高的中断请求。 2)嵌套中断:在设置了中断优先级的系统中,当同时有多个不同优先级的中断请求,CPU优先响应优先级最高的中断请求,高优先级的中断请求可以抢占正在运行的低优先级中断的处理机。
-
设备中断处理程序通常需要完成哪些工作?
1. 检测是否由未响应的中断信号 2. 保护被中断的进程的CPU环境 3. 转入相应的设备处理程序 4. 处理中断 5. 恢复CPU的现场并退出中断
-
简要说明中断处理程序对中断进行处理的几个步骤。
1. 唤醒被阻塞的驱动进程。 2. 保护被中断进程的CPU环境。 3. 转入相应的设备处理程序。 4. 中断处理。 5. 恢复被中断进程的现场。
-
试说明设备驱动程序具有哪些特点?
(1)将接收到的抽象要求转为具体要求; (2)检查用户I/0请求合法性,了解I/0设备状态,传递有关参数,设置设备工作方式; (3)发出I/0命令,启动分配到的I/0设备,完成指定I/0操作; (4)及时响应由控制器或通道发来的中断请求,根据中断类型调用相应中断处理程序处理; (5)对于有通道的计算机,驱动程序还应该根据用户I/0请求自动构成通道程序。
-
设备驱动器通常要完成哪些工作?
(1) 将接收到的抽象要求转为具体要求; (2) 检查用户I/0请求合法性,了解I/0设备状态,传递有关参数,设置设备工作方式; (3)发出I/0命令启动分配到的I/0设备,完成指定I/0操作; (4)及时响应由控制器或通道发来的中断请求,根据中断类型调用相应中断处理程序处理; (5)对于有通道的计算机,驱动程序还应该根据用户I/0请求自动构成通道程序。
-
简要说明设备驱动程序的处理步骤分为那几步。
1. 将抽象要求转化为具体要求; 2. 对服务请求进行效验; 3. 检查设备的状态; 4. 传送必要的参数。
-
与设备的无关的软件中,包括了哪些公有操作的软件?
1. 设备驱动程序的统一接口 2. 缓冲管理 3. 差错控制 4. 对独立设备的分配与回收 5. 独立于设备的逻辑数据块
-
何谓设备虚拟?实现设备虚拟式所依赖的关键技术是什么?
通过虚拟技术可将一台独占设备变换成若干台逻辑设备,供若干个用户(进程)同时使用,通常把这种经过虚拟技术处理后的设备称为虚拟设备。其实现所依赖的关键技术是SPOOLING技术。