web-dev-qa-db-ja.com

32ビットシステムの4GB RAM制限もスワップスペースに影響しますか?

32ビットシステムがRAMの最大量として4GBしか処理できないことはよく知られています。

Linuxでは、この制限はスワップパーティションにも適用されますか?私のRAM +スワップが4GBを超える場合、完全に使用されますか?

答えが「いいえ、スワップには適用されません」の場合、なぜですか?

11
Sekhemty

いいえ、想像してみてくださいRAMは机のようなもので、スワップスペース/仮想メモリはファイリングキャビネットのようなものです。ファイリングキャビネットには多くの情報を入れることができますが、アクセスするのは困難です。使いたいときは、引き出して机の上に置く必要があります。問題は、机が一度にたくさんの紙しか収納できないことです。

32ビットマシンは、4GB(2 ^ 32、つまり約40億バイト)の大きさのデスクしか持てませんが、それでもほぼ無制限のファイリングキャビネットを持つことができます。机がいっぱいになったときに紙を「交換」するだけで、ファイリングキャビネットにある別のページを見る必要があります。


スワップに適用されない理由は、RAMのコンテンツにアクセスしたり、そこからコードを実行したりすることは、処理できる数値のサイズに制限されるためです。できるように考えてください。机の上にあるのは40億語だけです。これは数えきれないほどの高さであり、単語を直接操作する必要があるためです。「単語3,547のつづりが間違っています。単語3,452,780を「こんにちは」に変更してください。単語6を削除してください。」

これで、各ページに4,000語が含まれる可能性があります。キャッチは、スワップスペースを参照している場合、Wordではなく、ページでのみ参照することです。したがって、まだ40億ページまでしか数えられませんが、40億ページまで数えることができます。 40億ページは実際には16 単語を保持します-あなたが数えることができるよりはるかに多いです。

64ビットマシンは数を増やすことができるので、十分な大きさのデスクがあれば、すべてのページを一度にデスクに置くことができます。 32ビットマシンに超大型の机を置いても、数えるのは40億に過ぎないので、机の上の余分な単語をすべて参照する方法はありません。

12
Darth Android

物理メモリと仮想メモリを混同しています。

RAMは物理メモリです。スワップスペースには、多くの4GB仮想アドレススペースを含めることができます。

10
David Marshall