32ビットPAEと64ビットカーネルの違いは何ですか?

32ビットPAEと64ビットカーネルの違いは何ですか?

私はメモリアドレッシングについてのみこの質問をしています。

PAEカーネルを使用すると、オペレーティングシステムが標準の32ビットカーネルよりも多くのメモリにアクセスできることがわかります。しかし、これはまた何を意味しますか? 64ビットカーネルと32ビットPAEカーネルの具体的な違いは何ですか?

Wikipediaによると、プロセスアドレス空間はまだ32ビットなので、最大4 GBのメモリにのみアクセスできます。ただし、オペレーティングシステムは64 GBのアドレス空間にアクセスでき、プロセスに4 GBのブロックを割り当てます。

これは私の考えには大きな違いですが、多くの人が見落とすようです。

ベストアンサー1

カーネルは物理メモリを見てプロセスビューを提供します。マシン全体に512 MBのRAMしかない場合、プロセスがどのように4 GBのメモリスペースを持つことができるか疑問に思うなら、これがまさに理由です。各プロセスには独自の仮想メモリ空​​間があります。このアドレス空間のアドレスは物理ページまたはスワップ空間にマッピングされます。スペースを交換するには、プロセスがページにアクセスして変更する前に、スペースを物理メモリーに再交換する必要があります。

XQYZの答え(DOS highmem)のTorvaldsの例は、PAEが一般的に悪いという彼の結論に同意しませんが、あまりにもとんでもないわけではありません。特定の問題を解決し、利点もありますが、これらすべてが議論の余地があります。たとえば、ライブラリ実装者は実装が容易ではないと考えることができますが、ライブラリユーザーはライブラリが便利で使いやすいと考えることができます。 Torvaldsは実装者なので、ステートメントの内容を話す必要があります。エンドユーザーの場合、これはエンドユーザーが懸念する問題を解決します。

PAEは、32ビットシステムに残っている別の問題を解決するのに役立ちます。これにより、カーネルは4GBのメモリ全体をマップすることができ、PAEのない純粋な32ビットのカーネルで物理メモリが不足しているにもかかわらず、3.1GBまたは3.2GBのメモリしか「見る」ことができない多くのシステムに存在するBIOSメモリのバグを解決します。します。 4GB。

それにもかかわらず、64ビットカーネルの場合、物理ページと仮想ページの間の関係は対称です(スワップスペースやその他の詳細に関係なく)。ただし、PAEカーネルはプロセスアドレス空間内の32ビットポインタと物理メモリの36ビットアドレスをマッピングします。これにはより多くの簿記が必要です。キーワード:「拡張ページテーブル」。しかし、これはプログラミングの問題に近い。これが主な違いです。完全な線形アドレス空間よりも多くの記録が必要である。 PAEの場合は、前述のとおり4GBブロックです。

しかも両方PAEおよび64ビットは大容量ページを受け入れます(32ビットの標準4KBページではなく)。

1巻3枚インテルプロセッサーマニュアルいくつかの概要があり、読みたい場合は、3A巻(「保護モードメモリ管理」)の第3章に詳細があります。

これは私の考えには大きな違いですが、多くの人が見落とすようです。

あなたは正しいです。しかし、ほとんどの人は実装者ではないユーザーです。。だから彼らは気にしないでしょう。アプリケーションが多くのメモリを必要としない限り、多くの人は気にしません(特に互換性層があるため)。

おすすめ記事