平成21年度 春期 基本情報技術者試験 午前 問22
テクノロジ/ソフトウェア図はプログラムを翻訳して実行するまでの流れを示したものである。原始プログラムはコンパイラによって a に変換され,a はリンカによって(ライブラリモジュール b を取り込みながら) c に変換され,c はローダによって実行される。コンパイラ,リンカ,ローダの入出力の組合せとして,適切なものはどれか。 流れ:原始プログラム → コンパイラ → a → リンカ(bを入力として使用) → c → ローダ (注:本サイトでは原問題の図を文字表記に変換しています)
出典:平成21年度 春期 基本情報技術者試験 午前 問22
- アa:目的プログラム,b:ライブラリモジュール,c:ロードモジュール
- イa:ライブラリモジュール,b:ロードモジュール,c:目的プログラム
- ウa:ロードモジュール,b:目的プログラム,c:ライブラリモジュール
- エa:ロードモジュール,b:ライブラリモジュール,c:目的プログラム
正解:ア
解説
原始プログラムはまずコンパイラによって目的プログラム(機械語に翻訳されたモジュール)に変換されます。次にリンカが,その目的プログラムに必要なライブラリモジュールを組み込んでロードモジュールを生成します。最後にローダがロードモジュールを主記憶上に配置して実行します。
選択肢ごとの解説
- ア正しい。a:目的プログラム,b:ライブラリモジュール,c:ロードモジュールの組合せが,コンパイラ・リンカ・ローダの正しい入出力です。
- イ誤り。a,b,cの役割が本来の順序からずれており,コンパイラの出力が目的プログラムであることと矛盾します。
- ウ誤り。aをロードモジュールとすると,リンカへの入力の時点で既に実行可能な形になってしまい,リンカの役割と矛盾します。
- エ誤り。aをロードモジュールとするのは誤りで,コンパイラの出力はまだリンク前の目的プログラムです。