私は 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 が指摘した質問も見てください。アドレス空間がどこで使用されているかについて、さらに詳しく説明されています。