質問: 共有ライブラリの動作について質問です。 一般的に共有ライブラリというものは演算とシステムコールによってシステムに影響を及ぼさない範囲で作られている物でしょうか。 具体的に言ったら、勝手にシステムの設定を書き換えたり、変なところに設定ファイルを作ったり、などです。要は衝突しないような規定が一般的にあるかどうかということです。 OSはLinuxとwindowsを想定しています。windowsのサードパーティプログラムであれば、なにか行儀の悪い動作をするかもしれませんが、Linuxの著名なディストリであればそのような動作をすることはないのではないかと思いました。そのような動作についての明確なポリシーなどが表明されてればいいのですが。 このあたりの事情について詳しい方いましたら回答をお願いできないでしょうか。
回答: 共有ライブラリとは、普通*.so、*.dylib、*.dllなど実行時にリンクされるライブラリを指すと思いますが、システムの設定を書き換えたり、任意の場所にファイルを作ることも、最近のOSでは共有ライブラリ経由で行いますから、そういうことが出来ない、ということはありません。共有リソースへのアクセスは適切な排他制御が必要ですが、それはライブラリが共有かどうかとは関係ありません。扱うリソースごとにポリシーがあるでしょう。 共有ライブラリに求められることは、実行時に異なるアドレスに配置されても動作すること(position independent code、ジャンプ先アドレスやグローバルデータの参照を絶対アドレスで行っていないこと)、および自己書き換えを行わないことです。