0

答えが見つからないように思える質問があります。

これは一部の人にとっては簡単な答えになると思うので、ここに投げたいと思いました:

64 ビット OS で実行されているすべての 32 ビット プロセスは、同じ 4 GB のアドレス空間を共有しますか? それとも、各 32 ビット プロセスは個別の 4 GB のアドレス指定可能な領域を持ちますか?

32ビットプロセスは2 32バイトしかアドレス指定できないことは承知していますが、それらは物理メモリではなく仮想メモリへのポインタですよね? それともいいえ?(物事がどのように機能するかはよくわかりません)

それぞれ 4 GB のメモリで 2 つの 32 ビット プロセスを実行できるかどうか疑問に思っています。

4

2 に答える 2

0

これは、プロセッサやオペレーティング システムなど、さまざまな要因によって異なります。

両方のケースがあり、仮想アドレスを共有でき、64 ビット アドレス空間からスライスを取得できます。これは Linux のプロセッサに依存していると思いますが、間違っている可能性があります。32 ビット アプリケーションには、すべてが同じ仮想アドレスを共有しているように見えます。

2 番目の質問ですが、プロセスごとに 4GB にアクセスできますか? おそらくそうではありません。カーネルには通常、予約済みのメモリ空間があります (私の記憶が正しければ、Linux では 1GB)。しかし、あなたの質問が「各プロセスが 3GB にアクセスできるか」であると仮定すると、十分な物理 RAM があると仮定すると、答えは「はい」です。

于 2012-11-29T07:25:15.190 に答える