I/O系统的基本功能及模型
I/O系统的组成
(1)用于输入输出和存储信息的设备
(2)相应的设备控制器
(3)与CPU连接的高速总线
(4)I/O通道(大中型计算机系统)
主要功能
- 隐藏物理设备细节
用户可直接使用抽象的I/O命令 - 实现设备无关性
用户可用抽象的逻辑设备名使用设备,同时提高OS系统的可移植性和易适应性 - 提高处理机和设备的并行性(提高利用率)
缓冲区管理 - 对I/O设备进行控制
- 确保对设备正确共享
- 错误处理
I/O系统的层次结构和模型
I/O系统接口
系统根据设备的不同类型将与高层的接口进行分类
-
块设备接口
块设备(传输速率较高,可寻址):数据的存取与传输以数据块为单位
(1)隐藏了磁盘的二维地址结构,每个扇区地址需用磁道号和扇区号表示
(2)将抽象命令映射为低层操作 -
流设备接口
字符设备(传输速率较低,不可寻址):数据的存取与传输以字符为单位,常采用中断驱动方式
☞get和put操作
由于字符设备不可寻址,只能采取顺序存取方式。通过get或put获取或输出字符
☞in-control指令
用来处理字符设备的通用指令 -
网络通信接口
I/O设备中的接口
信号分类:
(1)数据信号线:进出数据转换,缓冲后传送
(2)控制信号线:进行读写,移动磁头
(3)状态信号线
设备控制器(可编址)
CPU与I/O设备的接口,实现两者之间的数据交换,从而使处理机脱离繁重的设备控制事物。可分为字符设备控制器和块设备控制器
- 基本功能
(1)接受和识别CPU命令(控制寄存器:存放命令及参数)
(2)标识和报告设备状态(状态寄存器)
(3)数据交换(数据寄存器)
(4)地址识别(地址译码器):控制器识别设备地址和寄存器地址
(5)数据缓冲:协调I/O与CPU的速度差距
(6)差错控制 - 组成
☞设备控制器与处理机的接口
☞设备控制器与设备的接口
☞I/O逻辑
(1)通过一组控制线与处理机进行交互
(2)CPU启动设备时:
①将启动命令发给控制器
②通过地址先将地址发给控制器
③控制器的I/O逻辑对收到的地址和命令进行译码,根据得出的命令选择设备进行控制
I/O通道
处于CPU和设备控制器之间的硬件机构,用于减少CPU负担
(1)CPU只需向通道发送一条指令后即可不再干预后续操作
(2)通道形成通道程序执行I/O操作,完成后向CPU发送中断信号
- 目的:建立独立的I/O操作,解放CPU
(1)数据传送独立
(2)I/O操作的组织管理和结束也尽量独立 - 通道类型
根据外围设备类型的不同分为:
(1)字节多路通道(适用于并行低速设备)
(2)数组选择通道(针对高速设备:分配型子通道)
(3)数组多路通道
中断
- 中断向量表
为每种设备配置相应的中断处理程序并将其置入表项。同时为每一个设备的中断请求规定中断号与表项对应 - 对中断源的处理方式
(1)屏蔽中断
①所有按顺序依此处理
②处理机处理中断时屏蔽所有新到中断,直到完成本次处理
简单但不适合对实时性要求高的中断请求
(2)嵌套中断
①根据紧急程度为不同信号源规定优先级。当中断请求同时发生时优先相应优先级最高的
②高优先级的请求可抢占低优先级中断的处理机 - 中断处理程序
☞主要工作
(1)进程上下文的切换
(2)对处理中断信号源进行测试
(3)读取设备状态
(4)修改进程状态
☞中断处理流程
(1)测定是否有未响应的中断信号
(1)保护被中断进程的CPU环境
(3)中断处理
(4)恢复CPU的现场
设备驱动程序
- 功能(过程)
(1)将与设备无关软件发来的抽象命令转换为与设备相关的低层操作序列
(2)检查用户I/O请求的合法性,了解I/O设备工作状态,传递操作有关参数,设置设备工作方式
(3)发出I/O命令:设备空闲时立即启动;忙碌时则将其挂起
(4)相应中断请求并根据中断类型调用相应处理程序 - 特点
(1)在设备控制器和与设备无关的软件之间进行通信和转换
(2)与设备控制器和IO设备的硬件特性紧密相关
(3)与IO设备采用的控制方式密切相关
(4)与硬件相关部分必须用汇编语言编写
(5)允许可重入,被调用的驱动程序常在调用完成前被再次调用 - 设备处理方式
(1)为每类设备设置一个进程,执行这类设备的I/O操作(适合大系统)
(2)在整个系统设置I/O进程,执行系统中各类设备的I/O操作
(3)为各类设备配置相应的设备驱动程序供用户或进程调用(常用方式)
I/O控制方式
数据走向:设备(磁盘)->控制器缓冲->进程的内存
- 程序I/O方式(忙-等待方式)
CPU向控制器发出I/O命令,通过检测状态寄存器busy的值判断数据是否输入至数据寄存器,读写完成后由CPU将数据送入内存
不足:高速CPU等待低速I/O设备,导致CPU极大浪费 - 中断驱动I/O方式
CPU发出IO命令后返回当前执行任务,控制器同时按命令控制指定设备(此时CPU与I/O设备并行),读写完成后由CPU将数据送入内存
优点:中断方式更为有效,系统的资源利用率和吞吐量得到提高
不足:按字节进行I/O导致控制器频繁请求中断;CPU和I/O虽然并行但效率不高,存在频繁的中断干扰
- 直接存储器访问DMA方式(读取连续的数据块)
以数据块为单位,由控制器直接将数据送入内存,CPU仅在传送的开始或结束时进行干预
优点:减少了CPU对I/O的干预,进一步提高并行程度
☞DMA控制器的组成
(1)主机与DMA控制器的接口
(2)DMA控制器与块设备的接口
(3)I/O控制逻辑
☞DMA控制器中的寄存器
(1)数据寄存器DR:存放在内存和设备间进行交换的数据
(2)内存地址寄存器MAR:存放目标地址在内存中的起始位置
(3)数据计数器DC:存放本次CPU要进行读写的字节数目
(4)命令/状态寄存器CR:接受从CPU发来的I/O命令或相关的控制和状态信息
- I/O通道控制方式(读多个数据块到内存不同位置)
CPU发出I/O指令后只需给出通道程序的首地址和要访问的设备,便可通过CPU,通道和I/O设备的并行操作完成传输
CPU指令->设备驱动程序解读->通道程序->通道
设备分配
- 数据结构(有通道)
(1)设备控制表DCT
(2)控制器控制表COCT
(3)通道控制表CHCT
(4)系统设备表SDT
设备名->SDT->DCT->COCT->CHCT - 分配考虑因素
(1)根据设备固有属性:独占,共享,独占但可虚拟采取互斥,次序调度,虚拟等不同分配策略
(2)设备分配算法:①FCFS,②优先级高者优先
(3)设备分配安全性
(4)设备独立性
用户层IO软件
SPOOLING
利用假脱机(多道程序技术),通过程序模拟脱机的外围机,完成设备IO操作,实现在联机情况下同时进行外围操作
组成部份
-
输入井和输出井
磁盘上开辟的两个存储空间。输入井模拟脱机输入的磁盘设备,输出井模拟脱机输出的磁盘 -
输入缓冲区和输出缓冲区
为缓解速度矛盾在内存中开辟的两个缓冲空间。
输入设备->输入缓冲区->输入井
输出井->输出缓冲区->输出设备 -
输入进程和输出进程
输入进程模拟输入时外围设备控制器功能,把低速输入设备的数据传送至高速磁盘
输出进程模拟脱机输出时外围设备控制器的功能,将数据从磁盘传送至低速输出设备
守护进程
运行在后台的特殊进程,独立于控制终端并周期性的执行某种任务或等待处理可能发生的事件
特点
(1)提高IO速度。利用输入井和输出井模拟脱机输入输出,缓和了CPU和I/O设备速度不匹配的矛盾
(2)将独占设备改为共享设备。不为进程分配设备,而是为进程分配存储区并建立IO请求表
(3)最终实现虚拟设备功能,多个进程可同时使用一台独占设备
缓冲区管理
为解决CPU计算速度和设备IO速度不匹配的矛盾,提高CPU设IO设备并行性和利用率,系统在CPU进行当前计算时,设备通过缓冲区进行后续数据的输入
引入原因
(1)缓和CPU和IO设备间速度不匹配的矛盾
(2)缓冲区数据成批传入内存可进一步减少对CPU的中断频率
(3)最终实现提高CPU和IO设备并行性
设备速度差距越大,缓冲区容量越大
缓冲区使用方式
- 单缓冲
进程发出IO请求后,CPU在主存分配一个缓冲区供CPU和外设轮流使用
- 双缓冲(缓冲对换)
进一步加快输入输出速度,提高设备利用率
☞输入:数据送入第一缓冲区,装满后转向第二缓冲区
☞读出:OS从第一缓冲区中移出数据,送入用户进程,再由CPU对数据进行计算
优点:(1)CPU和外设无需再针对一块进行交替
(2)实现连续处理时不必再等待对方(两者处理速度需相近) - 多缓冲
CPU和IO速度相差过远时,为进一步协调速度差通过增加缓冲区数量进行一定的多缓冲管理 - 循环缓冲(一个时段内只能用于输入或只能用于输出,不可双向操作)
多个缓冲区(大小相同):空缓冲区R;满缓冲区G;正使用缓冲区C
多个指针:正使用Current;计算进程下一可取缓冲区Nextg;输入进程下一可放缓冲区Nexti - 缓冲池
设置多个缓冲区供所有进程共享使用,按队列和队列指针形式组织
磁盘存储器
磁盘性能
- 与格式的关系
盘片、面、磁道(每条磁道容量相同)、扇区 - 与速度相关
☞磁盘类型:固定磁头(每道一磁头);移动磁头(每盘一磁头)
☞访问时间计算:寻道时间(到磁道);旋转延迟(到扇区);传输时间
磁盘调度方法
尽量减少寻道时间和旋转延迟,是平均寻道时间最少
- FCFS
磁盘执行IO按进程请求的先后顺序 - 最短寻道时间优先SSTF
选择从当前磁头位置出发移动最少的请求(平均柱面定位时间未必最短)
优点:磁头每次移动时间最少;
不足:对中间磁道有利,但可能有进程处于饥饿状态 - 电梯调度算法/扫描算法SCAN(考虑距离的同时更优先考虑方向)
规定磁头的移动方向:先里到外,再外向里
不足:易错过离当前磁道距离近但方向不同的磁道 - 循环扫描CSCAN
磁头移动方向由里向外后再次由里向外 - 分步电梯调度算法FSCAN