磁気ディスク装置のヘッドが現在シリンダ番号100にあり,待ち行列にシリンダ番号120,90,70,80,140,110,60への入出力要求が並んでいる。
次の条件のとき,ヘッドが移動するシリンダの総数は幾らか。
〔条件〕
(1) 入出力要求を並べ替えて,できるだけヘッドを一方向に動かし,シリンダ番号順に処理する,シーク最適化方式である。
(2) 現在のヘッドの移動方向は,シリンダ番号が増加する方向にある。
(3) 現在のヘッドの移動方向のシリンダに入出力要求がなくなったとき,ヘッドの移動方向を変える。
(4) 入出力要求の処理順序を変更しても,処理結果に影響はない。
(5) 処理中に新たな入出力要求は発生しない。
正答2
解説
正解は2です。
ヘッドを一方向に動かしながら順に要求を処理し、その方向の要求がなくなったら向きを変える方式です。
エレベータの動きに似ているため、エレベータ方式とも呼ばれるシーク最適化です。
【計算】
現在位置は100で、シリンダ番号が増加する方向に動いています。
増加方向の要求は110、120、140なので、100から140まで移動します。
この区間の移動量は、140-100=40シリンダです。
140より大きい番号の要求はないので、向きを変えて減少方向に進みます。
減少方向の要求は90、80、70、60なので、140から60まで移動します。
この区間の移動量は、140-60=80シリンダです。
合計は、40+80=120シリンダです。
【選択肢別解説】
1:× 80シリンダは、140から60へ戻る区間だけの移動量です。
最初に100から140まで動く40シリンダが含まれていません。
2:○ 増加方向の40シリンダと、減少方向の80シリンダを合計した120シリンダです。
3:× 条件どおりに移動すると合計は120シリンダであり、160シリンダにはなりません。
移動量を多く数えすぎています。
4:× 220シリンダは、並べ替えずに待ち行列の順(120、90、70、80、140、110、60)で処理した場合の移動量です。
20+30+20+10+60+30+50=220となり、シーク最適化をしていない値です。
【ポイント】
シーク最適化の問題は、数直線上にシリンダ番号を並べ、ヘッドの動きを折れ線で描くと計算ミスを防げます。
並べ替えない先着順(FCFS:First Come First Served)との違いもよく問われます。