基本情報技術者

【基本情報技術者試験】プログラムの性質

2022年3月24日

今回のテーマは「プログラムの性質」についてです。
プログラムの性質?

問題

複数のプロセスから同時に呼び出されたときに,互いに干渉することなく並行して動作することができるプログラムの性質を表すものはどれか。

  • ア:リエントラント
  • イ:リカーシブ
  • ウ:リユーザブル
  • エ:リロケータブル

基本情報技術者平成31年春期 午前問8

問題

再入可能プログラムの特徴はどれか。

  • ア:主記憶上のどこのアドレスに配置しても,実行することができる。
  • イ:手続の内部から自分自身を呼び出すことができる。
  • ウ:必要な部分を補助記憶装置から読み込みながら動作する。主記憶領域の大きさに制限があるときに,有効な手法である。
  • エ:複数のタスクからの呼出しに対して,並行して実行されても,それぞれのタスクに正しい結果を返す。

基本情報技術者平成27年春期 午前問7

基本情報技術者試験や応用情報技術者試験で出題されるプログラムの性質を表す問題。リエントラントやリカーシブなど聞きなれない言葉のため、難しく感じる問題ですが、各性質を理解してしまえばそこまで難しい問題ではありません。

本記事では、「プログラムの性質」について図解で分かりやすく解説しています。

本記事で学べること

  • リロケータブル(再配置可能)について理解する
  • リユーザブル(再使用可能)について理解する
  • リエントラント(再入可能)について理解する
  • リカーシブ(再帰的)について理解する
  • 基本情報技術者試験の過去問の解き方を学ぶ

プログラムの性質

プログラムには次の4つの性質があります。

スポンサーリンク

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

リロケータブル(再配置可能)とは、プログラムをメモリ上の何処に配置しても実行できるという性質のことです。

プログラム内蔵方式を採用しているコンピュータは、プログラムを実行するときハードディスクなどの補助記憶装置に保存してあるプログラムを主記憶装置(メインメモリ)に読み込んでから実行します。

主記憶装置にロード

このとき、リロケータブルの性質を持つプログラムは、メモリ上の何処に配置しても実行することができます。このようなプログラムのことを「再配置可能プログラム」といいます。

再配置可能プログラムは、ベースアドレス指定方式(基底アドレス指定方式)などの方式を利用しているため、メモリ上のどこに配置しても問題なく実行することができます。

例えば、次の図のようにプログラムをメモリアドレス「1001」~「2000」に読み込んだとします。このときベースレジスタには、読み込んだプログラムの先頭アドレスである「1001」を記憶します。

ベースレジスタ

そして 今後は、同じプログラムをメモリアドレス「801」~「1800」に読み込んだとします。ベースレジスタには、読み込んだプログラムの先頭アドレスである「801」を記憶します。

ベースレジスタ2

このようにベースレジスタに、メモリ上に読み込んだプログラムの先頭アドレスを記憶することで、位置を特定することができ、メモリ上のどこに配置しても問題なく実行することができます。(先頭以外の位置は、先頭アドレスからの差分で判断できる)

ベースアドレス指定方式の詳細はこちら

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

リユーザブル(再使用可能)とは、メモリ上に読み込まれたプログラムが繰り返し利用可能であるという性質のことです。

主記憶装置にロード

コンピュータがプログラムを実行するとき、補助記憶装置に保存されているプログラムを主記憶装置に読み込み実行します。

このとき、リユーザブル(再使用可能)の性質を持つプログラムは、処理を終えたあと再読み込みすることなく何度も繰り返し利用することができます

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

リエントラント(再入可能)とは、複数のプログラムを並行して実行するマルチタスクにおいて、実行中プログラムが同時に他のプログラムから呼び出されても正常に処理できるという性質のことです。

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

リエントラント(再入可能)のプログラムは、使用する変数を共有しないように設計しているため、呼び出し元のプログラム同士が、互いの変数を干渉することなく並行して実行することができます。

リカーシブ(再帰的)

リカーシブ(再帰的)とは、プログラミング言語において処理中に自分自身を呼び出すことができるという性質のことです。

リカーシブのイメージ例

プログラミング言語で作られた関数やメソッドなどの処理の中に、自身の呼び出しを行うコードが含まれることを「再帰呼び出し」といい、そのような関数を「再帰関数(もしくは再帰的関数)」といいます。

再帰呼び出しを利用することで、複雑な処理を短いコードで記述することができるが、処理の終了条件がなかったり、条件が誤っていたりすると、無限に自身を呼び出し続けてしまう(無限ループ)危険性があるため、再帰呼び出しを使用する際は注意が必要です。

スポンサーリンク

基本情報技術者試験 過去問の解説

基本情報技術者平成31年春期 午前問8

問題

複数のプロセスから同時に呼び出されたときに,互いに干渉することなく並行して動作することができるプログラムの性質を表すものはどれか。

  • ア:リエントラント
  • イ:リカーシブ
  • ウ:リユーザブル
  • エ:リロケータブル

基本情報技術者平成31年春期 午前問8

設問の性質と一致するものはどれか解答のア~エを順番に確認していきます。

ア:リエントラント

正解リエントラント(再入可能)は、複数のプログラムから同時に呼び出されても、正常に処理できるという性質です。

イ:リカーシブ

不正解:リカーシブ(再帰的)は、処理中に自分自身を呼び出しても(再帰呼出し)、正常に処理できるという性質です。

ウ:リユーザブル

不正解:リユーザブル(再使用可能)は、処理を終えたあとメモリ上に読み込みなおさなくても繰り返し何度も利用できるという性質です。

エ:リロケータブル

不正解:リロケータブル(再配置可能)は、プログラムをメモリ上の何処に配置しても、正常に処理できるという性質です。

「ア」の「リエントラント」が正解です。

基本情報技術者平成27年春期 午前問7

問題

再入可能プログラムの特徴はどれか。

  • ア:主記憶上のどこのアドレスに配置しても,実行することができる。
  • イ:手続の内部から自分自身を呼び出すことができる。
  • ウ:必要な部分を補助記憶装置から読み込みながら動作する。主記憶領域の大きさに制限があるときに,有効な手法である。
  • エ:複数のタスクからの呼出しに対して,並行して実行されても,それぞれのタスクに正しい結果を返す。

基本情報技術者平成27年春期 午前問7

再入可能プログラムの特徴はどれか、設問のア~エを順番に確認していきます。

ア:主記憶上のどこのアドレスに配置しても,実行することができる。

不正解:再配置可能(リロケータブル)の説明です。

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

不正解:再帰的(リカーシブ)の説明です。

ウ:必要な部分を補助記憶装置から読み込みながら動作する。主記憶領域の大きさに制限があるときに,有効な手法である。

不正解:オーバーレイ方式の説明です。

エ:複数のタスクからの呼出しに対して,並行して実行されても,それぞれのタスクに正しい結果を返す。

正解再入可能(リエントラント)の説明です。

再入可能プログラムの特徴を説明しているのは「エ」です。

helpful