基本情報技術者 2011年 秋期 午前(科目A) 問14
問題文
磁気ディスク装置のヘッドが現在シリンダ番号100にあり、待ち行列にシリンダ番号120, 90, 70, 80, 140, 110, 60への入出力要求が並んでいる。次の条件のとき、ヘッドが移動するシリンダの総数は幾らか。
〔条件〕
(1) 入出力要求を並べ替えて、できるだけヘッドを一方向に動かし、シリンダ番号順に処理する、シーク最適化方式である。
(2) 現在のヘッドの移動方向は、シリンダ番号が増加する方向にある。
(3) 現在のヘッドの移動方向のシリンダに入出力要求がなくなったとき、ヘッドの移動方向を変える。
(4) 入出力要求の処理順序を変更しても、処理結果に影響はない。
(5) 処理中に新たな入出力要求は発生しない。
選択肢
ア:80
イ:120(正解)
ウ:160
エ:220
磁気ディスク装置のヘッド移動総数【午前2 解説】
要点まとめ
- 結論: 現在ヘッドはシリンダ100で増加方向へ進むため、上方向の要求110→120→140を先に処理し反転して90→80→70→60を処理、総移動量は120シリンダです。
- 根拠: 要求をシリンダ番号順に並べ替え一方向にできるだけ進む「LOOK」ルールに従うと、移動経路は100→110→120→140→90→80→70→60であり各区間の差を足せば総移動距離が求まります。
- 差がつくポイント: 誤ってSCAN(端まで行く)やSSTF(最短探索優先)と混同しないこと。現在方向にある要求を先に完全消化してから反転する点を正確に理解すると得点できます。
正解の理由
ヘッドは増加方向にあり、移動可能な要求をすべて増加方向のシリンダ順で処理します(110, 120, 140)。増加方向の要求がなくなった時点で反転し、残りを減少方向の順で処理します(90, 80, 70, 60)。移動距離を区間ごとに計算すると、
。
これらを合計すると となり、正解は イ(120)です。
よくある誤解
- LOOKとSCANを混同して端(最小0や最大トラック)までヘッドを移動したと考える誤り。SCANは端まで行くが、LOOKは最遠要求で反転します。
- 現在方向にある要求を無視して逆方向から処理を始める、またはSSTFのように常に最短移動を選ぶと誤答になります。
- 「処理順序を変えられるから結果は同じ」として、計算を単純化しすぎて反転位置を誤るパターン。
解法ステップ
- 現在位置と移動方向を確認する: 現在100、方向は増加(大きい番号へ)。
- 要求を2群に分ける: 現在位置以上(≥100)と現在位置未満(<100)。
- ≥100: 110, 120, 140(昇順で処理)
- <100: 90, 80, 70, 60(反転後に降順で処理)
- 実際の移動順を決定する: 100→110→120→140(反転)→90→80→70→60。
- 各区間の差を求めて合計する: 。
- 以上より総移動量は120シリンダで確定。
選択肢別の誤答解説
- ア: 80 — もし「100から最大まで行かずに上方向だけで110,120,140を処理した後そこで終了」と誤解すると、100→140だけの40や別の短縮計算で80を導く誤りがあるが、反転して残りを処理する必要があるため不足です。
- イ: 120 — 正解。100→110→120→140→90→80→70→60の区間差を合計して120シリンダになります。
- ウ: 160 — 160 を選ぶ人は「上方向で140まで行った後、逆方向でさらに0まで行く(または別の最遠点まで余分に移動)」など端までの移動を無意味に加えた可能性があります。LOOKでは最遠要求までしか行きません。
- エ: 220 — 220 を導く誤りは、SCANで一方向の端(例えば最大または最小のトラック)まで移動する場合の計算ミスに由来することが多いです。今回の条件では端まで行く必要はありません。
補足コラム
- アルゴリズム名: 今回の条件は「LOOK」に相当します。LOOKはヘッドが端まで行かず、最遠要求で反転するため無駄な走行を削減します。
- 便利な計算式(増加方向スタートで上下に要求がある場合): 総移動距離 = (max_up - start) + (max_up - min_down)
- 今回は max_up=140, start=100, min_down=60 なので 。
- SCAN(エレベーター)では端まで移動するため、端の位置に依存して総移動量が増える点に注意してください。
FAQ
Q1: 要求が全て現在位置より大きい場合はどうなる?
A1: そのまま増加方向に処理を続け、最遠要求まで到達して終了します(反転不要)。総移動は最遠要求と現在位置の差のみです。
A1: そのまま増加方向に処理を続け、最遠要求まで到達して終了します(反転不要)。総移動は最遠要求と現在位置の差のみです。
Q2: LOOKとSCANの見分け方は?
A2: 要求の最遠位置が現在の最大・最小でない場合、SCANは端まで行く、LOOKは最遠要求で反転します。問題文で「できるだけ一方向に動かし、シリンダ番号順に処理」「現在の移動方向のシリンダに入出力要求がなくなったとき反転」とあればLOOKを想定します。
A2: 要求の最遠位置が現在の最大・最小でない場合、SCANは端まで行く、LOOKは最遠要求で反転します。問題文で「できるだけ一方向に動かし、シリンダ番号順に処理」「現在の移動方向のシリンダに入出力要求がなくなったとき反転」とあればLOOKを想定します。
Q3: 新しい要求が途中で来たら?
A3: 本問は「処理中に新たな入出力要求は発生しない」としているため考慮不要ですが、実運用では到着タイミングで挙動(動的スケジューリング)が変わります。
A3: 本問は「処理中に新たな入出力要求は発生しない」としているため考慮不要ですが、実運用では到着タイミングで挙動(動的スケジューリング)が変わります。
関連キーワード: 磁気ディスク、シーク時間、ヘッドスケジューリング、LOOKアルゴリズム、SCANアルゴリズム、シリンダ番号、ディスクスケジューリング

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

