Silberchatz の「Operating Systems Concepts」の本には、次のように書かれています。
"共有コードは、すべてのプロセスの論理アドレス空間の同じ場所にある必要があります" ,
なぜ同じ場所に表示する必要があるのですか? プロセスごとに個別のページ テーブルがあると思いました。これにより、異なる論理アドレスでコード アドレスを共有できるようになります。
Silberchatz の「Operating Systems Concepts」の本には、次のように書かれています。
"共有コードは、すべてのプロセスの論理アドレス空間の同じ場所にある必要があります" ,
なぜ同じ場所に表示する必要があるのですか? プロセスごとに個別のページ テーブルがあると思いました。これにより、異なる論理アドレスでコード アドレスを共有できるようになります。
マシンコードが完全に位置に依存しないことはめったにありません。アドレス 0x10000 (論理/仮想) にあるときに動作するようにコンパイルされたコードがあり、それをアドレス 0x70000 (論理/仮想) に移動すると、新しい場所では動作しません。
ページテーブルはこれには役に立ちません。instruction pointer
(AKA )に関連するコード/データ アドレッシング モードとは何ですかprogram counter
。一部のCPUにはそれがあり、一部のCPUにはありませんが、一部のCPUには中途半端なものがあります(たとえば、制御をコード内の他の場所に転送する命令(jump
/call
など)に対してのみ使用できますが、データ( )には何も使用できませんmove
) .