diff --git a/notes/pics/disk-scan.png b/notes/pics/disk-scan.png new file mode 100644 index 00000000..1f0012fb Binary files /dev/null and b/notes/pics/disk-scan.png differ diff --git a/notes/pics/disk-sstf.png b/notes/pics/disk-sstf.png new file mode 100644 index 00000000..abbfeabf Binary files /dev/null and b/notes/pics/disk-sstf.png differ diff --git a/notes/计算机操作系统 - 设备管理.md b/notes/计算机操作系统 - 设备管理.md index 987a7c17..830a4b76 100644 --- a/notes/计算机操作系统 - 设备管理.md +++ b/notes/计算机操作系统 - 设备管理.md @@ -22,6 +22,8 @@ ## 磁盘调度算法 +下面的例子中,磁头当前位于 50 号磁道,按到达顺序有 72、30、95、56、12、81、44 七个请求。先来先服务按这个顺序移动,共移动 318 个磁道。 + 读写一个磁盘块的时间的影响因素有: - 旋转时间(主轴转动盘面,使得磁头移动到适当的扇区上) @@ -46,7 +48,7 @@ 虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。 -

+

### 3. 电梯算法 @@ -58,4 +60,4 @@ 因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。 -

+

diff --git a/tools/diagram/src/disk-scan.svg b/tools/diagram/src/disk-scan.svg new file mode 100644 index 00000000..58e09ed7 --- /dev/null +++ b/tools/diagram/src/disk-scan.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + 电梯算法:磁头在 50,先向磁道号增大的方向移动 + + + 0 + + 10 + + 20 + + 30 + + 40 + + 50 + + 60 + + 70 + + 80 + + 90 + + 100 + 磁道 + + + + + + + + + 50 + + 56 + + + 72 + + + 81 + + + 95 + + + 44 + + + 30 + + + 12 + + 起点 + 淡紫色点是待处理的请求。磁头移动的总距离为 128 个磁道。按先来先服务需要 318 个磁道。 + diff --git a/tools/diagram/src/disk-sstf.svg b/tools/diagram/src/disk-sstf.svg new file mode 100644 index 00000000..4cb4d76f --- /dev/null +++ b/tools/diagram/src/disk-sstf.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + 最短寻道时间优先:磁头在 50,请求 72、30、95、56、12、81、44 + + + 0 + + 10 + + 20 + + 30 + + 40 + + 50 + + 60 + + 70 + + 80 + + 90 + + 100 + 磁道 + + + + + + + + + 50 + + 44 + + + 56 + + + 72 + + + 81 + + + 95 + + + 30 + + + 12 + + 起点 + 淡紫色点是待处理的请求。磁头移动的总距离为 140 个磁道。30 和 12 离得远,一直被推后。 +