计算机技术学习札记

操作系统 5:IO 与存储

设备管理是操作系统的重要组成成分,主要有三种方法:

  • 操作系统直接操纵设备的运行,例如直接程序控制、中断方式控制。

  • 操作系统间接操纵设备的运行,例如 DMA 和通道方式。

  • 操作系统通过使用设备驱动程序,将设备管理工作通过任务(进程)的方式来实现。操作系统只需要制订标准,将具体操作设备的程序交给不同的制造商去开发。

IO 的控制方式

程序直接控制(查询)

CPU 不断重复查询设备的状态,「原地踏步」。最简单,但是效率低——CPU 的速度比 IO 设备快得多。

中断方式

允许 IO 设备主动打断 CPU 的运行并请求服务,让 CPU 可以在等待设备的时候做其他工作。不过,由于数据传输仍然是 CPU 完成,因此中断驱动方式仍然占用较多 CPU 时间。

DMA 方式

在中断方式的基础上,引入一个外围设备来处理数据传输(转移)这件事,实现「简单任务自己做,做完了告诉 CPU 一声」。

流程:

  1. CPU 初始化 DMA,写入存放数据的内存地址、要输入数据的字节数、控制字、启动位。

  2. CPU 保存上下文,当前进程(要用设备的进行)阻塞,调度其他进程运行。

  3. 当设备开始响应时,设备每完成一个数据,DMA 设备都接管内存总线的控制权(周期挪用),将数据写内存(不经过 CPU,CPU 此时阻塞),然后再恢复 CPU 对内存总线的控制权,直到数据传输完成。

  4. 当一批数据传输完成之后,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,但是如果前方没有请求,就回移。