動的リンク

動的リンクとは



動的リンク(dynamic link)は、その名が示すように、静的なリンクとは対照的に、実行時あるいは参照時にリンクが確立される方式を指します。この用語は主に2つの異なる分野で使用されます。

1. コンピュータプログラムにおける動的リンク

コンピュータプログラムの世界では、動的リンクはプログラムの実行中にモジュールを結合する方式として知られています。大規模なプログラムは通常、複数のモジュールに分割されます。これらのモジュールは、コンパイラによってソースコードからオブジェクトファイルに変換された後、リンケージエディタによって結合され、最終的な実行可能ファイルが生成されます。この結合プロセスにおいて、すべてのプログラムコードを事前に結合する静的リンクに対し、動的リンクではプログラムの実行開始時に初めて他のモジュールと結合を行います。

### 動的リンクのメカニズム

動的リンク機構を利用したライブラリは、動的リンクライブラリ(DLL)と呼ばれます。Windows環境ではDLLと略されることが多く、複数のプログラムから共有されることで、コードの重複を避けるとともに、メモリ使用量を削減する効果があります。このようなライブラリはしばしば「共有ライブラリ」として運用されます。

### 動的リンクの利点と欠点

動的リンクの主な利点として、以下の点が挙げられます。

モジュールのサイズを小さくできる
ライブラリの変更時にプログラムの再リンクが不要な場合がある

一方、欠点としては、

モジュールが自己完結できない
実行時のオーバーヘッドがある

などが挙げられます。動的リンクは、通常、アプリケーション起動時に必要なシンボルの解決を行う早期束縛(アーリーバインディング)の形式をとりますが、遅延束縛(レイトバインディング)をサポートする環境もあり、必要に応じてモジュールを動的にロードすることも可能です。

### 共有ライブラリとDLL地獄

共有ライブラリは複数のアプリケーションから利用できる便利な仕組みですが、いくつかの問題点も抱えています。ライブラリのバージョンアップによってプログラムが動作しなくなる、あるいは、バージョンアップしたライブラリバグがあると、そのライブラリを利用する全てのソフトウェアに影響が及ぶ、といった問題があります。特に、システム全体で共有されるライブラリの場合、この影響は深刻になる可能性があります。これらの問題は「DLL地獄(DLL Hell)」と呼ばれることもあります。

### プラグイン

動的ロードや動的リンクの仕組みを応用したものがプラグイン機構です。これにより、サードパーティの開発者やエンドユーザーがアプリケーションの機能を拡張できるようになります。プラグインは特定のインターフェイス仕様に従って実装されたサブルーチンであり、アプリケーションから探索してコールバック関数として呼び出すことができます。

動的ロードをサポートするAPIとしては、Windowsでは`LoadLibrary()`と`GetProcAddress()`が、POSIX環境では`dlopen()`と`dlsym()`が用意されています。

2. ハイパーテキストにおける動的リンク

ハイパーテキストの世界では、動的リンクはハイパーテキストを記述した時にリンクを予め定義するのではなく、参照時に動的にリンクを決定する方式を指します。これにより、より柔軟で動的なコンテンツの表示が可能になります。



まとめ



動的リンクは、コンピュータプログラムとハイパーテキストの分野で、それぞれ異なる重要な役割を果たしています。プログラムにおいては、効率的なモジュール管理とコードの再利用を可能にし、ハイパーテキストにおいては、より柔軟なコンテンツ表示を実現します。それぞれの分野において、動的リンクは現代の技術を支える重要な要素となっています。

関連事項



ダイナミックリンクライブラリ
静的リンク

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。