基本情報技術者 2014年 秋期 午前(科目A) 問18
問題文
スプーリング機能の説明として、適切なものはどれか。
選択肢
ア:あるタスクを実行しているときに、入出力命令の実行によってCPUが遊休(アイドル)状態になると、他のタスクにCPUを割り当てる。
イ:実行中のプログラムを一時中断して、制御プログラムに制御を移す。
ウ:主記憶装置と低速の入出力装置との間のデータ転送を、補助記憶装置を介して行うことによって、システム全体の処理能力を高める。(正解)
エ:多数のバッファから成るバッファプールを用意し、主記憶装置にあるバッファにアクセスする確率を上げることによって、補助記憶装置のアクセス時間を短縮する。
スプーリング機能の説明【午前2 解説】
要点まとめ
- 結論→スプーリングは補助記憶装置を仲介して主記憶と低速入出力装置間のデータ転送を非同期化し、CPUや入出力装置の待ち時間を減らして全体処理能力を高める機能です。
- 根拠→出力や入力データを補助記憶上のスプール領域に蓄え、入出力処理をバックグラウンド化してCPUのアイドルを回避する仕組みである点が特徴です。
- 差がつくポイント→バッファリングやキャッシュとの違い(主記憶か補助記憶か、ジョブ単位で管理するか)やプリンタスプールなどの具体例を押さえておくと解答で差がつきます。
正解の理由
正解は ウ です。スプーリング(spooling)は「Simultaneous Peripheral Operation OnLine」の略とも説明され、プリンタなどの低速入出力装置とCPU(または主記憶)との間の処理を補助記憶装置(ディスクなど)に一旦蓄えることで非同期化し、装置やCPUの待ち時間を減らしてシステム全体のスループットを向上させます。選択肢ウは「主記憶装置と低速の入出力装置との間のデータ転送を、補助記憶装置を介して行う」とあり、スプーリングの定義に一致します。
よくある誤解
- 「スプーリング=単なるバッファリング」と考える誤り:バッファは主記憶上での一時退避だが、スプーリングは補助記憶上に蓄える点が異なります。
- 「スプーリングはCPUスケジューリングや割り込み機構の説明」だと勘違いする:CPUの割当や中断とは目的と仕組みが異なります。
- 「エの説明はスプーリングに近い」と思う誤り:エはキャッシュ/バッファプールによるヒット率向上の説明で、補助記憶を媒介するスプーリングとは別物です。
解法ステップ
- 問題文のキーワードを抽出:補助記憶装置、主記憶、入出力装置、データ転送、非同期化などを確認する。
- 各選択肢とキーワードを照合する:補助記憶を介する記述があるかを探す。
- 類似概念と比較する:バッファリング、キャッシュ、割り込み、スケジューリングとの違いを短く整理する。
- 補助記憶を介した非同期化(ジョブ管理)を説明している選択肢を選ぶ(今回ならウ)。
選択肢別の誤答解説
- ア: あるタスクの入出力命令でCPUが遊休になった場合に他タスクへCPUを割り当てる、という説明はマルチプログラミングやCPUスケジューリングの効果であり、スプーリングの定義とは異なります。
- イ: 実行中のプログラムを一時中断して制御プログラムに移す、は割り込みやコンテキストスイッチの記述で、スプーリング固有の「補助記憶を介した非同期処理」ではありません。
- ウ: 正解。補助記憶を介して主記憶と低速I/O間の転送を行うことでI/OとCPUを切り離し、全体性能を向上させるスプーリングの説明に合致しています。
- エ: 多数のバッファから成るバッファプールで主記憶上のバッファアクセス確率を上げる、というのはキャッシュやバッファプール(ヒット率向上)に関する説明で、補助記憶を介するスプーリングとは目的が異なります。
補足コラム
- 用例:プリンタスプーリング(印刷ジョブをディスクに溜めて順次印刷)、メールスプール(送受信キュー)など。
- 実装要素:スプールディレクトリ、スプールデーモン(バックグラウンドでジョブを処理するプロセス)、ジョブ管理(優先度や順序制御)。
- スプーリング vs バッファリング vs キャッシュ:バッファは主記憶に一時保管、キャッシュは高速アクセスのためのコピー、スプーリングは補助記憶に蓄えて入出力をデカップリングする点が違いです。
- 性能上の注意:スプーリングはI/O待ちを減らすが、補助記憶への書き込み/読み出しコストやディスクI/O負荷、ジョブ管理のオーバーヘッドも考慮する必要があります。
FAQ
Q1: スプーリングは必ず補助記憶を使いますか?
A1: はい。スプーリングの本質は補助記憶(通常はディスク)にデータを蓄え、後で低速デバイスが処理する点にあります。主記憶だけで完結するのは単なるバッファリングです。
A1: はい。スプーリングの本質は補助記憶(通常はディスク)にデータを蓄え、後で低速デバイスが処理する点にあります。主記憶だけで完結するのは単なるバッファリングです。
Q2: プリンタバッファとプリントスプールは同じですか?
A2: 異なります。プリンタバッファは主記憶上の一時領域で即時転送を助けるのに対し、プリントスプールはディスク上にジョブを蓄え順次処理するため、ジョブ管理や再試行などの機能を持ちます。
A2: 異なります。プリンタバッファは主記憶上の一時領域で即時転送を助けるのに対し、プリントスプールはディスク上にジョブを蓄え順次処理するため、ジョブ管理や再試行などの機能を持ちます。
Q3: スプーリングは常に性能向上するのですか?
A3: 多くの場合I/OとCPUのデカップリングで効果がありますが、スプールへの書き込みがボトルネックになるケースやディスクI/Oが過負荷になると期待通り効果が出ないこともあります。
A3: 多くの場合I/OとCPUのデカップリングで効果がありますが、スプールへの書き込みがボトルネックになるケースやディスクI/Oが過負荷になると期待通り効果が出ないこともあります。
関連キーワード: スプーリング, スプール, バッファリング, 補助記憶装置, プリンタスプール, スプールデーモン, 入出力非同期化, I/Oスループット, バッファプール, キャッシュ

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

