ページファイルをRAMに移動するのはばかげた考えです。それをオフにしてRAMを増やすだけです。:)
No matter how much RAM you have, you want the system to be able to use it efficiently. Having no paging file at all forces the operating system to use RAM inefficiently for two reasons. First, it can't make pages discardable, even if they haven't been either accessed or modified in a very long time, which forces the disk cache to be smaller. Second, it has to reserve physical RAM to back allocations that are very unlikely to ever require it (for example, a private, modifiable file mapping), leading to a case where you can have plenty of free physical RAM and yet allocations are refused to avoid overcommitting.
Consider, for example, if a program makes a writable, private memory mapping of a 4GB file. The OS has to reserve 4GB of RAM for this mapping, because the program could conceivably modify every byte and there's no place but RAM to store it. So immediately, 4GB of RAM is basically wasted (it can be used to cache clean disk pages, but that's about it).
メモリ管理はCPUによって処理され、ページファイルがオンかオフかによって、ページの処理方法に1つの違いはありません。Windowsに対して透過的です。
ページの優先順位は変わらず、ページは同じように破棄されます。ページファイルは、OSではなく、セカンダリストレージとしてCPUによって使用されます。レベル1(RAM)がなくなると、レベル2キャッシュになります。
簡単で汚い例:私のマシンには16GBのRAMがあり、ページファイルはありません。5分前にスタンバイで13GB、空き容量が2GBのみで、フォールアウト4をロードしました。優先度の低いページはフォールアウトのロード時に破棄されました。
ちなみに、Windowsメモリ制限のプッシュに関する2008 Technetブログは、非常に誤解を招く恐れがあります。
https://i.stack.imgur.com/wXkmi.png
マークでさえそれを書いたかどうかについても私は疑っていますが、そうではないことを望みます。
ちなみに、この記事にはどれだけの頻度で穴が開いているのか、そのブログがどれほど頻繁に参照されているかを考慮して誰も選んでいないことに気付いた
- ページファイルとその場所はWindowsによって処理され、ディスクにページアウトされた場所へのメモリアクセスのトラップはCPUによってキャッチされますが、ディスクからページを取得してロードするためにオペレーティングシステムに渡されます。
とにかく、それほど曖昧ではない説明があります:
WindowsはCPUよりも高いアドレスに到達できません-それは不可能です。
OSの能力に関係なく、OSが実行されるハードウェアによって制限されます。OSは実際にはCPUそのものであるためです(内部レジスタ)。
それで、ページファイルはHDD上の領域であり、CPUが物理的またはアーキテクチャ的にRAMをさらに使用できない場合に、物理アドレス空間を拡張するために使用します。
たとえば、セグメント化されたx86 32ビットアーキテクチャでは、2 GBのRAMセグメントが2つあります。
1つはカーネルに割り当てられます。他の2GBはユーザーモード用です。CPUが32個のDRAMピンで使用できるすべてのRAMですが、32ビットプロセスでは4GBを使用できるため、何をすべきかです。幸運なことに、CPUは2GBの余分なページを保存するためにハードドライブであるセカンダリストレージを使用できます。内部レジスタがあるため
、プロセスによって参照される仮想ページをRAMに保存する必要のない物理的な場所。ただし、CPUによってどこかに保存されています。
CPUはすべての4GB RAMをアプリに割り当てることはできませんが、HDDをセカンダリキャッシュとして使用することで4GBのアドレスを割り当てることができます(これはすべてのHDDです)
ページは内部のページングメカニズムを介してRAMに出入りしますが、これはページファイルとは異なります。ページングは常に発生します。...
一番下の行は本当にそれほど複雑ではありません。過去15年ほどの間、多くのエンドユーザーは、ページファイルがオペレーティングシステムの一部であるという印象を与えられてきましたが、そうではありません。それはなかった。この誤解は、IntelやMicrosoftなどの企業によって部分的に促進されています。
RAMは高速のストレージデバイスであり、ハードドライブは低速のストレージデバイスです。したがって、本質的にRAMはレベル1のキャッシュであり、ハードドライブはレベル2です(この類推のためのCPUキャッシュは無視します)。CPUは両方にアクセスできます。
CPUが必要なページを保存するのに十分なRAMがない場合、HDDはオーバーフローとして使用できます。RAMが十分にある場合、PFは冗長です。
コア2まで、Intelプロセッサには32ピンDRAMバス、32レジスタがあり、CPUは4GBのRAMと4GBのHDDスペース(ページファイル)にアクセスできました。これはアーキテクチャ上のハードウェアの制限であり、Windowsの制限ではありません。
ページテーブルは512MBを占有するため、プロセスで使用可能な合計は3.5GBでした。Intel CPUを搭載したWindowsで3.5 GBが表示されるのはそのためです(コア2まで)。GPUを追加すると、さらに少なくなります。
Xeonは、合計32GBのRAM、HDDを含む64GBの物理スペースにアクセスできます(ページファイルを再度)。(これはPAEをカバーします-リンクが追加されます)。
http://www.windowsdevcenter.com/pub/a/windows/2004/04/27/pagefile.html
3番目のスクリーンショットのソース:
System V Application Binary Interface AMD64 Architecture Processor Supplement Draft Version 0.99.7
私はこの答えを改善し続け、ソース素材と関連情報を追加するつもりです。情報が十分でないことと技術情報が多すぎることのバランスを取りたいです。提案を歓迎します。あまり上手く書かれていない可能性があるからといって、投票しないでください。