【システム構成】CPU空き時間をなくして処理効率を最大化!「マルチプログラミング」|情報処理問題1000本ノック
基本情報技術者試験や応用情報技術者試験のOS・オペレーティングシステム分野で頻出の古典的かつ本質的な重要概念。「マルチプログラミング」の定義と、OSが担う役割(メモリ管理・ジョブ管理・スケジューリング)を攻略しましょう。
1. 【 問題 】:テクノロジ系(OS・オペレーティングシステム)
【 問題 】 OSの制御方式および制御機能に関する記述です。CPUの利用効率を高めるため、複数のプログラムをメモリ(主記憶)上に同時に常駐させ、入出力(I/O)処理の待ち時間などを利用してCPU処理を切り替えながら並行実行するOSの制御方式は、次のうちどれか。
(ア)マルチタスク(マルチプロセッシング)
(イ)マルチプログラミング(Multiprogramming)
(ウ)タイムシェアリングシステム(TSS)
(エ)スプール(SPOOLing)
2. 正解:
正解:(イ)マルチプログラミング(Multiprogramming)
3. 解説:「『CPUを休ませない』ためのメモリ&ジョブ管理機能!」
プログラムの実行中、プリンタ出力やディスクの読み書き(I/O処理)が発生すると、CPUはデータ到着まで待ち状態になります。
マルチプログラミングでは、メモリに複数のプログラムを常駐させておき、AというプログラムがI/O待ちに入ったら、すかさずBというプログラムの計算にCPUを割り当てることで、**CPUの「空き時間(アイドルタイム)」を極限まで減らします**。
| OSの役割・アクティビティ | 具体的な制御・内容 |
|---|---|
| 1. メモリ上の複数プログラム管理 | 複数のプログラムが互いのメモリ領域を破壊しないよう、メモリ割り当てや記憶保護(メモリプロテクション)を行う。 |
| 2. JOBプールでのJOB管理 | 実行待ちのジョブ(一連の処理単位)をプール(待ち行列)に蓄積し、優先順位に基づいて順次選択・管理する。 |
| 3. JOBの実行とCPU割り当て | I/O待ちなどの割り込みを検知し、適切なプログラムにCPUの使用権(タイムスライスやスケジューリング)を切り替えて実行する。 |
1. 理解のコツ:
・「1人のシェフ(CPU)が複数の料理(プログラム)を並行して作る」シーンを想像してください。
・スープを煮込んでいる(I/O待ち)間に、別のまな板にある肉を切る(別のプログラムを計算する)。そのためには、すべての材料・レシピが作業台(メモリ)の上に準備されていなければなりません。
2. 試験対策の視点:
問題文に「2つ以上のプログラムがメモリに常駐」「CPUの利用効率・スループット向上」「ジョブプール管理」「I/O待ち時間を有効利用」と出たら、迷わずマルチプログラミングを選択しましょう!
4. まとめ
2つ以上のプログラムをメモリに常駐させ、CPUの空き時間をなくすように並行実行する制御方式。それがマルチプログラミングです。OSが果たす「メモリ管理」「ジョブプール管理」「ジョブの実行制御」という3つの主要なアクティビティとセットでしっかり覚えておきましょう!