平成22年度 秋期 午前 問8
ソフトウェア
再入可能に関する問題
再入可能(リエントラント)プログラムに関する記述のうち,適切なものはどれか。
- ア再入可能プログラムは,逐次再使用可能プログラムから呼び出すことはできない。
- イ再入可能プログラムは,呼出し元ごとに確保された記憶領域に局所変数が割り当てられる。
- ウ実行途中で待ち状態が発生するプログラムは,再入可能プログラムではない。
- エ逐次再使用可能なプログラムは,再入可能プログラムでもある。
答えと解説を見る
✓ これが正解イ再入可能プログラムは,呼出し元ごとに確保された記憶領域に局所変数が割り当てられる。
解説
呼出し元ごとに別の領域を持つのが再入可能です。
再入可能プログラムとは、複数の処理が同時に同じプログラムへ入ってきても、それぞれが正しく動く性質を指します。これを成り立たせるために必要なことは 2 つあります。1 つは、命令の並びそのものを実行中に書き換えないこと。もう 1 つは、書き換わる対象になるデータを呼出しごとに別々に持つことです。命令の並びは誰も書き換えないので共有して構いませんが、局所変数や作業用の領域を共有してしまうと、同時に動いている 2 つが互いの値を壊し合います。ですから呼出し元ごとに記憶領域を確保し、そこへ局所変数を割り当てる形が、この性質を実現する方法そのものになります。これが正解の記述です。あわせて、逐次再使用可能は 1 つずつ順番になら使い直せるという、より弱い性質であることを押さえてください。再入可能はその条件を満たしたうえで同時実行まで許すので、包含の向きは、再入可能ならば逐次再使用可能、の一方向だけです。
ほかの選択肢はなぜ違うのか
- ア再入可能プログラムは,逐次再使用可能プロ…:呼ぶ側がどの性質を持つかは、呼ばれる側の成立条件とは関係がありません。同時に入られても壊れない作りのプログラムは、むしろ呼出し元を選ばずに使えます。
- ウ実行途中で待ち状態が発生するプログラムは…:実行の途中で待ちが生じること自体は、この性質の有無を決めません。待っている間に別の処理が同じ場所へ入ってくる状況こそ、この性質が想定している場面です。
- エ逐次再使用可能なプログラムは,再入可能プ…:包含の向きが逆に書かれています。1 つずつ順番になら使い直せるという条件は弱く、そこから同時に入られても壊れないことまでは言えません。
出典:平成22年度 秋期 応用情報技術者試験 午前 問8
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)