「ローダ」の版間の差分
編集の要約なし |
編集の要約なし |
||
1行目: | 1行目: | ||
{{Otheruses|ソフトウェア|小惑星|ローダ (小惑星)|サッカークラブ|ローダJC}} |
{{Otheruses|ソフトウェア|小惑星|ローダ (小惑星)|サッカークラブ|ローダJC}} |
||
'''ローダ''' ({{en|loader}}) は、[[プログラム (コンピュータ)|プログラム]]やデータなどを、外部(他のコンピュータや[[外部記憶装置]])からインタフェース |
'''ローダ''' ({{en|loader}}) は、[[プログラム (コンピュータ)|プログラム]]やデータなどを、外部(他のコンピュータや[[外部記憶装置]])からインタフェースなどを通して受け取り、[[主記憶装置]]やワークエリアに置く([[ロード (コンピュータ)|ロード]]する)プログラムである。なお、それに加えてプログラムを[[起動]]できる状態にし、それを実行するというスタートアップなどと呼ばれる機能まで混同している者も多い。以下は、もっぱらその混同に関する説明である。 |
||
== 機能 == |
== 機能 == |
||
7行目: | 7行目: | ||
{{main|ブートローダ}} |
{{main|ブートローダ}} |
||
特に[[システム]]の起動時に実行され、[[オペレーティングシステム]] (OS) を読込・実行するローダは[[ブートローダ]]と呼ばれ、通常コンピュータが再起動、シャットダウン、電源を切るなどするまで[[カーネル]](OSの中核コンポーネント)に残る。OSの中にはカーネルを[[ページング]]([[主記憶装置]]・[[補助記憶装置]]間のデータ転送)できるものもあり、その場合ブートローダのメモリ領域が移ることがある。 |
特に[[システム]]の起動時に実行され、[[オペレーティングシステム]] (OS) を読込・実行するローダは[[ブートローダ]]と呼ばれ、通常コンピュータが再起動、シャットダウン、電源を切るなどするまで[[カーネル]](OSの中核コンポーネント)に残る。OSの中にはカーネルを[[ページング]]([[主記憶装置]]・[[補助記憶装置]]間のデータ転送)できるものもあり、その場合はブートローダのメモリ領域が移ることがある。 |
||
=== ダイナミックリンカ === |
=== ダイナミックリンカ === |
||
15行目: | 15行目: | ||
=== ローダによる再配置 === |
=== ローダによる再配置 === |
||
ローダによる再配置が必要なコンピュータもある。それらは読み込みの開始点を指定するためにロードされるプログラムの[[メモリアドレス|アドレス]]([[ポインタ (プログラミング)|ポインタ]])を調整する。この方式のコンピュータのポインタはプログラムのベースアドレスからの[[オフセット]](距離)ではなく[[絶対アドレス]]である。[[IBM]]の[[System/360]]やその後継機がそのような方式を採った。 |
ローダによる再配置が必要なコンピュータもある。それらは、読み込みの開始点を指定するためにロードされるプログラムの[[メモリアドレス|アドレス]]([[ポインタ (プログラミング)|ポインタ]])を調整する。この方式のコンピュータのポインタはプログラムのベースアドレスからの[[オフセット]](距離)ではなく、[[絶対アドレス]]である。[[IBM]]の[[System/360]]やその後継機がそのような方式を採った。 |
||
=== ローダのその他の使用 === |
=== ローダのその他の使用 === |
||
ローダは[[プロトタイピング]]、テスト、使い捨てアプリケーションで有用である。そのようなプログラムの |
ローダは[[プロトタイピング]]、テスト、使い捨てアプリケーションで有用である。そのようなプログラムの1つが[[ジーン・アムダール]]のオリジナル[[OS/360]]の中核部であった。その機能は[[MVT]]、[[MVS]]、[[z/OS]]といった後継機に引き継がれた。 |
||
== ローダのないコンピュータ == |
== ローダのないコンピュータ == |
||
動的なプログラムの読み込みをサポートする全てのOSはローダを備えているが、スタック以外にRAMを使わないシステムや[[自動車]]や[[オーディオ]]システムなどに組み込まれるコンピュータシステムでは、あらかじめ決められたプログラムを実行することで事足りてしまうためローダを持たない。 |
動的なプログラムの読み込みをサポートする全てのOSはローダを備えているが、スタック以外にRAMを使わないシステムや[[自動車]]や[[オーディオ]]システムなどに組み込まれるコンピュータシステムでは、あらかじめ決められたプログラムを実行することで事足りてしまうため、ローダを持たない。 |
||
[[UNIX|Unix]]でロードを実行するのは、[[システムコール]]の[[ハンドラ]] ''[[exec|execve()]]'' である。 |
[[UNIX|Unix]]でロードを実行するのは、[[システムコール]]の[[ハンドラ]] ''[[exec|execve()]]'' である。 |
2017年2月7日 (火) 12:42時点における版
ローダ (loader) は、プログラムやデータなどを、外部(他のコンピュータや外部記憶装置)からインタフェースなどを通して受け取り、主記憶装置やワークエリアに置く(ロードする)プログラムである。なお、それに加えてプログラムを起動できる状態にし、それを実行するというスタートアップなどと呼ばれる機能まで混同している者も多い。以下は、もっぱらその混同に関する説明である。
機能
ブートローダ
特にシステムの起動時に実行され、オペレーティングシステム (OS) を読込・実行するローダはブートローダと呼ばれ、通常コンピュータが再起動、シャットダウン、電源を切るなどするまでカーネル(OSの中核コンポーネント)に残る。OSの中にはカーネルをページング(主記憶装置・補助記憶装置間のデータ転送)できるものもあり、その場合はブートローダのメモリ領域が移ることがある。
ダイナミックリンカ
共有ライブラリ(dllなど)を読み込み、起動しているプログラムに関連付けるローダがダイナミックリンカである。
ローダによる再配置
ローダによる再配置が必要なコンピュータもある。それらは、読み込みの開始点を指定するためにロードされるプログラムのアドレス(ポインタ)を調整する。この方式のコンピュータのポインタはプログラムのベースアドレスからのオフセット(距離)ではなく、絶対アドレスである。IBMのSystem/360やその後継機がそのような方式を採った。
ローダのその他の使用
ローダはプロトタイピング、テスト、使い捨てアプリケーションで有用である。そのようなプログラムの1つがジーン・アムダールのオリジナルOS/360の中核部であった。その機能はMVT、MVS、z/OSといった後継機に引き継がれた。
ローダのないコンピュータ
動的なプログラムの読み込みをサポートする全てのOSはローダを備えているが、スタック以外にRAMを使わないシステムや自動車やオーディオシステムなどに組み込まれるコンピュータシステムでは、あらかじめ決められたプログラムを実行することで事足りてしまうため、ローダを持たない。
Unixでロードを実行するのは、システムコールのハンドラ execve() である。