ITパスポート 2013年 春期 問60
問題文
コンピュータで実行可能な形式の機械語プログラムを何と呼ぶか。
選択肢
ア:オブジェクトモジュール
イ:ソースコード
ウ:テキストデータ
エ:ロードモジュール(正解)
🔒 解説は解答すると表示されます
コンピュータで実行可能な形式の機械語プログラムを何と呼ぶか。【ITパスポート 解説】
正解の理由
設問は「コンピュータで実行可能な形式の機械語プログラム」を問うています。人間が書いたソースコード(英語に近い高級言語)ではなく、CPU が直接理解して実行できる機械語になっており、メモリに読み込んで実行できる形になっているものが該当します。これを指す用語が「ロードモジュール」です。したがって正解は エ です。
ポイントをやさしく言うと:
- ロードモジュールは、リンク処理(複数の部品をまとめる処理)や必要な変換を終え、OS のローダー(メモリに読み込むプログラム)によってそのまま読み込まれて実行できる機械語のファイルです。
解法ステップ
- 設問のキーワードを確認:「実行可能な形式」「機械語プログラム」→ 実行できる=実行可能ファイル(機械語)を探す。
- 各選択肢の意味を短く確認する:
- ソースコード:人が読む・書くプログラム(機械語ではない)
- オブジェクトモジュール:コンパイラが作る中間の機械語データ(まだ結合や調整が必要な場合がある)
- ロードモジュール:リンク済みでロードして実行できる機械語
- テキストデータ:ただの文字の集まり(実行不可)
- 「そのまま実行できるか」を基準に照合する。ロードモジュールが該当するため選ぶ。
簡単な流れ図(処理の流れ)
ソースコード(人が書く) → コンパイラ → オブジェクトモジュール(部品) → リンカで結合 → ロードモジュール(実行可能) → ローダーがメモリに読み込み → 実行
選択肢別の誤答解説
-
ア: オブジェクトモジュール
オブジェクトモジュール(object module)はコンパイラが生成する機械語に近いファイル(オブジェクトファイル)です。ただし、多くは「再配置情報」や「未結合の参照」を含み、単体ではまだ実行できないことがあります。リンカで結合して初めて実行可能な形になるため、設問の「実行可能な形式」には当たりません。 -
イ: ソースコード
ソースコードは人間が理解できる高級言語や記述であり、直接 CPU が実行する機械語ではありません。コンパイルや翻訳(インタプリタによる実行という例外はある)が必要です。 -
ウ: テキストデータ
テキストデータは文字情報の集まりです。機械語がバイナリ形式で格納される場合が多く、単なるテキストは CPU が直接実行する形式ではありません(※スクリプトはテキストでも「インタプリタ」によって実行されますが、それは機械語そのものではありません)。 -
エ: ロードモジュール
ロードモジュールはリンク処理を終えており、OS のローダーによってメモリに読み込まれればそのまま実行できる形の機械語プログラムです。したがって設問の条件に合致します(エ)。
よくある誤解
-
オブジェクトモジュールをそのまま「実行ファイル」と混同する
- オブジェクトモジュールは機械語に近いが、未結合や再配置が残ることがあり、そのまま実行できない場合があります。違いを覚えておきましょう。
-
テキスト=実行できないと断定しすぎる
- スクリプト(例:Python、シェルスクリプト)はテキストファイルですが、インタプリタが読み取って実行します。設問は「機械語プログラム」を問うため、スクリプトは該当しません。
-
「実行可能=ファイル拡張子で判断する」は危険
- Windows の .exe や Linux の ELF 形式など拡張子・形式は関係しますが、本質は「ロードして CPU が実行できる機械語であるか」です。
補足コラム
- 実際の OS では「実行可能ファイル(executable file)」という言い方が一般的です。Windows の .exe や UNIX 系の ELF(Executable and Linkable Format)が例です。これらはロードモジュールに相当します。
- 現代の実行可能ファイルは動的リンク(共有ライブラリを実行時に結合)を使うことが多く、単純に「1つのファイル=すぐ実行」ではなく、実行時に追加のライブラリが読み込まれます。それでも「ロードされて実行される機械語である」点が同じです。
簡単な実例(コンパイルの流れ)
# sample.c を例に
gcc -c sample.c # → sample.o (オブジェクトモジュール)
gcc sample.o -o sample # → sample (実行可能ファイル = ロードモジュール相当)
./sample # 実行(ローダーがメモリに読み込む)
FAQ
Q: .exe や a.out はロードモジュールですか?
A: 実質的にはそうです。.exe(Windows の実行形式)や a.out/ELF(UNIX/Linux の実行形式)は、ロードして実行できる機械語を含むファイルで、ロードモジュールに相当します。
A: 実質的にはそうです。.exe(Windows の実行形式)や a.out/ELF(UNIX/Linux の実行形式)は、ロードして実行できる機械語を含むファイルで、ロードモジュールに相当します。
Q: スクリプト(例:.py)はロードモジュールに入りますか?
A: いいえ。スクリプトはテキストで、インタプリタ(Python 実行環境)が読み取り・実行します。スクリプト自体は機械語ではありません。
A: いいえ。スクリプトはテキストで、インタプリタ(Python 実行環境)が読み取り・実行します。スクリプト自体は機械語ではありません。
Q: オブジェクトモジュールとロードモジュールの見分け方は?
A: オブジェクトモジュールは拡張子 .o や .obj、リンク用の情報(未解決シンボルや再配置情報)を含みます。ロードモジュール(実行可能ファイル)はリンクが完了しており、直接 OS によってロード・実行できます。
A: オブジェクトモジュールは拡張子 .o や .obj、リンク用の情報(未解決シンボルや再配置情報)を含みます。ロードモジュール(実行可能ファイル)はリンクが完了しており、直接 OS によってロード・実行できます。
関連キーワード: 実行可能ファイル、オブジェクトファイル、コンパイラ、リンカ、ローダー、機械語、実行形式、ELF、PE, バイナリファイル

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

