FE EXAM

ローダ(Loader)

実行ファイルを補助記憶から主記憶へ読み込み、実行できる状態にするプログラム。

INTERACTIVE VISUALIZATION
補助記憶
プログラム
CPU
フェーズ
idle
主記憶ロード
CPU
待機
シナリオ
ステップ1 / 6
STEP 1/6実行ファイルはまだディスク上にあるリンカが作った実行ファイル(app.exe)は、補助記憶(=ハードディスクやSSDなど、電源を切っても消えない大容量の記憶装置)に置かれています。CPU(=計算を行う頭脳)は補助記憶の中身を直接実行できないため、このままでは動かせません。
補助記憶(ディスク / SSD)app.exe実行ファイルローダ読み込み主記憶(メモリ)OS領域プログラム本体共有ライブラリ空き領域CPU命令を実行待機中
ローダの主な機能
主記憶へ読み込み
実行ファイルをディスクから主記憶へコピー
アドレス再配置
配置先に合わせて番地を調整
動的リンク解決
共有ライブラリを読み込み結合
実行開始の準備
先頭アドレスをCPUへ渡す
解説

📌
ローダとは

補助記憶app.exeロード主記憶CPU

ローダとは、実行ファイルを主記憶へロード(読み込み)し、実行可能にするOSの機能です。補助記憶(=ハードディスクやSSDなど、電源を切っても消えない大容量の記憶装置)にある実行ファイルを、主記憶(=メモリ、CPUが直接読み書きできる高速な作業領域)へ移すのが中心的な役割です。

身近な例で考えると、図書館で本を読むときに似ています。読みたい本(実行ファイル)は書庫(補助記憶)にしまわれていますが、そのままでは読めません。本を読書席(主記憶)まで運んできて、ようやく読み始められます。この「運ぶ」役目がローダです。

上のツールで▶ボタンを押すと、ディスク上の実行ファイルが主記憶へ読み込まれ、アドレスが調整され、最後にCPUが実行を始めるまでの流れを確認できます。

⚙️
主な機能

ローダは、プログラムを動かせる状態にするために、おもに次の4つの仕事を行います。
主記憶への読み込み:実行ファイルを補助記憶から主記憶へコピーする
アドレスの再配置:実際に置かれた場所に合わせて、プログラム内のアドレスを正しい値に書き直す
動的ライブラリのリンク解決:実行時に必要な共有ライブラリを読み込み、呼び出し先をつなぐ
実行開始の準備:プログラムの先頭アドレスをCPUへ伝え、実行のきっかけを渡す

とくにアドレスの再配置が分かりにくいので補足します。実行ファイルは「主記憶のどこに置かれるか」が事前に決まっていません。空いている場所に置かれるため、その場所に合わせて番地を直す必要があります。引っ越し先の住所に合わせて配達伝票を書き直す作業に似ています。

これらの仕事が終わると、プログラムは主記憶の上で「いつでも動ける」状態になります。あとはCPUが先頭から命令を読み取って、処理を進めていきます。

⚖️
リンカとの違い

ビルド時リンカ実行ファイルを作る実行時ローダ主記憶へ載せる

リンカとローダは名前も役割も似ていますが、働くタイミングと目的がはっきり違います。リンカは実行ファイルを「作る」段階(ビルド時)で部品を結合し、ローダはその実行ファイルを「動かす」段階(実行時)で主記憶へ載せます

項目リンカローダ
働く時点ビルド時実行時
役割部品を結合し実行ファイルを作る実行ファイルを主記憶へ載せる
たとえると料理を作る料理を食卓へ運ぶ

処理の順番は「コンパイラ → リンカ → ローダ」と覚えると整理できます。コンパイラがソースを機械語に翻訳し、リンカがそれらをつないで実行ファイルを作り、ローダがその実行ファイルを主記憶に載せて動かす、という流れです。

📌
補助記憶と主記憶の違い(なぜローダが必要か)

補助記憶(ディスク)大容量・低速電源を切ても消えないapp.exe を保管ローダ主記憶(メモリ)小容量・超高速電源を切ると消えるCPUが直接読み書きCPUは主記憶しか直接読めない → だからローダが必要

なぜローダが必要なのか、を理解するには「記憶装置」の種類を知る必要があります。コンピュータには2種類の記憶場所があります。
補助記憶(=ハードディスク・SSDなど):大量のデータを長期間保存できる。でも速度が遅い。電源を切っても消えない
主記憶(=メモリ・RAM):速度は非常に速いが容量が小さい。CPUが直接命令を読める唯一の場所。電源を切ると消える

CPUは補助記憶を直接読めません。必ず主記憶に置かれたプログラムだけを実行できます。つまり、ディスクに保存されたままの実行ファイルは「ただのデータ」であり、まだ動いていません。これがローダが必要な根本的な理由です。

身近な例では、冷凍庫(補助記憶)に入った食材はそのままでは食べられないのと同じです。電子レンジ(ローダ)で解凍し、テーブル(主記憶)に持ってきてはじめて食べる(CPUが実行する)準備ができます。

📌
ロードされたプログラムはどう動くか

主記憶(メモリ)0x100: MOV A, 50x102: ADD A, 30x104: JMP 0x100先頭アドレスから1命令ずつ読むCPU命令を読んで実行▶ 動作中

ローダが実行ファイルを主記憶へ配置し終わると、プログラムの先頭アドレス(=最初の命令が置かれている番地)をCPUへ伝えます。CPUはそこから命令を1つずつ読み取り、実行し始めます。

この「主記憶で動いているプログラム」のことをプロセス(=実行中のプログラムの単位)と呼びます。ディスクにある実行ファイルはただの「設計図」ですが、ローダが主記憶に載せてCPUが動かし始めると「プロセス」になります。
実行ファイル(ディスク上):まだ動いていない設計図
プロセス(主記憶上):ローダが載せてCPUが実行している状態

たとえばブラウザのアイコンをダブルクリックすると、OSが内部でローダを動かし、ブラウザの実行ファイルを主記憶に展開してCPUへ実行を渡します。「アプリが起動する」というのは「ローダがプロセスを作る」ということです。

練習問題

🎯
基本情報技術者 練習問題

Q1.ローダの役割として最も適切なものはどれか。
A.複数のオブジェクトファイルを結合して実行ファイルを作る
B.実行ファイルを補助記憶から主記憶へ読み込み、実行できる状態にする
C.ソースコードを機械語に翻訳する
D.プログラムの実行速度を計測する
Q2.ローダが行う処理として誤っているものはどれか。
A.実行ファイルを主記憶へ読み込む
B.主記憶上の配置に合わせてアドレスを再配置する
C.ソースコードの文法エラーを検出する
D.動的ライブラリのリンクを解決する
Q3.リンカとローダの違いとして正しいものはどれか。
A.リンカは実行時、ローダはビルド時に動く
B.リンカは実行ファイルを「作る」段階で結合し、ローダはそれを「動かす」段階で主記憶へ載せる
C.両者はまったく同じ処理を行う
D.リンカは主記憶への読み込み、ローダは結合を行う

関連コンテンツ