Я использую 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 ГБ ОЗУ. Я проверил в BIOS, что у меня установлено 4 гигабайта ОЗУ, а не 3,1. Почему Ubuntu 64 бит определяет только 3,1 ГБ ОЗУ?
Выход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
Около 80% используемых в настоящее время ЦП (и почти каждый новый проданный ЦП) поддерживают 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)
В моей системе установлено 4 ГБ оперативной памяти, однако общий объем составляет около 4,7 ГБ (я предполагаю, что BIOS сообщает о большем объеме памяти из-за адресного пространства для видеокарт, устройств PCI и IO и т. д.). В итоге из-за этих проблем приложениям доступно только 3,6 ГБ.
Обратите внимание на объем «отсутствующей» памяти, он «отражает потерянное адресное пространство памяти из-за пробелов в карте памяти. Обычно пробелы оставляются для пространства PCI, ввода-вывода и т. д. Каждая модель системы поставщика отличается, и каждая система будет иметь разное значение, сообщаемое для отсутствующей памяти».
Также посмотрите на вопрос, на который указал fossfreedom, он дает вам более подробное объяснение того, где может использоваться адресное пространство.