すべての64ビットLinuxが32ビットLinuxよりも少ないRAMを認識するのはなぜですか?

すべての64ビットLinuxが32ビットLinuxよりも少ないRAMを認識するのはなぜですか?

現在Linux Mint 32ビットを使用しているのは、通常64ビットバージョンよりもRAMが少なく、100MB以上のRAMを認識しているためです。私のコンピュータには4 GBしかインストールされていませんが、すべてのシステムがインストールされているメモリをすべて使用するのではなく、少し少ない量を使用していることがわかります。たとえば、32ビットシステムでは4GB = 3.8GBです。問題は、私が試したすべての64ビットLinuxが3.7GBしか認識していないことです。違いは大きくないと言うことができますが、RAMがあまりないと、そのようなことが起こります。

64ビットアーキテクチャのデフォルト値ですか?この状況を変えるために私ができることはありますか?

答え1

32ビットシステムは2 ^ 32ビットサイズ(4294967296バイト= 4 GB)を処理できますが、64ビットシステムは2 ^ 64ビットサイズ(18446744073709551616バイト=現在ハードウェアが処理できるよりもはるかに多い)を処理します。できます。したがって、64ビットシステムのRAM制限は、トラブルシューティングではなくハードウェア制限に関連しています。

目に見えるものが少ないということは、メモリの一部がシステムの他の用途に予約されていることを意味し、BIOSレベルで実行されるビデオメモリである可能性が高いです。

64ビットアプリケーションは通常、4バイトに格納されている変数(long、float、ポインタなど)が64ビットをサポートするために同じタスクを実行するように8バイトにアップグレードされるため、プログラムサイズとメモリ使用量の観点から常に少し大きいです。アドレス指定。それ以外の場合、パフォーマンスに影響はありません。

答え2

実際には100MBの違いはないようです。おそらくその違いは小さいですが、丸め境界で発生するために3.8GBなります3.7GB。たとえば、3.76との間に違いがあるかもしれません3.74

4GBさらに、RAM専用システムでは32ビットLinuxを使用するのが完璧です。

答え3

これらの多くはおそらくカーネルに関連しているでしょう。私は2.6シリーズのLinuxカーネルで予約されたメモリの大幅な増加を議論する次のスレッドを偶然見つけました。

https://forum.linode.com/viewtopic.php?t=7194

https://forum.linode.com/viewtopic.php?t=7229

簡単に言うと、予約されたメモリの大幅な増加はカーネルバージョン2.6.38で導入されたようで、その後再び減少しました。32ビットカーネルでのみ利用可能、バージョン2.6.39.1。

カーネルバージョン4.9.0-3-amd64以降、4 GBのLinodeインスタンスに167500Kメモリが予約されていることがわかったため、この問題は時間の経過とともにさらに悪化するようです。

関連情報