原文筆記
本課程筆記操作系統 · 43 篇
Chap. 11 HW
1. 磁盘调度算法 FIFO、SSTF、SCAN 计算磁头移动磁道数
题目内容
Assume a disk with 200 tracks and that the disk request queue has random requests in it. The requested tracks, in the order received by the disk scheduler, are 27, 129, 110, 186, 147, 41, 10, 64, 120. Assume that the disk head is initially positioned over track 100 and is moving in the direction of decreasing track number. Using disk scheduling algorithms FIFO, SSFT, SCAN to calculate the number of tracks traversed.
中文意思:
假设一块磁盘有 200 个磁道,磁道号通常可理解为 0 到 199。磁盘请求队列中的请求磁道号按到达顺序为:
27, 129, 110, 186, 147, 41, 10, 64, 120
磁头初始位置在磁道 100,并且正在向磁道号减小的方向移动。分别使用 FIFO、SSTF、SCAN 算法,计算磁头总共移动了多少个磁道。
注意:题目里的 SSFT 应该是 SSTF,即 Shortest Seek Time First,最短寻道时间优先。
解题核心
磁头移动距离的计算公式是:
总移动磁道数就是每一次移动距离之和。
一、FIFO 算法
FIFO 即 First-In First-Out,先来先服务。
也就是说,请求按原来的到达顺序处理:
逐步计算:
总移动磁道数:
所以:
FIFO 总移动磁道数为:
二、SSTF 算法
SSTF 即 Shortest Seek Time First,最短寻道时间优先。
每次都选择距离当前磁头位置最近的请求。
初始位置是 100。
请求队列:
27, 129, 110, 186, 147, 41, 10, 64, 120
从 100 出发,离 100 最近的是 110:
剩余:
27, 129, 186, 147, 41, 10, 64, 120
从 110 出发,最近的是 120:
从 120 出发,最近的是 129:
从 129 出发,最近的是 147:
从 147 出发,最近的是 186:
此时剩余请求都在较小磁道方向:
27, 41, 10, 64
从 186 出发,最近的是 64:
从 64 出发,最近的是 41:
从 41 出发,最近的是 27:
最后:
所以 SSTF 的访问顺序为:
逐步计算:
总移动磁道数:
所以:
SSTF 总移动磁道数为:
三、SCAN 算法
SCAN 又叫电梯算法。
题目说磁头初始方向是磁道号减小的方向,所以先处理小于 100 的请求,再反向处理大于 100 的请求。
小于 100 的请求有:
64, 41, 27, 10
按磁头减小方向访问:
然后反向访问大于 100 的请求:
110, 120, 129, 147, 186
所以访问顺序为:
逐步计算:
总移动磁道数:
所以:
SCAN 总移动磁道数为:
补充说明
按 Stallings 表 11.2 的 SCAN 算法示例,磁头到达当前方向上最后一个请求后就反向,不一定额外移动到磁盘最边界。
所以本题 SCAN 取:
如果你的老师要求严格 SCAN 必须先走到磁道 0 再反向,则访问过程为:
总移动磁道数为:
考试按 Stallings 的表格风格,通常写:
第 1 题最终答案
FIFO:
SSTF:
SCAN:
如果严格要求 SCAN 到磁盘边界 0:
2. 中断驱动 I/O 中 CPU 花费多少时间处理中断
题目内容
Assume that the disk rotates at 360 rpm. A processor reads one sector from the disk using interrupt-driven I/O, with one interrupt per byte. If it takes 2.5 µs to process each interrupt, what percentage of the time will the processor spend handling I/O (disregard seek time)?
中文意思:
假设磁盘转速为 360 rpm。处理器使用中断驱动 I/O 从磁盘读取一个扇区,每读取 1 字节产生一次中断。如果处理一次中断需要 ,问处理器有百分之多少的时间用于处理中断?忽略寻道时间。
本题使用第 5 题给出的磁盘信息:
每个扇区大小:
字节
每个磁道:
个扇区
解题核心
每字节一次中断,所以读一个扇区会产生:
次中断
每次中断处理时间:
所以处理中断总时间:
即:
计算磁盘传输一个扇区的时间
磁盘转速:
意思是每分钟转 360 圈。
每秒转数:
转/秒
所以一圈时间:
换成毫秒:
每个磁道有 96 个扇区,所以一个扇区经过磁头的时间是:
即:
计算 CPU 用于处理中断的比例
比例为:
代入:
所以:
CPU 大约有:
的时间花在处理中断上。
补充说明
这个题通常只把“扇区传输时间”作为分母,不把平均旋转等待时间算进去。
如果老师把“随机读一个扇区”理解成还要包括平均旋转延迟,则平均旋转延迟为半圈:
总时间约为:
此时比例为:
但 Stallings 这类题通常考的是 I/O 传输期间中断开销,所以主要答案写:
第 2 题最终答案
CPU 处理中断的时间比例约为:
3. 计算最大聚合 I/O 传输速率
题目内容
A 32-bit computer has two selector channels and one multiplexor channel. Each selector channel supports two magnetic disk and two magnetic tape units. The multiplexor channel has two line printers, two card readers, and ten VDT terminals connected to it. Assume the following transfer rates:
Disk drive: 800 Kbytes/s
Magnetic tape drive: 200 Kbytes/s
Line printer: 6.6 Kbytes/s
Card reader: 1.2 Kbytes/s
VDT: 1 Kbytes/s
Estimate the maximum aggregate I/O transfer rate in this system.
中文意思:
一台 32 位计算机有两个选择通道和一个多路复用通道。每个选择通道连接两个磁盘驱动器和两个磁带机。多路复用通道连接两个行式打印机、两个读卡机和十个 VDT 终端。给出各设备传输速率,求系统最大总 I/O 传输速率。
解题核心
这里要区分两种通道:
- 选择通道 selector channel
选择通道通常用于高速设备,但一次只能服务一个设备。
所以一个选择通道的最大传输速率不是把所有设备加起来,而是取它能服务的最快设备速率。
每个选择通道连接:
2 个磁盘,每个
2 个磁带机,每个
最快设备是磁盘:
所以每个选择通道最大传输速率为:
有两个选择通道:
- 多路复用通道 multiplexor channel
多路复用通道用于低速设备,可以让多个低速设备交错传输。
所以它的最大速率可以把连接设备速率相加。
两个行式打印机:
两个读卡机:
十个 VDT 终端:
多路复用通道总速率:
系统最大聚合 I/O 传输速率
总速率为:
换成 MB/s 约为:
第 3 题最终答案
最大聚合 I/O 传输速率为:
约等于:
4. 磁盘记录顺序存放与优化存放
题目内容
假设有 8 个记录 A、B、C、D、E、F、G、H 存放在磁盘里,每个磁道有 8 个扇区,正好可以存放 8 个记录。假设磁盘旋转速度为 20ms/转,处理程序每读出一个记录后,用 2ms 的时间进行处理,请问:
a. 当记录 A、B、C、D、E、F、G、H 按顺序放在磁道上时,顺序处理这 8 个记录花费的总时间是多少?假设启动时的位置正好在 A 扇区的起点。
b. 如何采取优化方法,使处理这些记录所花费的总时间最短?并求出该最短时间。
解题核心
一圈有 8 个扇区,一圈时间为 20ms。
所以每个扇区经过磁头的时间是:
读取一个记录需要经过一个扇区,所以读取一个记录的时间为:
读完一个记录后,CPU 还要处理:
因此处理一个记录之后,下一次能准备好继续读的时间为:
注意:
相邻扇区之间只隔:
但是读完并处理完一个记录需要:
所以如果记录按 A、B、C、D、E、F、G、H 连续存放,读完并处理 A 之后,B 已经从磁头下转过去了,必须等 B 下一圈再回来。
这就是磁盘记录顺序存放导致效率低的原因。
a. 顺序存放时的总时间
记录按顺序放置:
A B C D E F G H
启动时正好在 A 扇区起点。
读取并处理 A 需要:
但处理完 A 时,B 的扇区起点早就过去了,所以要等待 B 下一圈回来。
B 的起点在 A 起点之后:
处理完 A 的时间是:
已经错过 B 起点:
所以需要等到下一圈的 B:
也就是说,每两个相邻逻辑记录之间都会多等:
8 个记录总共有 7 次等待。
每个记录的读取加处理时间:
8 个记录共:
等待时间共:
所以总时间为:
a 的答案
顺序存放时,总时间为:
b. 优化方法
优化思想:
不要把逻辑上相邻的记录放在物理上相邻的扇区,而是进行交错存放,也叫磁盘交错 interleaving。
因为读完并处理一个记录需要:
而一个扇区时间是:
所以读完并处理后,磁盘已经转过:
个扇区。
下一次读应该安排在大约 2 个扇区之后。
因此,逻辑上的下一个记录最好放在当前记录后面第 2 个扇区的位置。
构造最优存放方式
按照磁盘旋转方向,把 8 个扇区编号为:
0, 1, 2, 3, 4, 5, 6, 7
让 A 放在 0 号扇区。
为了让下一个逻辑记录在 2 个扇区之后出现,可以安排:
A 在 0 号扇区
B 在 2 号扇区
C 在 4 号扇区
D 在 6 号扇区
继续往后时,因为 0 号扇区已经被 A 占了,所以 E 不能放回 0 号扇区,只能放在下一个合适的位置 1 号扇区。
于是可以安排:
E 在 1 号扇区
F 在 3 号扇区
G 在 5 号扇区
H 在 7 号扇区
所以沿磁盘旋转方向的物理存放顺序为:
A E B F C G D H
也可以写成扇区表:
| 扇区号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 记录 | A | E | B | F | C | G | D | H |
这样逻辑处理顺序仍然是:
A, B, C, D, E, F, G, H
只是它们在磁盘上的物理位置被交错安排了。
优化后的时间计算
访问 A:
A 从 开始读,读完并处理完需要:
B 在 2 号扇区,开始时间是:
所以刚好赶得上 B。
A 到 B 的起点间隔:
同理:
B 到 C:
C 到 D:
D 到 E:
D 在 6 号扇区,起点是
读完并处理完 D 到:
E 在 1 号扇区,下一次出现时间是:
所以 D 到 E 的起点间隔:
然后:
E 到 F:
F 到 G:
G 到 H:
所以从 A 起点到 H 起点的间隔总和为:
H 本身还需要读取并处理:
所以总时间:
b 的答案
最优物理存放顺序可以为:
A E B F C G D H
顺序处理 A、B、C、D、E、F、G、H 的最短时间为:
第 4 题最终答案
a. 顺序存放时:
b. 采用交错存放,例如:
A E B F C G D H
最短处理时间:
5. 计算存储 300000 条逻辑记录需要多少磁盘空间
题目内容
Calculate how much disk space (in sectors, tracks, and surfaces) will be required to store 300,000 120-byte logical records if the disk is fixed-sector with 512 bytes/sector, with 96 sectors/track, 110 tracks per surface, and 8 usable surfaces. Ignore any file header record(s) and track indexes, and assume that records cannot span two sectors.
中文意思:
计算存储 300000 条逻辑记录需要多少磁盘空间,要求用扇区数、磁道数、盘面数表示。
已知:
每条逻辑记录大小:
字节
每个扇区大小:
字节
每磁道扇区数:
个扇区/磁道
每盘面磁道数:
个磁道/盘面
可用盘面数:
个
忽略文件头和磁道索引,并且假设一条记录不能跨越两个扇区。
解题核心
因为一条记录不能跨扇区,所以一个扇区里能放多少条记录,要用向下取整。
每扇区可放记录数:
因为:
一个扇区剩余:
字节无法再放一条完整记录,所以浪费掉。
计算需要的扇区数
共有 300000 条记录,每个扇区放 4 条。
需要扇区数:
所以需要:
个扇区。
计算需要的磁道数
每个磁道有 96 个扇区。
需要磁道数:
先计算:
因为磁道数必须是整数,所以向上取整:
所以需要:
个磁道。
也可以理解为:
781 个完整磁道加 24 个扇区。
因为:
剩余扇区:
所以需要再占用第 782 个磁道的一部分。
计算需要的盘面数
每个盘面有 110 个磁道。
需要盘面数:
计算:
向上取整:
所以需要:
个盘面。
更细一点说:
7 个完整盘面可以提供:
个扇区。
还剩:
个扇区。
这些扇区需要:
个磁道。
所以实际占用为:
7 个完整盘面 + 第 8 个盘面的 12 个磁道
因此按整数盘面数计算,需要:
个盘面。
第 5 题最终答案
需要扇区数:
需要磁道数:
需要盘面数:
更精确地说:
占用 7 个完整盘面,再占用第 8 个盘面的 12 个磁道。
第 1 题
FIFO:
SSTF:
SCAN:
如果严格要求 SCAN 必须走到磁道 0 再反向:
第 2 题
CPU 用于处理中断的时间比例约为:
第 3 题
最大聚合 I/O 传输速率:
约等于:
第 4 题
顺序存放:
优化交错存放,例如:
A E B F C G D H
最短时间:
第 5 题
需要扇区数:
需要磁道数:
需要盘面数: