戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2017年 秋期 午前215


問題文

ジョブの多重度が1で、到着順にジョブが実行されるシステムにおいて、表に示す状態のジョブA〜Cを処理するとき、ジョブCが到着してから実行が終了するまでのターンアラウンドタイムは何秒か。ここで、OSのオーバヘッドは考慮しないものとする。
応用情報技術者 2017年 秋期 午前2 問15の問題画像

選択肢

11(正解)
12
13
14

🔒 解説は解答すると表示されます

到着順処理のターンアラウンド【午前2解説】

正解の理由

到着順(FCFS)で単一プロセッサ、OSオーバヘッド無視の場合、各ジョブは先に到着したジョブの処理が完了してから開始します。本問ではジョブCの到着時刻が3秒で、Cの実行が完了する時刻は14秒です(以下で時刻の開始・終了を明確に示します)。したがってターンアラウンドタイムは完了時刻から到着時刻を引いた 秒であり、選択肢の11秒が正しい結論です。

解法ステップ

  1. 各ジョブの開始時刻・終了時刻を順に決める(到着順=到着が早い順に実行)。
  2. ジョブの開始時刻は「前のジョブの終了時刻」と「そのジョブの到着時刻」の大きい方。
  3. ジョブCのターンアラウンドタイムは
具体的な時刻計算(開始時刻と終了時刻を明示):
  • ジョブA:到着0秒、処理時間5秒 → 開始0秒、終了5秒(0 ≤ t < 5 を処理)
  • ジョブB:到着2秒、処理時間6秒 → Aが5秒で終わるのでBは5秒に開始、終了は5 + 6 = 11秒(5 ≤ t < 11 を処理)
  • ジョブC:到着3秒、処理時間3秒 → Bが11秒で終わるのでCは11秒に開始、終了は11 + 3 = 14秒(11 ≤ t < 14 を処理)
よってジョブCのターンアラウンドタイムは 秒。
(上の各区間は開始時刻と終了時刻を明確に示しており、「5秒から6秒間」などの曖昧な表現は使っていません。)

選択肢別の誤答解説

  • : 11秒 — 正解。上記の通り、Cの完了時刻14秒と到着3秒の差が11秒になるため正しい。
  • イ(12秒): 多くは「離散的に秒を数える際のオフバイワン誤り」に由来します(例:処理時間の加算で1秒余分に数えてしまい、完了時刻を15秒とし とする誤り)。連続時間として開始・終了を明確に扱えば避けられます。
  • ウ(13秒): 例えばBの処理終了を12秒と誤認(Bの開始時刻を6秒と誤解)し、Cの終了を15秒とするような開始時刻取り違えで生じる誤りです。到着・開始の関係を正確に追うことで防げます。
  • エ(14秒): 「ターンアラウンドタイム」を「完了時刻そのもの」と誤って扱ったケース(完了時刻14秒をそのまま解答)による誤りです。定義は「完了時刻 − 到着時刻」である点を忘れないでください。

よくある誤解

  • 到着時刻と開始時刻の混同:到着していてもCPUが使われている間は開始しないため、開始時刻は「前ジョブの終了時刻」を優先する点を見落としやすい。
  • 完了時刻とターンアラウンドタイムの取り違え:完了時刻(今回14秒)とターンアラウンドタイム(完了時刻−到着時刻=11秒)を混同する受験者がいる。
  • 秒の数え方(離散 vs 連続):0秒開始で処理時間5秒は「0から5までで終了=終了時刻5秒」であり、「5秒から5秒間」など誤解しないこと。

補足コラム

  • ターンアラウンドタイム(Turnaround time)は一般にジョブ単位での「応答性」を表す指標で、待ち時間(キューで待った時間)と実行時間を含みます。式としては 、または
  • 本問のような非先占(non-preemptive)FCFSでは到着順が実行順に直結します。先占(preemptive)スケジューリングや優先度付きだと計算方法が変わります。
  • 小さなスクリプトで時刻計算を再現して確認するのも有効です(参考例)。
参考のPythonシミュレーション(単純化):
jobs = [('A',0,5), ('B',2,6), ('C',3,3)]
time = 0
results = {}
for name, arrival, duration in jobs:
    start = max(time, arrival)
    finish = start + duration
    results[name] = (start, finish)
    time = finish

# 結果表示
for n,(s,f) in results.items():
    print(n, "start", s, "finish", f, "turnaround", f - dict((j[0], j[1]) for j in jobs)[n])
(上スニペットは学習確認用。入出力の細部は用途に応じて調整してください。)

FAQ

Q. 到着時刻が同じジョブが複数ある場合はどう扱うか?
A. 問題文で特別なルールがない限り通常は表やリストの順序(与えられた順)に従うか、問題ごとに明示された同順位の扱いに従います。FCFSでは「先に記載されているもの」を先に実行するのが一般的です。
Q. 「処理時間5秒」は開始時刻を含むのか?終了時刻を含むのか?
A. 連続時間で扱えば「開始時刻 + 処理時間 = 終了時刻」です。たとえば開始0秒で処理時間5秒なら終了は5秒です(0〜5秒の期間を利用)。整数秒の数え方で誤差が出やすいので、開始・終了の時刻を明示して計算してください。

関連キーワード: FCFS, ターンアラウンドタイム, 待ち時間, 到着時刻, 非先占スケジューリング, 完了時刻, 処理順序
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について