プログラムの同時呼出しで確かめる性質とは
基本情報技術者試験 平成31年度春期 午前 問8 / アルゴリズムとプログラミング › プログラミング
過去問にチャレンジ
複数のプロセスから同時に呼び出されたときに,互いに干渉することなく並行して動作することができるプログラムの性質を表すものはどれか。
- ア
リエントラント
- イ
リカーシブ
- ウ
リユーザーブル
- エ
リロケータブル
会話形式の解説
講師注目する条件は、同時に呼び出されることと、処理が互いに干渉しないことです。
受験者同時に使えるかどうかを見ればよいのですね。リカーシブも呼び出しに関係するので迷います。
講師リカーシブは、実行中のプログラムが自身を呼び出せる性質です。それだけで、複数のプロセスによる同時利用が干渉しないと言えますか。
受験者いいえ。自身を呼び出すことと、複数のプロセスが干渉せずに使えることは別ですね。
講師そのとおりです。では、一度実行したプログラムを後で再び使えるリユーザーブルは、同時利用の条件に合いますか。
受験者後で再び使えるというだけなので、同時に使ったときの干渉については分かりません。
講師では、主記憶上の異なる位置に配置できるリロケータブルはどうでしょう。
受験者配置する位置を変えられても、同時に呼び出された処理が干渉しないとは言えません。
講師そうです。リエントラントは、複数の実行主体が同じプログラムを同時に利用しても、処理が互いに干渉しない性質です。設問の二つの条件に合います。
受験者呼び出し方、実行後の再利用、配置位置を区別し、同時利用と非干渉の両方に合うリエントラントを選ぶのですね。
まとめ
複数のプロセスから同時に呼び出されても処理が互いに干渉しない性質は、リエントラントです。リカーシブは自身の呼出し、リユーザーブルは実行後の再利用を指します。リロケータブルは主記憶上の配置位置を変えられる性質です。
解答・解説
正解はアです
この問題のテーマ
複数のプロセスから同時に呼び出しても、処理が互いに干渉しないプログラムの性質を問う問題です。
解き方の考え方
判断の鍵は「同時に呼び出される」と「互いに干渉しない」の二つです。各用語が表す性質を確認し、同時利用について述べたものを選びます。
選択肢ごとの解説
- ○ア リエントラントリエントラントは、複数の実行主体が同じプログラムを同時に利用しても、処理が互いに干渉しない性質です。設問の条件に一致します。
- ×イ リカーシブリカーシブは、実行中のプログラムが自身を呼び出す性質です。自身を呼び出せることだけでは、複数のプロセスから同時に呼び出したときの非干渉は示せません。
- ×ウ リユーザーブルリユーザーブルは、一度実行したプログラムを後で再び利用できる性質です。実行後の再利用についての説明なので、同時利用時に干渉しないという条件には当たりません。
- ×エ リロケータブルリロケータブルは、プログラムを主記憶上の異なる位置に配置できる性質です。配置位置を変えられることと、同時に呼び出された処理が干渉しないことは別の性質です。
POINT
- 同時呼出しで処理が互いに干渉しない性質は、リエントラントです。
- リカーシブは、実行中に自身を呼び出せることを指します。
- リユーザーブルは、実行後に再び利用できることを指します。
- リロケータブルは、主記憶上の配置位置を変えられることを指します。
