「i」がグローバル変数であるこの関数でライブラリを共有しているとします。
int foo() {
return i++;
}
複数のプロセスからこの関数を呼び出すと、各プロセスの「i」の値は他のプロセスから独立しています。
この動作は当然のことです。
通常、この動作はリンカーによってどのように実装されるのだろうかと思っていました。私の理解では、コードはプロセス間で共有されるため、変数は、このライブラリを使用するすべてのプログラムのすべてのアドレス空間で同じ仮想アドレスを持つ必要があります。その条件を達成するのは非常に難しいと思われるので、ここで何かが欠けていると思います。
この件に関する詳細情報を入手できますか?