私はオペレーティング システムの設計と概念に関するコースを受講しており、現在は Linux カーネルを徹底的に研究しようとしています。どうしても捨てられない質問があります。最新のオペレーティング システムでは、各プロセスに独自の仮想アドレス空間 (VAS) があります (たとえば、32 ビット システムでは 0 から 2^32-1 まで)。これには多くの利点があります。しかし、実装では、いくつかの点で混乱しています。例を挙げて説明しましょう。
2 つのプロセス p1、p2 があるとします。p1 と p2 には独自の VAS があります。アドレス0x023f4a54
が異なる物理アドレス (PA) にマップされていますが、どうすればよいでしょうか? この翻訳はどのように行われますか。つまり、変換メカニズムは知っていますが、異なるプロセスのアドレス空間になると、同じアドレスが異なる物理アドレスにマップされることを理解できません。
0x023f4a54 in p1's VAS => PA 0x12321321
0x023f4a54 in p2's VAS => PA 0x23af2341 # (random addresses)