TLDPの仮想メモリの誤った説明

TLDPの仮想メモリの誤った説明

TLDPの仮想メモリの説明は完全に混乱しています。

http://www.tldp.org/LDP/tlk/kernel/processes.html#tthFtNtAAB

彼らは言った:

各個々のプロセスは独自の仮想アドレス空間で実行され、セキュアカーネル管理メカニズムを介さないと他のプロセスと対話することはできません。

私にとって、「自己仮想アドレス空間」は、32ビットモードの4GB RAM(0000:0000 - FFFF:FFFF)です。しかし、その意味はそれではありませんか?両方のプロセスが仮想アドレス 1111:1111 を指す場合、同じ物理アドレスを意味するため、すべてのプロセスが同じ 4Gb 仮想アドレス空間を共有しますか?

また、Windowsに関する内容も読みました。ここ、それらを本物各プロセスには別々の仮想アドレス空間があり、ユーザーモードには別々の2Gb RAMがあり、カーネルモードには2Gb RAMが共有されるため、2つの異なるプロセスが1111:1111を指し、異なる物理メモリにマップできます。彼ら? :)

更新:私の質問の写真。 Linux用の写真は何ですか?

ケース1: ここに画像の説明を入力してください。

ケース2 ここに画像の説明を入力してください。

ベストアンサー1

LinuxとWindowsはここでほぼ同じように動作します。各プロセスには独自の「仮想」アドレス空間があります。これは、メモリが実際に物理的に利用可能であるという意味ではなく(明らかにほとんどの32ビットシステムには十分なメモリがないため)、これが仮想的な理由です。

さらに、そこに使用されたアドレスは物理アドレスと一致しません。したがって、AAAA:0000の物理メモリセグメントは9128:2af2に対応します。ポイントは気にする必要がないということです。アプリケーションが興味を持っているのは、興味のあるコンテンツが独自のメモリセグメントにある場所です。はい、これはまた、両方のアプリケーションが独自のメモリビューで同じアドレスを指し、異なるものを取得できることを意味します。

プロセスの物理メモリページに加えて、デバイス(ビデオカードなど)に属するアドレス、ダイナミックリンクライブラリ、またはプロセス間で共有されるメモリ(これは「セキュアカーネル管理」「メカニズム」とはどういう意味ですか?

仮想メモリとプロセスアドレス空間のレイアウトについてより深く知りたい場合や、わかりにくい場合は、「Tanenbaum」「Operating Systems」などの教科書をお勧めします。http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memoryまた読む価値があります。

おすすめ記事