Lecture4-设备管理
- 外部设备分类
- 存储型设备:如磁带机、磁盘机等,以存储大量信息和快速检索为目标,在系统中存储持久性信息,作为内存的扩充,又叫外存。
- I/O型设备:如打印机等,把外界信息输入计算机,把计算结果从计算机中输出,完成计算机之间的通信或人机交互。
- 设备管理
- 使用I/O中断、缓冲区管理、通道、设备驱动调度等多种技术,极大程度上克服了设备和CPU速度不匹配所引起的问题,使得主机和设备能够并行工作,提高设备的利用率。
- 将所有设备抽象为文件,统一在文件系统下,赋予文件属性,优点是尽可能统一文件和设备的I/O 处理; 尽可能把设备文件和普通文件纳人同一保护机制下。为了方便用户或高层软件使用,设备管理还对各种设备进行抽象,配置设备驱动程序,屏蔽物理细节和操作过程,提供统一使用界面
- 设备管理的功能:设备中断处理、缓冲区管理、设备分配和去配、设备驱动调度、实现虚拟设备。
1. 设备管理概述
1.1. I/O系统、设备与操作
- I/O系统是I/O设备及其接口线路、控制部件、通道和管理软件的统称。
- I/O设备又称为外围设备或外部设备,简称外设
- 用于计算机系统与外部世界(如用户、其他计算机或设备)的信息交换或存储
- 把外界信息输入计算机,把计算结果从计算机中输出,完成计算机之间的通信或人机交互。
- I/O操作:内存和设备介质之间的信息传送操作
- 影响计算机的通用性和可扩充性
- 计算机系统综合处理能力及性价比的重要因素
1.2. I/O设备的分类
1.2.1. 按信息传输方向(I/O操作特性)划分
- 输入设备:将外界信息输入计算机,例如:键盘,鼠标,扫描仪等
- 输出设备:将计算结果输出,例如:显示器,打印机等
- 输入输出设备:既可以输入信息,也可以输出信息,例如:磁盘驱动器, 卡等
1.2.2. 按交互功能划分
- 人机交互设备:用于用户与计算机之间的交互通信,例如:鼠标,键盘,显示器等
- 存储设备:持久性地存储大量信息并快速检索,例如:磁盘驱动器,光盘驱动器等
- 机机通信设备:用于计算机和计算机之间的通信,例如: 卡,调制解调器等
1.2.3. 按设备管理(I/O信息交换单位)划分
-
字符设备
- 以字符为单位进行信息交换,发送或接收一个字符流。
- 严格依赖新消息的物理位置进行定位和读写。
- 输入输出设备、人机交互设备大多是字符设备,例如鼠标、显示器等。
-
块设备
- 以固定大小的数据块(块是存储介质上连续信息组成的一个区域)进行信息交换。
- 存取任何一个物理块所需的时间几乎不依赖于此信息所处的位置。
- 存储设备通常为块设备,例如磁盘驱动器等。
-
络设备:用于与远程设备通信的设备
- 机机通信设备为 络设备,例如 卡等
- 络设备可以抽象为传送字符流的特殊字符设备,也可以抽象为传送连续小块数据的块设备
1.3. 设备管理的目标
- 目标一:解决设备和CPU速度的不匹配,使主机和设备并行工作,提高设备使用效率
2.1.2. 涉及指令
- 查询指令:查询是否就绪
- 读写指令:就绪执行数据交换
- 转移指令:未就绪转向查询
2.1.3. 特点和评价
- 处理I/O请求会终止原程序的执行,浪费时间,并且CPU需要等待I/O设备就绪
- CPU需要参与数据传送
- 总而言之,CPU和设备只能串行工作,效率低下
2.2. 中断方式
2.2.1. 流程
- 处理器向控制器发出一个I/O命令,然后继续执行后续指令
- 如果该进程不需要等待I/O完成,后续指令可以仍是该进程中的指令。
- 否则,该进程在这个中断上挂起,处理器执行其他工作
- 控制器检查设备状态,按照I/O命令要求完成相应I/O操作,就绪后发起中断
- CPU响应中断,转向中断处理程序
- 中断处理程序,执行数据读写操作
- 退出中断处理程序,返回发生中断前的执行状态。
- 为什么控制器从设备读取数据后不立即送进内存,而是使用内部缓冲区旦磁盘开始读数据,其读出速度是恒定的,无论控制器怎样就要接收数据,如果控制器立即送进内存,则需要系统总线的控制权,但是可能会等待,因此需要内部缓冲区,使得DMA操作启动前不需要总线。
2.3.2. 流程
- 处理器向DMA模块发出I/O命令
- 处理器继续执行其它工作,DMA模块负责传送全部数据
- 数据传送结束后,DMA中断处理器
2.3.4. 特点和评价
- CPU不会终止原程序的执行,不需要发生中断,提高CPU资源利用率。
- CPU只在数据传送的开始和结束时参与。
- 开始时,CPU需要对DMA模块进行初始化。
- 结束时,CPU响应中断,但不必保存现场。
- 优点:线路简单、价格低廉,适用于小型和微型计算机的快速设备。
- 缺点:DMA窃取时钟周期,功能不够强不能满足复杂的I/O操作要求。
2.4. 小结:I/O控制方式的演化
- 采用轮询方式的设备控制器:CPU需要等待设备就绪,且参与数据传送
- 采用中断方式的设备控制器:CPU无需等待设备就绪,但响应中断后参与数据传送:通过DMA直接控制存储器
- CPU在数据传送开始和结束时:参与,与主存进行数据交换时不参与
左侧是主机侧,右侧是设备侧
2.7. I/O发展对总线的影响
2.7.1. 单总线
- 将CPU、主存和I/O模块连接到同一组总线上
- 优点:主存与I/O之间的数据传送与处理器的活动分离;可以支持更多的I/O设备
- 缺点:不适用于I/O设备数据速率相差太大的情形
2.7.3. 采用南北桥的多级总线(例)
- 通过存储总线、PCI总线、E(ISA)总线分别连接主存、高速I/O设备和低速I/O设备,距离CPU比较近的北桥控制器
3. I/O软件的实现
3.1. I/O软件
3.1.1. I/O软件的总体设计目标
- 高效率:改善设备效率,尤其是磁盘I/O操作的效率,有很大的影响
- 通用性:用统一的标准来管理所有设备
3.1.2. I/O软件设计思路
把软件组织成层次结构,低层软件用来屏蔽硬件细节,高层软件向用户提供简洁、友善的界面
3.1.3. I/O软件主要考虑的问题
- 设备无关性:编写访问文件的程序与物理设备无关
- 出错处理:低层软件能处理的错误不让高层软件感知
-
同步/异步传输:支持阻塞和中断驱动两种工作方式
- 同步:如果要同步就需要做等待,增加延迟
- 异步:可以不等待,提供并行度(不等是有前提的,运行进程的后续操作不可以依赖I/O操作的结果)
- 缓冲技术:建立数据缓冲区,匹配数据的到达率与离去率,提高吞吐率
3.2. I/O软件的层次结构
- 如果希望输入的数据被加工后再输出,则需要双缓冲。
4.3.1. 工作机制
- 输入:将数据读至缓冲区,系统将缓冲区数据送至用户区,应用程序对数据进行处理;如此往复,系统读入后续的数据
- 输出:把数据从用户区复制到缓冲区,再将数据输出后,应用程序继续请求输出
4.3.2. 性能计算
读取到缓冲区需要时间T,从缓冲区到用户区耗时M,应用程序计算耗时C
- 无缓冲:T + C
- 单缓冲:max(C, T) + M,M
4.4. 双缓冲
- 操作系统在主存的系统区中开设两个缓冲区
- 补充:数据缓冲区高速缓冲的实现思想(P267)
5. 驱动调度技术
5.1. 磁盘的物理结构
- 磁盘是一种直接存取存储设备,又称为随机存取存储设备,每条物理记录都有明确的位置和唯一的地址。
- 按照三维坐标进行随机存储。
5.1.1. 磁盘的组成
- 磁盘由多个盘片组成,每个盘片被划分为多个同心圆结构的磁道,每个盘片的两面都是可以数据的
- 同盘片上位于相同位置的磁道构成的圆柱体称为柱面
- 每个磁道分为固定多个或不等个数的扇区:为了对大量扇区寻址,操作系统将相邻的扇区组合成簇存储文件
5.3. 磁盘存取时间
磁盘完成数据读写所需要的时间:是寻道时间、旋转延迟、传送时间的总和
T a = T s + 1 2 r + b r N T_a = T_s + frac{1}{2r} + frac{b}{rN} Ta?=Ts?+2r1?+rNb?
- T aT_a Ta?:存取时间
- T sT_s Ts?:寻道时间
- r r r:磁盘旋转速度(单位:转/秒)
- b b b:要传送的字节数
- N N N:一个磁道中的字节数
6. 磁盘的驱动调度
6.1. 磁盘调度策略
- 磁盘可能同时接收到若干I/O请求:如果随机选择并响应I/O请求,可能得到最坏的性能
- 驱动调度:
- 系统采用一种调度策略,能够按最佳次序执行要求访问磁盘的多个I/O请求
- 能减少为若干I/O请求服务所需要消耗的总时间
- 调度策略包括
- 旋转调度
- 移臂调度
6.2. 旋转调度
- 目的:使得旋转延迟的总时间最少
6.2.1. 旋转排序
- 通过优化I/O请求排序,在最少旋转圈数内完成位于同一柱面的访问请求
- 旋转位置测定硬件和多磁头同时读写技术有利于提高旋转调度的效率
- 考虑磁道上保存四个物理块的旋转型设备,旋转1周需时20ms,假定收到以下四个I/O请求。请求次序记录 :读记录4、读记录3、读记录2、读记录1
- 多种循环排序
- 方法1:按照I/O请求次序读记录4、3、2、1,平均用1/2周定位,再加上1/4周读出记录,总处理时间等于1/2+1/4+3×3/4=3周,即60ms。
- 方法2:如果次序为读记录1、2、3、4,总处理时间等于1/2+1/4+3×1/4=1.5周,即30ms。
- 方法3:如果知道当前读位置是记录3,则采用次序为读记录4、1、2、3,总处理时间等于4×1/4=1周,即20ms。
6.2.2. 优化分布
- 通过信息在存储空间的排列方式来减少旋转延迟
- 交叉因子:如果沿着磁道按序对扇区编 ,可能由于磁盘转速太快,造成处理当前扇区的数据时,下一个扇区已经跳过,需要再转一圈才能继续读数据。因此,对扇区编 时会间隔编 ,例如交叉因子为2:1表示相邻编 之间会间隔1个扇区,3:1表示会间隔2个扇区。
- 按柱面而非盘面进行数据读写:连续记录数据时,先记录在同一柱面的不同磁道上,然后再更换柱面,可以减少数据读写时的移臂操作
- 考虑10个逻辑记录A,B,…,J被存于旋转型设备上,每道存放10个记录,安排如下:
- 按照优化前:处理10个记录的总时间:10ms(移动到记录A的平均时间)+ 2ms(读记录A)+4ms(处理记录A)+9×[16ms(访问下一记录) +2ms(读记录)+4ms(处理记录)] =214ms
- 按照优化后:处理10个记录的总时间为:10ms(移动到记录A的平均时间)+10×[ 2ms(读记录) + 4ms(处理记录) ]=70ms
优化前 | 优化后 |
---|---|
6.3. 移臂调度
目的:使移动臂的移动时间最短,从而减少寻道总时间
6.3.1. 先来先服务算法 FCFS
- 移臂距离大,性能不好,移动臂是随机移动,寻道性能较差
- 按顺序处理请求,对所有进程公平
6.3.3. 扫描算法 SCAN算法
- 移动臂每次向一个方向移动,遇到最近的I/O请求便进行处理,到达最后一个柱面后再向相反方向移动
- 对最近扫描所跨越区域的请求响应较慢
- 和电梯调度算法的不同:碰壁才会折返

6.3.4. 分布扫描算法 N-step-SCAN
- 进程重复请求同一磁道会垄断整个设备造成磁头臂的粘性,采用分步扫描可避免这类问题
- 把磁盘I/O请求队列分成长度为N的子队列,按照FIFI处理每一个子队列,每个子队列内部使用扫描算法
- 在处理一个队列时,新请求
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!