Почему моя система показывает только 3,2 гибибайта RAM, когда у меня определенно есть 4,0 гибибайта

Как отмечено другими, нет действительно ответа на это: имена файлов и пути не имеют кодирования; ОС только имеет дело с последовательностью байтов. Отдельные приложения могут принять решение интерпретировать их как закодированный в некотором роде, но это варьируется.

А именно, Бойкий (используемый Gtk + приложения) предполагает, что все имена файлов являются закодированным UTF-8, независимо от локали пользователя. Это может быть переопределено с переменными среды G_FILENAME_ENCODING и G_BROKEN_FILENAMES.

С другой стороны, спокойные значения по умолчанию к предположению, что все имена файлов кодируются в локали текущего пользователя. Отдельное приложение может принять решение переопределить это предположение, хотя я не знаю ни о ком, которые делают, и нет никакого внешнего переключателя переопределения.

Современные дистрибутивы Linux настраиваются таким образом, что все пользователи используют локали UTF-8, и пути на внешнем монтировании файловой системы переводятся в UTF-8, таким образом, это различие в стратегиях обычно не имеет никакого эффекта. Однако, если Вы действительно хотите быть в безопасности, Вы не можете принять структуру об именах файлов вне "NUL-завершенного ', / '-delimited последовательность байтов".

(Также примечание: локаль может варьироваться процессом. Два различных процесса, выполненные тем же пользователем, могут быть в различных локалях просто путем установки различных переменных среды.)

12
02.07.2011, 06:35
2 ответа

32-разрядное адресное пространство означает, что у Вас есть пространство для 4 ГБ адресов. Идеально ядру нравится мочь отобразить всю физическую память, всю память текущей задачи и всю ее собственную память. Если одна только физическая память поднимает всех доступных 4 ГБ, которые не будут работать. Таким образом, физическая память разделена на низкую память, которая отображается все время, и верхняя память, которая должна быть отображена, когда используемый. Если Вы не выполняете исправленное ядро на ix86 архитектуре, 128 МБ адресного пространства посвящен коду ядра и структурам данных, и 896 МБ посвящены отображению физической памяти (для в общей сложности 1 ГБ).

Дополнительное чтение по сложностям управления памятью, когда Ваше адресное пространство не удобно больше, чем Ваша общая память:

Выборки от Ваших журналов ядра:

BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cdce0000 (usable)
BIOS-e820: 00000000cdce0000 - 00000000cdce3000 (ACPI NVS)
BIOS-e820: 00000000cdce3000 - 00000000cdcf0000 (ACPI data)
BIOS-e820: 00000000cdcf0000 - 00000000cdd00000 (reserved)
BIOS-e820: 00000000d0000000 - 00000000e0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000130000000 (usable)
2404MB HIGHMEM available.
887MB LOWMEM available.
Zone PFN ranges:
DMA      0x00000000 -> 0x00001000
Normal   0x00001000 -> 0x000377fe
HighMem  0x000377fe -> 0x000cdce0

Здесь у Вас есть 887 МБ низкой памяти: теоретический максимум 896 МБ минус некоторые МБ буферов DMA (зоны памяти раньше связывались с устройствами).

Из Вашей физической памяти 3328 МБ отображаются в адресах ниже 4 ГБ, и 768 МБ отображается в адресах выше 4 ГБ (диапазон 0x100000000–0x130000000). Вы не получаете доступ к этим 768 МБ, который объясняет, почему Вы только имеете 3242 МБ в наличии (4096 МБ RAM минус 768 МБ, недоступных минус 9 МБ буферов DMA минус 75 МБ, используемых самим ядром для кода и данных). Я не знаю, почему BIOS отображает некоторую RAM выше метки на 4 ГБ, но как точка данных, я отправляю это от ПК с 4 ГБ RAM, которой так же отобразили RAM в 0x100000000–0x130000000.

Отображение физической памяти выше 4 ГБ требует использования PAE. PAE подвергается маленькой производительности наверху (в частности, он требует больших структур данных в диспетчере памяти), таким образом, он систематически не включается. Ядро Ubuntu по умолчанию компилируется без поддержки PAE. Заставьте -generic-pae ядро Install linux-image-generic-pae мочь получить доступ к 64 ГБ RAM.

TL, DR: Linux работает как ожидалось. Встроенное микропрограммное обеспечение не так полезно. Получите PAE-поддерживающее ядро.

19
27.01.2020, 19:55
  • 1
    ну, который был легок... Спасибо Gilles :)... понимая журнал определенно более трудно!... Я установил linux-image-2.6.32-32-generic-pae, и htop теперь отчеты 3990 MiB –  Peter.O 19.06.2011, 15:22
  • 2
    Машина отображает поршень выше метки на 4 ГБ так, чтобы это могло поместить аппаратную память как Ваша видеопамять под меткой на 4 ГБ так, чтобы они могли использоваться не pae, включил ядра на 32 бита. –  psusi 20.06.2011, 16:50
  • 3
    я предполагаю всего Вашего ГБ, должен быть гибибайтом? –  weynhamz 16.12.2012, 09:22
  • 4
    @TechliveZheng Это - компьютерный технический сайт, не сайт физики. Весь мой МБ, ГБ, и т.д. является действительно мебибайт, гибибайтом, и т.д. –  Gilles 'SO- stop being evil' 16.12.2012, 23:24

Возможно, это - потому что архитектура Вашей Ubuntu является i386 (версия на 32 бита). Каков результат, когда Вы работаете uname -a?

1
27.01.2020, 19:55
  • 1
    uname -a ... Linux DT9400 2.6.32-32-универсальный # SMP с 62 Ubuntu среда 20 апреля 21:54:21 UTC 2011 i686 GNU/Linux... Однако, поскольку я упомянул в "Обновленной информации": в моем вопросе еще 10,04 32 бита загруженная двойным образом установка показывает 3,9 ГиБ.. Обе из систем двойной загрузки были установлены с того же CD, но являются currtnly, работающим differnt ядра, и установили различные программы... BTW, это не недавний случай, Он показывал 3,2 гибибайта в течение многих месяцев.. –  Peter.O 19.06.2011, 11:52
  • 2
    Вы, очевидно, выполняете 32-разрядное ядро ('i686'). Между прочим, 3.9 ГБ уже означает 4 ГБ, так как некоторое адресное пространство резервируется аппаратными средствами. –  mbaitoff 19.06.2011, 12:17
  • 3
    Да, благодарит mbaitoff, я ожидал бы, что немного памяти прогуляется, но я думаю, что 0,8 гибибайта слишком много, таким образом, я хотел бы узнать то, что продолжается здесь. –  Peter.O 19.06.2011, 12:48
  • 4
    AFAIK Ubuntu может установить ядро PAE, которое может использовать большие суммы RAM даже на x86 –  Anton Barkovsky 19.06.2011, 14:06
  • 5
    я думаю Вы просто, должен установить pae ядро (linux-generic-pae и linux-headers-generic-pae) и, если Вы любите, удаляете общее ядро. –  Anton Barkovsky 19.06.2011, 22:36

Теги

Похожие вопросы