输入输出管理概念
设备管理的目的
- 合理地利用外部设备:提高设备的并行性和均衡性
- 方便用户:对各种不同的设备都是用同一界面
设备管理的功能
- 根据各类设备的特点确定相应的分配策略
- 启动设备完成实际的输入输出操作
- 向用户提供统一,友好的使用界面(设备独立性)
- 优化设备的调度,提高设备的利用率
I/O系统的层次结构
- 中断处理程序
- 设备驱动程序
- 设备独立性软件
设备的分类
-
按设备的共享属性
- 独占设备:一段时间内只允许一个用户访问的设备
- 共享设备
-
按信息交换(单位)方式
- 计算机的主存与设备间
- 块设备:一块通常是512个字节或1K字节:磁盘,磁带
- 字符设备:每次只能传送一个字符的信息
-
按设备的使用特性分
-
存储设备:磁盘,磁带
-
输入输出设备
- 输入设备:将外部世界的信息输送给计算机
- 输出设备:将计算机处理或加工好的信息输出给外部世界
-
-
按传输速率分
- 高速设备:数十万字节至千兆字节:磁盘机,磁带机,光盘机
- 中速设备:千字节至数十万字节:行式打印机,激光打印机
- 低俗设备:几个字节至数百字节:键盘,鼠标
设备与控制器之间的接口
- 数据信号线
- 控制信号线
- 状态信号线
设备控制器
-
基本功能
- 接受和识别命令
- 数据交换
- 标识和报告设备的状态
- 地址识别
- 数据缓冲区
- 差错控制
-
组成
- 设备控制器与设备的接口
- 设备控制器与处理机的接口
- I/O逻辑
I/O通道
-
I/O通道设备的引入
- 在CPU和设备控制器之间又增设了I/O通道
-
通道类型
- 字节多路通道
- 数组选择通道
- 数据多路通道
-
“瓶颈”问题
- 由于通道价格昂贵,导致通道数量势必较少
- 进而造成整个系统吞吐量的下降
I/O控制方式
程序I/O方式
- CPU需要不断测试I/O设备,看其是否完成了传输
中断驱动方式
- 进程要启动某个I/O设备时
- 由CPU向相应的设备控制器发出一条I/O命令
- 然后立即返回继续执行原来的任务
直接存储器访问方式(DMA)
-
在I/O设备和内存之间开启一个可以直接传输数据的通路
-
特点
- 数据传输的基本单位是数据块
- 所传送的数据是从设备直接送入内存的
- 仅在传送一个或多个数据块的开始和结束时,才需要CPU的干预,整块数据的传送是在控制器的 控制下完成的
I/O通道访问方式
中断机构和中断处理程序
中断是多道程序实现的基础,设备管理的基础
中断处理程序是I/O系统中最低的一层,是整个I/O系统的基础
中断简介
-
中断和陷入
-
中断向量表和中断优先级
-
对多中断源的处理方式
- 屏蔽中断
- 嵌套中断
中断处理程序
- 1、唤醒被阻塞点驱动(程序)进程
- 2、保护被中断进程的CPU环境
- 3、转入相应的设备处理程序
- 4、中断处理
- 5、恢复被中断进程的现场
缓冲区管理
几乎所有的I/O设备在与处理机交换数据时都使用了缓冲区
缓和CPU和I/O设备间速度不匹配的矛盾
减少对CPU的中断频率,放宽对CPU中断响应时间的限制
解决数据粒度不匹配的问题
提高CPU和I/O设备之间的并行性
单缓冲区
双缓冲区:共享资源,生产者消费者进程必须互斥访问
环形缓冲区
缓冲池:管理多个缓冲区,每个缓冲区由用于标识和管理的缓冲首部以及用于存放数据的缓冲体组成
设备驱动程序
驱动物理设备和DMA控制器或I/O控制器等直接进行I/O操作的子程序的集合
屏蔽了直接对硬件操作的细节,为编程者提供操作设备的友好接口
功能
- 接收由设备独立性软件发来的命令和参数,并将命令中的抽象要求转换为具体要求
- 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式
- 发出I/O命令
- 响应由设备控制器发来的中断请求,并根据其中断类型调用相应的中断处理程序
过程
- 将命令中的抽象要求转成为具体要求
- 对服务请求进行校验
- 检查设备的状态
- 传送必要的参数
- 启动I/O设备
设备无关性(设备独立性)
方便:用户能摆脱具体物理设备的繁琐规定的束缚而方便灵活地使用设备
统一:对各种不同的设备都使用同一界面
用户在编制程序时使用的设备与实际使用的设备无关,用户程序中使用的是逻辑设备
- 物理设备名:系统提供的设备标准名称(绝对号)
- 逻辑设备名:用户自己指定的设备名(设备类.相对号)
类型
-
一个程序应该独立于分配给它的某种类型的具体设备
- 保护程序不会因为某一台物理设备发送故障或已经分配给其他程序而失效
- 是操作系统根据当时总的设备配置情况自由地分配适当类型的设备
-
一个程序应该尽可能与它所使用的I/O设备类型无关
- 指在I/O信息时,可以从不同类型的设备上I/O
设备管理的分层
-
输入输出控制系统(与设备无关的软件)
- 它与用户相互交互,完成设备的分配,调度并向程序员提供一个统一的编程接口,实现了逻辑设备向物理设备的转换
-
设备驱动程序
- 它直接与设备打交道,控制设备控制器,完成具体的输入输出
设备的分配
功能
- 按照一定的策略把所要求的设备分配给进程
要考虑的因素
-
设备的固有属性
-
独占设备:静态分配
-
即在作业级进行的分配,当一个作业运行之前系统一次分配满足需要的全部设备
-
共享设备:动态分配
-
即在进程运行的过程中进行的,当进程需要使用设备时,通过系统调用命令向系统洗出设备请求。系统按一定的分配策略给进程分配所需设备,一旦使用完毕立即释放
-
虚拟设备:虚拟分配
-
为提高设备的利用率,通过Spooling技术把一台独占设备变换成为若干台逻辑设备,供若干个用户同时使用,用来模拟独占设备的那部分共享设备称为虚拟设备
- 好处:提高了独占设备的利用率;每个用户都有速度极高的“输入机”和“打印机”,缩短了作业执行时间;能够多道并行工作
-
-
系统采用的分配算法
- 先来先服务
- 优先级高者优先
-
设备分配的安全性
-
安全分配方式(单请求方式):每当进程发出I/O请求后进入阻塞状态,直到I/O操作完成才被唤醒。避免了“请求和保护”条件,不会造成死锁,分配是安全的。缺点是:进程进展缓慢
-
不安全分配方式(多请求方式):进程发出I/O请求后,仍继续运行,需要时又发出第二个I/O请求、仅当进程所请求的设备被另一个进程占用时,该进程才进入阻塞状态
- 优点:一个进程可同时操作多个设备,使这些设备能并行工作
- 缺点:分配不安全,可能会造成死锁
-
-
设备的无关项,用户程序与实际使用的物理设备无关
磁盘的驱动调度
磁盘的类型
- 固定头磁盘:每条磁道上都配有一个读/写磁头,所有的磁头都被装在一刚性臂
- 移动头磁盘:仅配有一个磁头,该磁头能够移动以进行寻道
启动一次磁盘的时间
- 访问磁盘的时间 = 寻找时间+ 延迟时间+ 传输时间
磁盘调度算法
-
先来先服务调度算法(FCFS)
- 根据进程请求访问磁盘的先后次序进行调度
-
最短寻找时间调度算法(SSTF)
- 选择,要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但是这种算法不能保证平均寻道时间最短
- 可能会导致优先级低的进程饥饿
-
电梯调度算法(SCAN)
- 不仅会考虑访问的磁道与当前磁道间的距离,还会优先考虑磁头当前的移动方向
- 例如:当磁头正在自里向外移动时,SCAN调度算法所考虑的下一个访问对象,应是其欲访问的,既在当前磁道外,又是距离最近的磁道,直至再无更外的磁道需要访问时,磁臂换向为自外向里移动。