Loading... # I/O管理和磁盘调度 ## I/O 大体分为下面三类: * 人可读:适用于计算机用户间的交互,如打印机和终端(显示器、键盘、鼠标) * 机器可读:适用于与电子设备通信,如磁盘驱动器、USB密钥、传感器、执行器 * 通信:适用于与远程设备通信,如数字线路驱动器、调制解调器 各类设备间很大差别,甚至同一类里也很大 * 数据传输速率 * 应用 * 控制的复杂性 * 传送单元 * 数据表示 * 错误条件 ## I/O功能的组织 三种控制方式 * 程序控制I/O:处理器代表一个进程给I/O模块发送一个I/O命令;该进程进入忙等待,知道操作完成后才能继续执行 * 中断驱动I/O:处理器代表进程向I/O模块发出一个I/O命令。有两种可能性:若来自进程的I/O指令是非阻塞的,则处理器继续执行发出I/O命令的进程的后续指令。若指令是阻塞的,则处理器执行的下一条指令来自OS,它将当前的进程设置为阻塞态并调度其他进程 * 直接存储器访问(DMA):一个DMA模块控制内存和I/O模块之间的数据交换。为传送一块数据,处理器给DMA模块发请求,且只有在整个数据块传送结束后,它才被中断 ## 操作系统设计问题 设计I/O目标:效率和通用性(使用一种统一的方式处理所有的设备) ### I/O功能的逻辑结构 ![image-20220611174914911.png](http://xherlock.top/usr/uploads/2022/06/3176853789.png) 对于逻辑外部设备: **逻辑I/O**:代表用户进程管理的普通I/O功能,允许用户进程根据设备标识符及诸如打开、关闭、读、写之类的简单命令与设备打交道 **设备I/O**:请求的操作和数据被转换为适当的I/O指令序列、通道命令和控制器指令 **调度和控制**:I/O操作的排队、调度实际上发生在这一层,是与I/O模块和设备硬件真正发生交互的软件层 ## I/O缓冲 讨论缓冲需要区分两类I/O设备: * 面向块(block-oriented):将信息保存在块中,块的大小通常固定,一次传送一块,可以通过块号来访问数据 eg:磁盘、USB智能卡 * 面向流(stream-oriented):以字节流的方式输入/输出数据,没有块结构, eg:终端、打印机、通信端口、鼠标和其他指示设备及其他大多数非辅存设备 不同缓冲 * 单缓冲:当用户进程发出I/O请求时,OS为该操作分配一个位于内存中的系统部分的缓冲区 * 双缓冲:在一个进程向一个缓冲区传送数据的同时,操作系统正在清空另一个缓冲区 * 循环缓冲:使用多于两个缓冲区的方案来弥补需求的不足 缓冲作用:平滑I/O需求的峰值的一种技术 ![image-20220611195927411.png](http://xherlock.top/usr/uploads/2022/06/583236039.png) ## 磁盘调度 ### 磁盘性能参数 寻道时间:将磁头臂移到指定磁道所需要的时间 旋转延迟:将磁盘的待访问地址区域旋转到读/写磁头可访问的位置所需要的时间 传输时间:像磁盘传送或从磁盘传送的时取决于磁盘的旋转速度,$T=\frac{b}{rN}$,b为传送的字节数,N表示一个磁道中的字节数,r表示旋转速度,转/秒 ![image-20220611200028927.png](http://xherlock.top/usr/uploads/2022/06/581770902.png) ### 磁盘调度策略 磁盘产生性能差异的原因主要是**寻道时间** * 随机调度(RSS,random scheduling):磁道完全被随机访问,性能最差 * 先进先出(FIFO):按顺序处理,公平 * 优先级(PRI):基于优先级调度 * 后进先出(LIFO):反而可以利用局部性提高吞吐量并缩短队列长度 以上仅基于队列或请求者的属性,如果调度程序知道当前轨道位置,可以采用基于请求项的调度 * 最短服务时间优先(SSTF):选择使磁头臂从当前位置开始移动最少的磁盘I/O请求 * SCAN:除FIFO外,其他策略都可能使得某些请求直到整个队列为空时才可完成,导致饥饿,可以使用该方法要求磁头臂仅沿一个方向移动,并在途中满足所有未完成的请求,知道达到这个方向上最后一个磁道,或者这个方向上没有其他请求为止 * C-SCAN:循环SCAN,把扫描限定在一个方向上,当访问到沿某个方向的最后一个磁道时,磁头臂会返回到磁盘相反方向某段的磁道,并再次开始扫描;这样减少了新请求的最大延迟 为避免“磁头臂的黏性”,磁盘队列分成多段,一次只有一段被完全处理: * N步SCAN:把请求队列分成长度为N的几个子队列,每次用SCAN处理一个子队列 * FSCAN:使用两个子队列,扫描开始时,所有请求在一个队列里,另一个队列为空,扫描过程中,新到的放入另一个队列;新请求的服务延迟到处理完所有老请求后 ![image-20220611202502680.png](http://xherlock.top/usr/uploads/2022/06/546782069.png) 最后修改:2022 年 06 月 11 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏