1.プログラムの特性について

プログラムを作成する際に、プログラムの特性を理解しておきましょう。これらの特性を理解せずにプログラムを作成すると、プログラムが正常に動作しないなどの不具合につながります。たとえば、同時に複数のタスクが同じ変数を書き換えて、変数が不整合を起こしてしまったりするのです。

2.再入可能(リエントラント)

「再入可能プログラムは,複数のタスクから同時に呼び出されたときに,並列に実行できるプログラム(H29春AP問7を部分的に抜粋)」です。
複数のタスクが、同時に利用できることです。過去問(H27春FE午前問7)では、「再入可能プログラムの特徴」として、「複数のタスクからの呼出しに対して,並行して実行されても,それぞれのタスクに正しい結果を返す。」とあります。
応用情報技術者試験を勉強する成子 

同時に利用できないプログラムなんてあるのですか?
まあ、そうですね。グローバル変数を使っていると、その変数を複数が使う場合があり、整合性というか、一貫性などの観点で、使えないというか、制約が出る場合があります。

3.再帰的(リカーシブ)

「再帰的プログラムは,手続の中でそれ自体を呼び出すプログラム(H29春AP問7を部分的に抜粋)」です。
手続の中で、自分自身を呼び出すことが可能なことです。自分自身であっても複数タスクになるので、再入可能が必須になります。
a
再帰的というのはイメージがしにくいと思いうので、少し補足します。
整数nが与えられた場合、nの階乗であるfact(n)を求めるプログラムを考えます。
たとえば、n=3と4で考えます。
・3の階乗:fact(3)=3×2×1 = 6
・4の階乗:fact(4)=4×3×2×1 = 4×fact(3) = 24
            ̄ ̄ ̄ ̄
           =fact(3)
           
4の階乗であるfact(4)を求めるには、自分自身であるfact(3)を呼び出すことで、計算ができます。     
このように、自分自身を呼び出すことが可能プログラムのことを再帰的と言います。

問題の例はこちら
http://sm.seeeko.com/archives/15876786.html

実際のプログラムの例はこちら
http://sm.seeeko.com/archives/15876787.html

4.再使用可能(リユーザブル)

「再使用可能プログラムは,一度実行したプログラムを主記憶装置上にロードし直さずに再度実行できるプログラム(H29春AP問7を部分的に抜粋)」です。
逐次再使用可能とも言われる。逐次なので、順番に使えば再使用可能の意味。同時再使用可能は再入可能と同じなので、この言葉はない。

5.再配置可能(リロケータブル)

プログラムを配置(ロケート)する場合、メインメモリ上のどこに配置しても良いプログラム。
「再配置可能プログラムは,主記憶装置上のどの領域にロードされても実行可能なプログラム(H29春AP問7を部分的に抜粋)」です。
応用情報技術者試験を勉強する成子 

メモリのどこに配置してもいけないプログラムって・・・
イメージがわかないです。
メモリのアドレスを決めているアプリもあるが、今のWindowsのアプリは、再配置可能なものばかりだと思います。

6.プログラムの特性の過去問を解いてみよう

(1)H29春AP

問7 プログラムの特性に関する記述のうち,適切なものはどれか。
ア 再帰的プログラムは,手続の中でそれ自体を呼び出すプログラムであり,再入可能である。
イ 再使用可能プログラムは,一度実行したプログラムを主記憶装置上にロードし直さずに再度実行できるプログラムであり,再入可能である。
ウ 再入可能プログラムは,複数のタスクから同時に呼び出されたときに,並列に実行できるプログラムであるが,再配置可能ではない。
エ 再配置可能プログラムは,主記憶装置上のどの領域にロードされても実行可能なプログラムであるが,再使用可能ではない。







【正解】ア

(2)H28春AP

問7 リアルタイムシステムにおいて,複数のタスクから同時に呼び出された場合に,並行して実行する必要がある共用ライブラリのプログラムに要求される性質はどれか。
ア リエントラント      イ リカーシブ
ウ リユーザブル      エ リロケータブル







【正解】ア