详见教材第6章习题6-6、6-13。
6-6.
下列工作各是在4层I/O软件的哪一层上实现的?
知识点梳理:
从底层到上层分为四层,主要功能为
- 中断处理程序
- 设备驱动程序
- 设备独立的软件
- 用户空间的I/O软件
(1) 对于读磁盘,计算磁道、磁头和扇区。
设备驱动程序
- 理由:这是将逻辑块号转换为物理地址(CHS:柱面/磁头/扇区)的过程,属于硬件相关的操作,是设备驱动程序的典型职责。
(2) 维持最近所用块而设的高速缓冲。
设备独立的软件
- 理由:缓冲区管理是与具体设备无关的通用功能,适用于所有块设备,属于设备独立层提供的通用服务。
(3) 向设备寄存器写命令。
设备驱动程序
- 理由:直接操作硬件寄存器是设备驱动程序的核心工作,需要了解具体硬件的寄存器规格和命令格式。
(4) 查看是否允许用户使用设备。
设备独立的软件
- 理由:权限检查、访问控制是操作系统提供的通用保护机制,与具体设备类型无关,属于设备独立层的功能。
(5) 为了打印,把二进制整数转换成ASCII。
用户空间的I/O软件
- 理由:数据格式转换(二进制→ASCII)是应用层或用户库的工作,属于面向用户的高层服务,不是内核或驱动程序的职责。
6-13.
假设移动头磁盘有200个磁道(0~199号)。目前正在处理143号磁道上的请求,而刚刚处理结束的请求是125号,如果下面给出的顺序是按FIFO排成的等待服务队列顺序:86,147,91,177,94,150,102,175,130。
那么,用下列各种磁盘调度算法来满足这些请求所需的总磁头移动量是多少?(给出磁道访问序列)
FCFS(先来先服务)算法
访问序列:143 → 86 → 147 → 91 → 177 → 94 → 150 → 102 → 175 → 130
143 → 86: |143-86| = 57 86 → 147: |86-147| = 61 147 → 91: |147-91| = 56 91 → 177: |91-177| = 86 177 → 94: |177-94| = 83 94 → 150: |94-150| = 56 150 → 102: |150-102| = 48 102 → 175: |102-175| = 73 175 → 130: |175-130| = 45总移动量 = 57+61+56+86+83+56+48+73+45 = 565个磁道
SSTF(最短寻道时间优先)算法
每次选择距离当前磁道最近的请求。
访问序列:143 → 147 → 150 → 175 → 177 → 130 → 102 → 94 → 91 → 86
总移动量 = 4+3+25+2+47+28+8+3+5 = 125个磁道
SCAN(扫描算法)
磁头继续当前方向移动,到达边界后反向。当前方向125 -> 143(增大)。
访问序列:143 → 147 → 150 → 175 → 177 → 199(边界)→ 130 → 102 → 94 → 91 → 86
总移动量 = 4+3+25+2+22+69+28+8+3+5 = 169个磁道
LOOK算法
SCAN的改进版,不到达物理边界,只到最后一个请求即反向
访问序列:143 → 147 → 150 → 175 → 177 → 130 → 102 → 94 → 91 → 86
总移动量 = 4+3+25+2+47+28+8+3+5 = 125个磁道
C-SCAN(循环扫描算法)
磁头单向扫描,到达边界后直接返回另一端继续。
访问序列:143 → 147 → 150 → 175 → 177 → 199(边界)→ 0(返回)→ 86 → 91 → 94 → 102 → 130
总移动量 = 4+3+25+2+22+199+86+5+3+8+28 = 385个磁道