私はこれをメモリアドレス指定に関してのみ尋ねます。
PAEカーネルを使用すると、OSが標準の32ビットカーネルよりも多くのメモリにアクセスできることを知っていますが、他にどのような影響がありますか? 64ビットのカーネルと32ビットのPAEカーネルの具体的な違いは何ですか?
ウィキペディアによると、プロセスのアドレス空間は32ビットのままです。つまり、最大4GBのメモリにしかアクセスできません。ただし、OSは64GBのアドレス空間にアクセスでき、4GBのチャンクをプロセスに割り当てます。
これは多くの人が無視している大きな違いだと私には思えます。
カーネルは物理メモリを認識し、プロセスにビューを提供します。マシン全体に512 MBのRAMしかない場合、プロセスが4 GBのメモリ領域をどのように持つことができるか疑問に思ったことがあるなら、それが理由です。各プロセスには独自の仮想メモリ空間があります。そのアドレス空間のアドレスは、物理ページまたはスワップ空間のいずれかにマップされます。スペースを交換する場合は、プロセスがページにアクセスしてページを変更する前に、スペースを物理メモリにスワップバックする必要があります。
XQYZの回答(DOS highmem)のTorvaldsの例は、それほど遠くはありませんが、PAEは一般的に悪いことであるという彼の結論については同意しません。それは特定の問題を解決し、そのメリットがあります-しかし、それはすべて議論の余地があります。たとえば、ライブラリの実装者は、実装をそれほど簡単には認識しないかもしれませんが、そのライブラリのユーザーは、このライブラリを非常に便利で使いやすいと感じるかもしれません。 Torvaldsはインプリメンターなので、彼はステートメントが言うことを言わざるを得ません。エンドユーザーにとって、これは問題を解決し、それがエンドユーザーが気にすることです。
1つのPAEは、32ビットマシン上の別のレガシー問題の解決に役立ちます。これにより、カーネルは4 GBのメモリ全体をマップし、多くのマシンに存在するBIOSメモリホールを回避できるため、物理的な4 GBにもかかわらず、PAEのない純粋な32ビットカーネルがメモリを3.1または3.2 GBしか「認識」できません。
とにかく、64ビットカーネルの場合、これは物理ページと仮想ページの間の対称的な関係です(スワップスペースやその他の詳細は別として)。ただし、PAEカーネルは、プロセスのアドレス空間内の32ビットポインタと物理メモリ内の36ビットアドレスの間でマッピングされます。ここでより多くの簿記が必要です。キーワード:「拡張ページ表」。しかし、これはプログラミングの問題の一部です。これが主な違いです。完全な線形アドレス空間と比較してより多くの簿記。 PAEの場合、あなたが言ったように4 GBのチャンクです。
それとは別に両方PAEと64ビットは大きなページを許可します(32ビットの標準の4 KBページの代わりに)。
Intelプロセッサマニュアルの第1巻の第3章に概要があり、第3A巻(「プロテクトモードメモリ管理」)の第3章に詳細があります。
私には、これは多くの人に無視されているように見える大きな違いのように思えます。
あなたが正しい。ただし、大多数の人はユーザーであり、実装者ではありません。それが彼らが気にしない理由です。また、アプリケーションに大量のメモリを必要としない限り、多くの人は気にしません(特に互換性レイヤーがあるため)。
リーナス・トーバルズがそれについて何を言っているかを調べたいと思うかもしれません ここ :
PAEはその非常に単純な事実を頭に浮かび上がらせ、物事を大げさに台無しにしました。アイデアを思いついた人は誰でも完全に無能であり、DOSHIGHMEMの苦痛をすべて忘れていました。 286を置き去りにして、より大きな物理スペースにウィンドウを備えたHIGHMEMがらくたにする代わりに、386を使い始めたのには、かなりの理由があります。
[...]
繰り返しますが、PAEは実際には何も修正しませんでした。それは間違いでした。それは単なる完全な失敗であり、ハードウェアエンジニアがソフトウェアを理解していなかった結果です。
CPUの観点から、
システムの他の部分から見ると、PAEと64ビットカーネルのどちらを使用していても違いはありません。 CPUピンからの信号のみを見ることができ、CPUには36があります。どちらの場合もメモリをアドレス指定するビット。
もちろん、(2)には自動的に(1)も含まれます。