一、原理
先來先服務(FCFS,first-come first-service)根據進程請求訪問磁盤的先后次序進行調度。
最短尋道時間優先(SSTF,Shortest Seek Time First)選擇訪問的磁道與當前磁頭所在的磁道距離最近的進程,以使每次的尋道時間最短。
注意(不論被訪問的下一個磁道號是幾,計算移動距離都是:大數減小數)
二、例題
(一)FCFS調度算法 和 SSTF調度算法
若磁頭的當前位置在第100磁道,現在有一磁盤讀寫請求序列如下:55,58,39,18,90,160,150,38,184。分別采用先來先服務算法(FCFS),最短尋道時間優先算法(SSTF),求總尋道長度和平均尋道長度。
因此磁頭總尋道長度: (100-55)+(58-55)+(58-39)+(39-18)+(90-18)+(160-90)+(160-150)+(150-38)+(184-38)= 498,平均移動磁道數: 498/9 =55.3;
因此磁頭總尋道長度: (100-18)+(184-18)=248,或者10 + 32 +3+ 16 +1+20 + 132 + 10 + 24=248,平均移動磁道數: 248/9= 27.5;
注: (100-18)+(184-18)為拿初始值減去最小值和最大值減去最小值相加,這里碰巧了184為其中最大且為最后一個所以可以這樣算,其原理可以從下圖的例子看出
FCFS,SSTF,SCAN,CSCAN算法計算總尋道長度和平均尋道長度例題
磁盤調度算法帶圖詳解
(二)若干個等待訪問磁盤者依次要訪問的柱面為20,44,40,4,80,12,76,移動臂當前位於40號柱面,請按下列算法分別計算為完成上述各次訪問總共花費的尋找時間。
(1)先來先服務算法;
(2)最短尋找時間優先算法。
答:
(1)40 → 20 → 44 → 40 → 4 → 80 → 12 → 76
距離:(20)(24)(4)(36)(76)(68)(64) 共移動292柱面
(2)40 → 44 → 20 → 12 → 4 → 76 → 80
距離:(4)(24)(8)(8)(72) (4) 共移動120柱面
(三)【2018騰訊秋招題目】若磁頭當前位置為100磁道,磁頭由外向內移動,現有一磁盤讀寫請求隊列(共12個):23,376,205,132,19,61,190,398,29,4,18,40。若采用先來先服務、最短尋道時間優先算法,試計算出平均尋道長度各為多少?
答:
(1)算法思想:
FCFS算法(先來先服務)的思想是根據磁盤讀寫請求的先后次序來訪問。
SSTF算法(最短尋道時間優先)的思想是每次總是尋找離當前柱面(或磁道)最近的優先訪問。
(2)平均尋道分析
采用FCFS處理次序為:100-23-376-205-132-19-61-190-398-29-4-18-40,因此磁頭移動磁道總數為(100-23)+(376-23)+(376-205)+ (205-132)+(132-19)+(61-19)+(190-61)+(398-190)+(398-29)+(29-4)+(18-4)+(40-18) = 1596。總柱面數為:1596,因此平均尋道長度為1596/12=133。
采用SSTF處理次序為:100-132-190-205-61-40-29-23-19-18-4-376-398,因此磁頭移動磁道總數為(132-100)+(190-132)+(205-190)+(205-61)+(61-40)+(40-29)+(29-23)+(23-19)+(19-18)+(18-4)+(376-4)+(398-376)=700。總柱面數為:700,因此平均尋道長度為700/12≈58.3。