输入输出系统
I/O系统的基本功能、模型和接口
I/O系统的基本功能
- 隐藏物理设备的细节
- 与设配的无关性
- 提高处理机和I/O设备的利用率
- 对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指令
- 内存映像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软件
系统调用与库函数
- 系统调用
- 库函数
假脱机系统
- 假脱机技术
- SPOOLing的组成
- 输入井和输出井
- 输入缓冲区和输出缓冲区
- 输入进程和输出进程
- 井管理程序
- SPOOLing系统的特点
- 提高了I/O的速度
- 将独占设备改为共享设备
- 实现了虚拟设备系统
- 假脱机打印机系统
- 磁盘缓冲区
- 打印缓冲区
- 假脱机管理进程和假脱机打印进程
- 守护进程
缓冲区管理
缓冲的引入
- 缓和CPU与I/O速度的不匹配
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决数据粒度不匹配的问题
- 提高CPU和I/O设备之间的并行性
单缓冲和双缓冲区
- 单缓冲区
- 双缓冲区
环形缓冲区
- 环形缓冲区的组成
- 多个缓冲区
- 多个指针
- 环形缓冲区的使用
- 进程之间的同步问题
缓冲池
- 缓冲池的主城
- 空白缓冲队列 emq
- 输入队列 inq
- 输出队列 outq
- Getbuf过程和Putbuf过程
- 缓冲区方式
- 收容输入
- 提取输入
- 收容输出
- 提取输出
磁盘存储器的性能和调度
磁盘性能简述
- 数据的组织和格式
- 磁盘的类型
- 磁盘的访问时间
- 寻道时间
- 旋转延迟时间
- 传输时间
早期的磁盘调度算法
- 先来先服务
- 最短寻到时间优先
基于扫描的磁盘调度算法
- 扫描算法
- 循环扫描算法
- 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技术。