応用情報技術者 2009年 秋期 午前2 問07
問題文
Linux システムにおいて、静的ライブラリと比較した場合の共有ライブラリの特徴はどれか。
選択肢
ア:実行可能ファイルのサイズが大きくなる。
イ:実行時のメモリの使用効率が良い。(正解)
ウ:ライブラリの修正後、それを利用するプログラムの再コンパイルが必要である。
エ:リンク時のオーバヘッドが小さい。
Linuxシステムにおける静的ライブラリと共有ライブラリの特徴【午前2 解説】
要点まとめ
- 結論:共有ライブラリは実行時にメモリを共有するため、メモリ使用効率が良いです。
- 根拠:静的ライブラリはプログラムに組み込まれファイルサイズが大きくなり、メモリも重複して使用されます。
- 差がつくポイント:共有ライブラリは修正後に再コンパイル不要で、リンク時の負荷は静的より大きい点を理解しましょう。
正解の理由
共有ライブラリはプログラム実行時に動的に読み込まれ、複数のプロセス間で同じライブラリコードを共有します。これにより、メモリの使用効率が向上し、実行可能ファイルのサイズも小さくなります。したがって「イ: 実行時のメモリの使用効率が良い」が正解です。
よくある誤解
共有ライブラリはリンク時のオーバーヘッドが小さいと誤解されがちですが、実際は動的リンクのためリンク時の負荷は静的より大きいです。
また、共有ライブラリの修正後は再コンパイル不要である点も混同しやすいポイントです。
また、共有ライブラリの修正後は再コンパイル不要である点も混同しやすいポイントです。
解法ステップ
- 静的ライブラリと共有ライブラリの違いを整理する。
- 実行ファイルのサイズとメモリ使用の関係を理解する。
- ライブラリ修正時の再コンパイルの必要性を確認する。
- リンク時のオーバーヘッドの大小を比較する。
- 選択肢の内容と照らし合わせて正しい特徴を選ぶ。
選択肢別の誤答解説
- ア: 静的ライブラリは実行ファイルが大きくなるが、共有ライブラリは小さくなるため誤り。
- イ: 実行時にメモリを共有するため効率が良い、正解。
- ウ: 共有ライブラリは修正後に再コンパイル不要なので誤り。
- エ: 共有ライブラリは動的リンクのためリンク時のオーバーヘッドは大きいので誤り。
補足コラム
共有ライブラリは「動的リンクライブラリ(DLL)」とも呼ばれ、Linuxでは
.soファイルとして提供されます。これにより、複数のプログラムが同じライブラリを共有し、メモリ節約や更新の容易さを実現しています。静的ライブラリは
.aファイルで、プログラムに組み込まれるため配布が簡単ですが、サイズ増加とメモリ非効率がデメリットです。
FAQ
Q: 共有ライブラリの更新でプログラムの再コンパイルは必要ですか?
A: いいえ、共有ライブラリは動的に読み込まれるため、基本的に再コンパイル不要です。
A: いいえ、共有ライブラリは動的に読み込まれるため、基本的に再コンパイル不要です。
Q: 静的ライブラリのメリットは何ですか?
A: 実行ファイルに組み込まれるため、ライブラリがなくても単独で動作可能な点です。
A: 実行ファイルに組み込まれるため、ライブラリがなくても単独で動作可能な点です。
関連キーワード: 静的ライブラリ、共有ライブラリ、動的リンク、メモリ効率、Linux

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

