Ubuntu 64 ビットでは 3.1 GB の RAM しか検出されない

Ubuntu 64 ビットでは 3.1 GB の RAM しか検出されない

私は Ubuntu Linux 64 ビットを使用しています。最近、Ubuntu 32 ビットを使用していましたが、コマンドを通じてgrep --color=always -iw lm /proc/cpuinfoプロセッサが 64 ビットに対応していることを発見しました。コマンドの出力は次のとおりです。

flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc up pebs bts nopl pni dtes64 monitor ds_cpl tm2 cid cx16 xtpr

しかし、ディスクを消去して Ubuntu 11.10 64 ビットをインストールした後も、システムは 3.1 GB の RAM しか検出しません。BIOS で、3.1 ではなく 4 GB の RAM がインストールされていることを確認しました。Ubuntu 64 ビットが 3.1 GB の RAM しか検出しないのはなぜですか?

出力uname -a

aaron@Aarons-Ubuntu-Computer:~$ uname -a
Linux Aarons-Ubuntu-Computer 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

出力free -m

aaron@Aarons-Ubuntu-Computer:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          3136       2960        175          0        233       1996
-/+ buffers/cache:        730       2405
Swap:         3189          0       3189

答え1

現在使用されている CPU の約 80% (および販売されるほぼすべての新しい CPU) は 64 ビット Ubuntu をサポートしているため、これは驚くことではありません。ほとんどのユーザーのハードウェアで 64 ビット Ubuntu を実行できるため、64 ビット Ubuntu をデフォルトとして提案する計画があります (現在 32 ビットが提案されている方法)。

それでも、カーネルから見た合計メモリと、それが最初にどのように割り当てられるかのレポートを表示するには、次のようにします。

dmesg |grep "Memory: "

次のような行が表示されます。

[    0.000000] Memory: 3823988k/4849664k available (6109k kernel code, 874468k absent, 151208k reserved, 4876k data, 984k init)

私のシステムには 4GB の RAM が搭載されていますが、報告されている合計は 4.7 GB 程度です (ビデオ カード、PCI および IO デバイスなどのアドレス空間のため、BIOS はより多くのメモリを報告していると思います)。これらの懸念により、最終的には 3.6 GB のみがアプリケーションで使用可能になります。

「存在しない」メモリ量に注意してください。これは、「メモリ マップ内のメモリ ホールによって失われたメモリ アドレス指定スペースを反映します。通常、ホールは PCI スペース、IO などに残されます。ベンダー モデル システムごとに異なり、システムごとに、存在しないメモリに対して報告される値が異なります。」

また、fossfreedom が指摘した質問も見てください。アドレス空間がどこで使用されているかについて、さらに詳しく説明されています。

関連情報