back

プログラム構造


■再使用可能(Reusable)
  ・再入可能(Reentrant)
   複数のタスクで並行して実行しても,正しい結果が得られる
  ・再使用可能
   一度実行した後,ロードし直さずに再び実行を繰り返しても,正しい結果
   が得られる

■再配置可能(Relocative)
   実記憶上のどこのアドレスに配置しても実行することが可能である

■再帰(Recursive)
   自分の中から自分を呼び出すことができる


★★★宿題:二種向け★(2000/3/17)

 再入可能(リエントラント)プログラムの説明として,最も適切なものはどれ
か。

 ア 一度実行した後,ロードし直さずに再び実行を繰り返しても,正しい結果
  が得られる。

 イ 実記憶上のどこのアドレスに配置しても実行することが可能である。

 ウ 複数のセグメントに分割されており,セグメント単位にロードして実行す
  ることが可能である。

 エ 複数のタスクで並行して実行しても,正しい結果が得られる。


(解答)
ア:再使用可能
イ:再配置可能
ウ:オーバレイ方式
エ:正解 再入可能

オーバレイ方式
主記憶に格納できない大きなプログラムを実行するための方式
プログラムをセグメントに分割
一度にロードさせる必要のあるセグメントのみを残す
補助記憶装置へ退避

■解答■(宿題メールより)
  二種午前平成11年春問35

> リエントラント(reentrant)
> 使用途中でも再び使用できるルーチンやサブルーチンやプログラムのこと。
> あるプロセス(タスク)が使用しているプログラムの処理が終了する前に、他の
> プロセスがこのプログラムを使用することができるようなプログラムを
> リエントラントプログラム(再入可能プログラム)という。サブルーチンの場合は
> リエントラントサブルーチンという。
> (新星出版社 情報処理用語辞典 P.376より)

 どうもありがとうございました。

> ○再入可能(リエントラント)プログラム
> 同時に複数のタスクが使用できる。
> 再入可能プログラムの構造は、手続き部とデータ部とを分離して、
> データ部を各タスクごとに別々の記憶装置に確保する。
> (第2種情報処理[午後]完全合格教本 p.285)

 どうもありがとうございました。

> ア:再使用可能(リユーザブル)プログラム
> イ:再配置可能(リロケータブル)プログラム
> エ:再入可能(リエントラント)プログラム

 どうもありがとうございました。

> [リエントラント]
> マルチタスク環境では,あるプログラムコードの実行中に,さらにそのプログラム
> コードの実行が要求されることがある.このような場合でも,そのプログラムコー
> ドがリエントラントに設計されていれば,1つのプログラムコードで複数の処理を
> 非同期に実行できる.
> 参考:http://www.ascii.co.jp/ghelp/7/000734.html

 どうもありがとうございました。

> >>再入可能プログラム
> 複数のプログラムが同時に使用できるような構造をしていて、
> 繰り返し実行できるルーチン、またはモジュール。
> その実行中に自らの内容を変更しないため、先行のタスクが終了する
> 前に次のタスクが利用できる。このようなルーチンヤモジュールのことを
> 再入可能プログラムという。同時に同一のプログラムを共用することにより、
> 記憶領域の節約や、処理効率の向上を図ることが出来る。実時間処理で
> 多く用いる。(情報システム辞典 74P 合格情報処理2月号)

 どうもありがとうございました。


★★★解説:二種(基礎情報処理技術者)向け★(2000/6/20)

 再入可能プログラムの特徴として,適切なものはどれか。

 ア 実行時に必要な手続きを補助記憶装置から呼び出しながら動作する。実行
  時の主記憶領域の大きさに制限があるときに,有効な手法である。

 イ 手続きの内部から自分自身を呼び出すことができる。

 ウ 複数のタスクで利用するとき,一時に一つのタスクでの使用が可能である。

 エ 複数のタスクによって並行して実行されても,それぞれのタスクに正しい
  結果を返す。



■解答■(宿題メールより)
  二種午前平成12年春問38

>再入可能プログラム(reentrant program)
> あるタスクが実行しているプログラムを、他のタスクが同時に実行
>できるようになっているプログラム。
> プログラムの中の不変の部分(主として手続き部)と
>可変の部分(主としてデータ部)を分離し、可変の部分を
>複数個もつことによって、1つのプログラムで複数のタスクの処理要求に
>対応できるようにしている。
>新星出版社「情報処理用語辞典」P.161より

 どうもありがとうございました。

>C言語だと、関数の中で関数を呼び出したりするのは再帰的だなと
>じっさいにわかりますが、どのようなものが再入可能プログラム
>なのでしょうか。

 再帰的は,一つのプログラムから関数を呼び出し,その関数から同じ関数を
呼び出すということで,実際に試せます。再入可能なプログラムは,マルチタス
ク化では当然の機能です。ワードで,印刷プレビューを見て,同時にエクセスで
印刷プレビューを見ます。この印刷プレビューが再入可能プログラムです。

> 1つのプログラムが同じ複数のジョブまたはタスクで使用できる
> ように設計されているとき、そのプログラムは「リエントラント」
> または「再入可能」であるという。
> (技術評論社「第2種コンピュータ基礎の総合研究/平成11年度」
>                        p.112より)

 どうもありがとうございました。

>再入可能プログラムって、日本語だとなんか分かりづらいんですが、
>英語だとなんていうんでしょう?そのほうがイメージが湧きそうです。
>「再入」が直訳っぽい感じを受けます。

 上に,reentrant (リエンテラント)とあります。英語の方も覚えておくとい
いですね。

>ア〜オーバーレイ。
>イ〜再帰的プログラム。
>ウ〜再使用可能プログラム。

 どうもありがとうございました。


★★★宿題:二種(基本情報技術者)向け★(2000/9/21)

 プログラム構造に関する記述について,次の a 〜 c に対応する名称の適切な
組合せはどれか。

a  ある手続きが複数のプロセスによって並行して実行されるとき,それぞれの
 プロセスに正しい結果を返すことができる。

b  主記憶上のどのアドレスにローディングしても実行することが可能な手続き
 である。

c  直接又は間接的に自分自身を呼び出すことが可能な手続きである。

  ┌───────┬───────┬───────┐
  │   a   │   b   │   c   │
┌─┼───────┼───────┼───────┤
│ア│再入可能   │再使用可能  │再帰的    │
├─┼───────┼───────┼───────┤
│イ│再入可能   │再配置可能  │再帰的    │
├─┼───────┼───────┼───────┤
│ウ│再配置可能  │再帰的    │再入可能   │
├─┼───────┼───────┼───────┤
│エ│再配置可能  │再使用可能  │再入可能   │
└─┴───────┴───────┴───────┘

 


(解答例)

それぞれの用語のいちばん上の説明を参考にして見てください。
それで理解でき解答できるはずです♪

■解答■
  ネットワークスペシャリスト午前平成11年問51

> “ア”か“イ”のどちらかだというのはわかるのですが・・・。
> 「再入可能」「再使用可能」「再配置可能」で、どの言葉が
> どの意味だったか、よく覚えられなくて困っています。
> 語呂合わせなどで、良い暗記方法があれば、教えて下さい。

 意味を理解したら,簡単ですよ。

>再入可能プログラム( reentrable program ):
> 複数のプログラムが同時に使用できるような構造をしていて,繰り返し実
>行できるルーチンまたはモジュール。
その実行中に自らの内容を変更しない
>ため,先行のタスクが終了する前に次のタスクが利用できる。このようなル
>−チンやモジュールを再入可能プログラムという。同時に同一のプログラム
>を共用することにより,記憶領域の節約や,処理効率の向上を図ることがで
>きる。実時間処理で多く用いる。
>
>再配置可能プログラム( relocatab program ):
> 主記憶装置内のどの領域にロードしても実行可能なプログラム。
相対アド
>レスをもっていて,主記憶に格納する際に絶対アドレスに変換する。プログ
>ラムを主記憶装置内の任意の位置に格納できるため,主記憶空間の有効な使
>用が可能になる。また,主記憶空間を複数の領域に分け,複数のプログラム
>を記憶させる場合,そのプログラムは再配置可能プログラムであることが望
>ましい。
>
>再帰( recursive / recursion ):
> 問題を分割統治の手法で分割したとき,分割した部分に,同じ分割統治の手
>法を繰返し適用すること。アルゴリズム(関数,又は手続き)が再帰的であると
>は,その内容を定義する際に,自分自身をその定義中で使用することをいう。
>例えば,サブルーチンの実行中に自分自身をサブルーチンとして呼び出すこと
>関数が自分自身をコールすること。
> fortran,COBOLでは使えないが,PL/I,Pascal,Cでは使える。サブルーチンの
>再帰的な呼出は数式の構文解析や順列の生成などで有効な技法である。
>
>学研「合格情報処理」付録 「情報システム辞典」(p74,75,73)より

 どうもありがとうございました。

> 再入可能プログラム( reentrant program )
>  あるタスクが実行しているプログラムを、他のタスクが同時に実行できる
> ようになっているプログラム。

>
> 再配置可能プログラム( relocatable program )
>  主記憶装置の任意のアドレスに置くことが出来るプログラム。

>
> 再使用可能プログラム( reusable program )
>  あるタスクで使用したプログラムを、他のタスクでも繰り返し使用できる
> プログラム。

>
> 再帰的サブルーチン( recursive subroutine )
>  再帰的な呼び出しの出来るサブルーチン。再帰呼び出しを行うためには、
> 自分自身を呼び出す前に変数の値などを保存しておかなければならない。

>
> 新星出版社「情報処理用語辞典」P.158,160,161よりそれぞれ抜粋

 どうもありがとうございました。

> ・プログラム構造
> http://www2.plala.or.jp/T_shouse/HTML/jgoukaku3.htm
>
> - プログラム構造 -
> http://www.ops.dti.ne.jp/~tsuru/2shu/d3/d3_3.htm

> 自分で自分を呼び出す=再帰(自分に戻る)
> と考えると良いのでは.
> 他の言葉は意味から解釈できます.

 再帰はそういう意味ではありません。戻ってくるところを図にすると,まさに
「再帰」ですよ。