操作系统——磁盘调度

一、磁盘调度算法

\(1.\) \(FCFS\) 先来先服务

\((1)\)方法

根据进程请求访问磁盘的先后次序进行调度

\((2)\)优点

公平、简单,且对每个进程的请求都能依次得到处理,不会出现某一个进程的请求长期得不到满足的情况。

\((3)\)缺点

由于未对寻道进行优化,平均寻道时间可能较长。

\(2.\) \(SSTF\) 最短寻道时间优先

\((1)\)方法

访问的磁道,与当前磁头所在的磁道距离最近

\((2)\)优点

每次寻道时间最短

\(SSTF\)调度算法较\(FCFS\)调度算法有更好的寻道性能。

\((3)\)缺点

不能保证平均寻道时间最短

\(SSTF\)调度算法的实质是基于优先级进行调度,因此可能导致优先级低的进程出现”饥饿“现象。

\(3.\)\(SCAN\) 扫描算法(电梯调度算法)

\((1)\)方法

磁头在一个方向上移动直到达到最远的请求,然后改变方向

当磁头正在自里向外移动时,先考虑此方向上是否还有要访问的对象。如果有,则继续按照此方向移动;如果没有,则更改方向

\((2)\)优点

寻道性能较好,可避免”饥饿“现象

\((3)\)缺点

不利于原理磁头一段的访问请求

当磁头刚自里向外移动而越过某一磁道后,此时,该进程必须等待,待磁头继续自里向外,然后再自外向里扫描完处于外面的额所有要访问的磁道后,才处理该进程的请求,这致使该进程的请求被打打地延迟。

\(4.\)\(CSCAN\) 循环调度算法

\((1)\)方法

消除了对两端磁道请求的不公平

规定磁头始终朝一个方向移动,即从磁盘的内部向外或从外部向内部。当磁头到达磁盘的一端(最内圈或最外圈)时,它不会立即反转方向,而是跳转到另一端,并继续在同一方向上移动,形成环形路径

\((2)\)优点

  • 提高效率

    由于磁头不会频繁改变方向,\(CSCAN\)算法可以减少磁头的停顿和反转次数,提高磁盘操作的效率。

  • 避免饥饿现象

    由于磁头不会频繁改变方向,\(CSCAN\)算法可以减少磁头的停顿和反转次数,提高磁盘操作的效率。

  • 请求公平性

    \(CSCAN\)算法为磁盘上所有位置的请求提供了相对公平的服务机会,减少了某些请求因位置不佳而受到的不利影响。

\((3)\)缺点

  • 磁头移动距离增加

    由于磁头在到达一端后需要跳转到另一端继续移动,这可能导致磁头的总移动距离增加。

  • 响应时间可能较长

    对于靠近磁头当前移动方向末端的请求,可能需要等待较长时间才能得到服务,因为磁头需要完成当前方向上的所有请求后才能跳转并返回。

二、考研真题

\(1.\)

题目:

假设有11个进程先后提出磁盘\(I/O\)请求,当前磁头正在100号磁道处,并预向磁道序号增加的方向移动。请求队列的顺序为\(30、145、120、78、82、140、20、42、165、55、65\),分别用\(FCFS\)调度算法和\(SCAN\)调度算法完成上述诉求,写出磁道访问顺序和每次磁头移动的距离,并计算平均移动磁道数。

解答:

\((1)\) \(FCFS\)调度算法

从100号磁道开始

被访问的下一个磁道号 移动距离(磁道数)
30 70
145 115
120 25
78 42
82 4
140 58
20 120
42 22
165 123
55 110
65 10

平均寻道长度:\((70+115+25+42+4+58+120+22+123+110+10)/11=63.55\)

\((2)\)\(SCAN\)调度算法

被访问的下一个磁道号 移动距离(磁道数)
120 20
140 20
145 5
165 20
82 83
78 4
65 13
55 10
42 13
30 12
20 10

平均寻道长度:\((20+20+5+20+83+4+13+10+13+12+10)/11=19.1\)

\(2.\)

题目:

磁盘请求服务队列中要访问的磁道分别为\(38、6、37、100、14、124、65、67\),磁头上次访问了20号磁道,当前处于30号磁道上,试采用\(FCFS、SSTF\)\(SCAN\)调度算法,分别计算磁头移动的磁道数。

解答:

\((1)\) \(FCFS\)调度算法

从30号磁道开始

被访问的下一个磁道号 移动距离(磁道数)
38 8
6 32
37 31
100 63
14 86
124 110
65 59
67 2

移动磁道数:\(8+32+31+63+86+110+59+2=391\)

\((2)\) \(SSTF\)调度算法

从30号磁道开始

被访问的下一个磁道号 移动距离(磁道数)
37 7
38 1
14 24
6 8
65 59
67 2
100 33
124 24

移动的磁道数:\(7+1+24+8+59+2+33+24=158\)

\((3)\)\(SCAN\) 调度算法

磁头上次访问了20号磁道,当前处于30号磁道上,可知当前磁头的方向

被访问的下一个磁道号 移动距离(磁道数)
37 7
38 1
65 27
67 2
100 33
124 24
14 110
6 8

移动的磁道数:\(7+1+27+2+33+24+110+8=212\)

posted @ 2024-07-06 14:35  Gu_diao  阅读(208)  评论(0)    收藏  举报