OSに関する限り、それは問題ではありません。TLB キャッシュがコンテキスト スイッチ間でフラッシュされていない場合は、両方のプロセスで同じベース アドレスを使用すると有利でした。トランスレーション ルックアサイド バッファー (TLB) キャッシュは、プロセス ページ テーブルからの高価なメモリ読み取りの数を減らすために、個々のページの仮想アドレスから物理アドレスへの変換をキャッシュする小さなバッファーです。コンテキスト スイッチが発生するたびに、TLB キャッシュがフラッシュされます。ページ テーブル エントリがまだ TLB にキャッシュされているという理由だけで、プロセスが他のプロセスのメモリのごく一部を読み取れるようにする必要はありません。
異なるコアで実行されているプロセス間でコンテキスト スイッチは発生しません。ただし、各コアには独自の TLB キャッシュがあり、その内容は他のコアの TLB キャッシュの内容と完全に相関していません。同じプロセスからスレッドを切り替える場合、TLB フラッシュは発生しません。ただし、スレッドは仮想アドレス空間全体を共有します。
共有メモリ セグメントを同じ仮想アドレスにアタッチするのは、その中の領域への絶対ポインタを渡す場合にのみ意味があります。たとえば、共有メモリ内のリンクされたリスト構造を想像してみてください。通常は、絶対ポインタではなく、ブロックの先頭からのオフセットを使用します。ただし、追加のポインター演算が含まれるため、これは遅くなります。そのため、絶対ポインターを使用するとパフォーマンスが向上する可能性がありますが、両方のプロセスの仮想アドレス空間で適切な場所を見つけるのは簡単な作業ではない可能性があります (少なくとも移植可能な方法でそれを行うことはできません)。 x86-64。