操作系统 5:IO 与存储
设备管理是操作系统的重要组成成分,主要有三种方法:
操作系统直接操纵设备的运行,例如直接程序控制、中断方式控制。
操作系统间接操纵设备的运行,例如 DMA 和通道方式。
操作系统通过使用设备驱动程序,将设备管理工作通过任务(进程)的方式来实现。操作系统只需要制订标准,将具体操作设备的程序交给不同的制造商去开发。
IO 的控制方式
程序直接控制(查询)
CPU 不断重复查询设备的状态,「原地踏步」。最简单,但是效率低——CPU 的速度比 IO 设备快得多。
中断方式
允许 IO 设备主动打断 CPU 的运行并请求服务,让 CPU 可以在等待设备的时候做其他工作。不过,由于数据传输仍然是 CPU 完成,因此中断驱动方式仍然占用较多 CPU 时间。
DMA 方式
在中断方式的基础上,引入一个外围设备来处理数据传输(转移)这件事,实现「简单任务自己做,做完了告诉 CPU 一声」。
流程:
CPU 初始化 DMA,写入存放数据的内存地址、要输入数据的字节数、控制字、启动位。
CPU 保存上下文,当前进程(要用设备的进行)阻塞,调度其他进程运行。
当设备开始响应时,设备每完成一个数据,DMA 设备都接管内存总线的控制权(周期挪用),将数据写内存(不经过 CPU,CPU 此时阻塞),然后再恢复 CPU 对内存总线的控制权,直到数据传输完成。
当一批数据传输完成之后,DMA 再向 CPU 发出中断信号。
通道方式
进一步强化 DMA 的自主权并称它为通道。通道可以编程,可以管理多个设备同时工作。
一个比喻
改进自王道操作系统书。
想象一位客户要找裁缝做一批衣服。所有的裁缝店都必须立即取走做好的衣服,不能积压。
程序控制方式:裁缝没有客户的联系方式,客户必须每隔一段时间去裁缝店看衣服做好没有。
中断方式:裁缝有客户的联系方式。由于裁缝店不能积压,裁缝做好一件衣服就打一次客户电话,客户接到电话后去取衣服。
DMA 方式:客户委托一位秘书,向她交代衣服做好后放在仓库,以及做了 100 件衣服就向自己报告一次。一位秘书负责与一位裁缝的联系。
通道方式:客户全权委托一位秘书,秘书自己决定衣服放在哪里,自己决定向客户上报的频率,并可以与多位裁缝联系。
磁盘的 IO
HDD 的结构
扇区(Sector)是 HDD 读写的最小单位,以前多为 512 Byte,现在多为 4 KiB。此值由硬件决定,一般不可更改。
磁盘延时的计算
平均寻道时间:碰头摆动找到目标磁道的平均时间,8 ms—12 ms
平均旋转延时:盘面转到目标扇区的平均时间,即旋转半周的时间,4 ms—8 ms
传输时间:传输量 / 传输速度,与读写块大小有关
控制器开销:磁盘主控的开销,很小
平均磁盘访问时间 = 平均寻道时间 + 平均旋转延时 + 传输时间 + 控制器开销。
磁盘访问延迟 = 队列时间 + 平均访问时间
磁盘调度
硬盘的响应速度远远慢于 CPU 的速度,因此会经常出现多个磁盘请求积压形成队列的情况。选择合适的调度策略,能使平均访问的延迟最小。
FCFS 先来先服务
按照请求的顺序调度,磁头长途跋涉。
SSTF 最短寻道时间优先
贪心算法,距离最近的请求优先,存在饥饿问题。
SCAN 扫描算法
SSTF,但是不回折,只要改变方向,就一定会走到另一头。
C-SCAN 循环扫描算法
SCAN,但是到达一端之后,直接到另一端。
C-LOOK 算法
C-SCAN,但是如果前方没有请求,就回移。