基本情報技術者試験 -60ページ目

スプーリング機能の説明として,適切なものはどれか。 

 ア あるタスクを実行しているときに,入出力命令の実行によって CPU が遊休(アイドル)状態になると,ほかのタスクに CPU を割り当てる。
 イ 実行中のプログラムを一時中断して,制御プログラムに制御を移す。
 ウ 主記憶装置と低速の入出力装置との間のデータ転送を,補助記憶装置を介して行うことによって,システム全体の処理能力を高める。
 エ 多数のバッファからなるバッファプールを用意し,主記憶にあるバッファにアクセスする確率を増すことによって,補助記憶のアクセス時間を短縮する。
 

【解説】
スプーリング(またはスプール)とは、

低速の入出力装置を使う場合、
CPUがデータ転送を行う時間を待っていると処理が滞ってしまうため、
磁気ディスクなどの高速な補助装置にデータを格納した後で
CPU処理と並行して、入出力処理を行うこと


です。(ジョブ管理)

プリンタ、電子メールなどで使われています。

これにより、1つのジョブが、CPUから早く解放されることができ、
複数のジョブからの要求に効率よく応えられるようになります。
(スループットを高める)

選択肢別にみていきます。

 ア × ⇒ 「CPU が遊休(アイドル)状態になると,ほかのタスクに CPU を割り当てる。」
       マルチタスクの説明です。
 イ × ⇒ 「実行中のプログラムを一時中断して,制御プログラムに制御を移す。」
       割込みの説明
 ウ 〇 ⇒ 「主記憶装置と低速の入出力装置との間のデータ転送を,補助記憶装置を介して行うことによって,システム全体の処理能力を高める。」
エ × ⇒  「多数のバッファからなるバッファプールを用意し,主記憶にあるバッファにアクセスする確率を増すことによって,補助記憶のアクセス時間を短縮する。」
       ディスクキャッシュの説明


【解答】  ウ

再帰的プログラムの特徴に関する記述として,適切なものはどれか。 

 ア 自分の中から自分を呼び出すことができる。
 イ 主記憶の任意のアドレスに配置して実行できる。
 ウ 複数のタスクから同時に呼び出されても正しく処理できる。
 エ ロードし直さずに繰り返し実行できる。

【解説】
「再帰的(recursive)プログラム」とは、関数やサブルーチン内部から、
自分自身を呼び出して利用できるものです。

選択肢をみていきましょう
 ア 〇⇒「自分の中から自分を呼び出す」 これが再帰です。
イ X ⇒ 「主記憶の任意のアドレスに配置」  これは、再配置可能プログラムの特徴です。
ウ X ⇒「 複数のタスクから同時に呼び出されても正しく処理」
     再入可能プログラムの特徴です。
     タスクごとにデータ領域を持つことで、実行中プログラムの内容を変更せずにそのタスクを続行したまま、次のタスクによる実行を許すものです。
 エ X ⇒ 「ロードし直さずに繰り返し実行」 これは、逐次再使用可能プログラムの記述です。
      主記憶上へ再ロードしなくても使用できますが、再入可能プログラムのように、同時に実行はできません。

【解答】 ア

プログラム割込みの原因となり得るものはどれか。
ア  入出力動作が終了した。
イ  ハードウェアが故障した。
ウ  プログラムで演算結果があふれた(オーバフローした)。
エ  プログラムの実行時間が設定時間を超過した。

【解説】
プログラムの実行を中断したり、再開したりすることを可能にする機能割込みと呼びます。

割込みは何らかの事態の発生により、実行中のプログラムを中断し、より緊急度が高いと判断されたプログラムを実行してから、必要と判断された場合、元のプログラムの中断した箇所から再開できる仕組みです。

実行しているプログラムとの関係による分類で、プログラムとは直接関係のない個所からの中断命令を外部割込み、実行しているプログラム内部で発生する中断命令を内部割込みと呼びます。

分類名称発生原因
内部プログラム割込み実行中のプログラムのエラー、ゼロによる除算など、プログラムの例外発生時に起こる割込み
スーパーバイザコール割込み(SVC)入出力要求など、OSの機能を利用するとき
ページフォルトによる割込みプログラムが主記憶上に存在しないデータにアクセスしようとしたときに発生する割込(プログラム内部に起因する割込み)
外部機械チェック割込み装置の誤動作、メモリ障害、電源異常などハードウエアの異常発見時
タイマ割込み定められているCPU使用時間をオーバーした場合
入出力割込み入出力処理の終了(正常時も異常時も)
コンソール割込みオペレータによる処理要求

割込みには優先順位があります。
割込み処理中に他の割込みが発生した場合でも、優先度の高いと判断されたものから処理されていきます。

プログラム割込みは、内部割込みの1つです。
選択肢を順に見ていきましょう。

ア ×⇒入出力動作による割込みは、入出力割込み・外部割込みです。
イ  ×⇒ハードウェアつまり、機械の故障は、機械チェック割込み・外部割込みです。
ウ  〇⇒「プログラムで演算結果があふれた(オーバフローした)。」のはプログラム割込み・内部割込みです。
エ  ×⇒「プログラムの実行時間が設定時間を超過」は、タイマ割込み つまり 外部割込みです。

※平成18年には、外部割込みの原因を問う問題も出題されています。
※特に、ページフォルトによる割込みは、ハードウエアの割込みと勘違いされますが、起因がプログラム内部なので、内部割込みになります。

【解答】 ウ