基本情報技術者試験「SJFスケジューリング」の問題
4つのタスクが時刻0に同時到着し、処理時間はそれぞれ6・2・8・4である。処理時間の短い順に実行するSJF(ノンプリエンプティブ)方式を用いるとき、4タスクの平均待ち時間はいくらか。
ア5
イ待ち時間の平均は10
ウ4となる
エおよそ7.5
正解
ア.5
SJFは処理時間2・4・6・8の順で実行する。各タスクの待ち時間(開始時刻)は0、2、2+4=6、2+4+6=12。合計20を4で割り平均待ち時間は5となり正しい。
?選択肢ごとの解説
ア ○SJFは処理時間2・4・6・8の順で実行する。各タスクの待ち時間(開始時刻)は0、2、2+4=6、2+4+6=12。合計20を4で割り平均待ち時間は5となり正しい。
イ ×10は処理時間の合計20を待ち時間と取り違えるなど、平均をとる際の分母や対象を誤った値である。
ウ ×4は待ち時間の合計20を5で割るなど分母を取り違えた誤り、または一部タスクを数え漏らした値である。
エ ×およそ7.5は処理時間の長い順(到着順FCFSでの最悪に近い順)で実行した場合の平均に近く、SJFの並べ替えを行っていない誤りである。
✎くわしく
SJFは到着済みタスクのうち最短のものから実行し、平均待ち時間を最小化する。待ち時間は各タスクの開始時刻に等しく、短いタスクを先に通すほど後続全体の待ちが減る。これがSJFが平均待ち時間最小となる理由である。
✓本番での押さえどころ
試験のコツ
SJFはまず処理時間で昇順ソート。各タスクの待ち時間=それより前のタスクの処理時間の累計、と機械的に積み上げる。
覚え方
SJFは『短い用事から済ませる』。短い順に通すと全員の待ち合計が最小になる、と直感で覚える。
よくある誤り
並べ替えずに到着順で計算する、または待ち時間とターンアラウンドタイムを取り違える誤りが多い。
ソフトウェアの他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0208