新城@筑波大学情報です。こんにちは。

In article <427A8965.E9264018@ht.sakura.ne.jp>
        IIJIMA Hiromitsu <delmonta@ht.sakura.ne.jp> writes:
> > > 64bit 空間に、あらゆるmoduleを張り付けてやれば、原理的に
> > > dynamic loading は一回ですむよね。別に 32bit でもそういう
> > > 構成はありうるわけだけど。
> それだと、モジュール内部に保有している変数(static 変数)がバッティング
> します。コード部分だけモジュールの各インスタンスで共有するのであれば、

インスタンス変数は、fork() でコピーされるんでしょ。

昔の Linux みたいに、動的リンク・ライブラリを張り付ける位置
を固定してしまえばいいんじゃないか、固定しても、64ビットの
空間が平気だろう、という話かと。

動的リンク・ライブラリの番地が固定されても、fork() してプロ
セスが違えば、データ部分はコピーされます。今の仮想記憶の仕組
みでは、copy-on-write が普通なので、データ部分の書き換えなけ
れば物理的には共有するんでしょう。機械語部分は、Read-Only な
ので、自然にずっと共有。

> Windows 3.0 あたりですでに実用化されていたはず。

Windows 3.0 って、1990 年くらいでしたっけ。今から考えると、
Mach とかあった時代によくそんなしょぼいものを作って売ったよ
なあ。NeXT はあったわけだし。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\