Что случилось с моей оперативной памятью?

Я пытаюсь понять основы ОС Linux. Я запускаю 64-разрядный Ubuntu 12.04 на 64-битном процессоре. Система имеет 2 ГБ оперативной памяти.

cat /proc/meminfo MemTotal: 2012040 kB 

Вопрос 1 : Где отсутствует 85112 КБ ОЗУ?

 2097152 (2 gb in kilobytes) 2012040 - ______________ 85112 

Является ли это зарезервированным для чего-то еще или это аппаратное ограничение, которое система не может использовать 4% ОЗУ?

Вопрос 2 : Мое начальное чтение говорит мне, что для пространства ядра пользователя существует 3: 1. Почему это не так?

 (3/4)*2097152 =1572864 for user space (1/4)*2097152 =524288 for kernel space 

Я знаю о кэшах и буферах Linux RAM (я потратил некоторые исследовательские усилия, чтобы понять это, по крайней мере), но в этом случае это не имеет никакого отношения к этому, так что происходит?

2 Solutions collect form web for “Что случилось с моей оперативной памятью?”

Вы действительно не должны задавать два вопроса в одном, но …

Вопрос 1

Некоторая часть этой памяти используется для самого кода ядра, некоторые зарезервированы и т. Д. Ядро выплевывает его в сообщениях загрузки системы:

 [ 0.000000] Memory: 6106920k/7340032k available (3633k kernel code, 1057736k absent, 175376k reserved, 3104k data, 616k init) 

Линия «отсутствует» – это память, которая на самом деле отсутствует (на данный момент в этой машине установлено 6 ГБ ОЗУ). Ядро также выплевывает карту памяти (это ранее в загрузочных сообщениях):

 [ 0.000000] e820: BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable [ 0.000000] BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reserved [ 0.000000] BIOS-e820: [mem 0x00000000000e2c00-0x00000000000fffff] reserved [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000bf77ffff] usable [ 0.000000] BIOS-e820: [mem 0x00000000bf780000-0x00000000bf797fff] ACPI data [ 0.000000] BIOS-e820: [mem 0x00000000bf798000-0x00000000bf7d9fff] ACPI NVS [ 0.000000] BIOS-e820: [mem 0x00000000bf7da000-0x00000000bfffffff] reserved [ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved [ 0.000000] BIOS-e820: [mem 0x00000000ffe00000-0x00000000ffffffff] reserved [ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x00000001bfffffff] usable 

Затем ядро ​​выполняет различные исправления на этой карте, обычно резервируя больше памяти. Тем более, что драйверы загружаются.

вопрос 2

Разделение ядра / пользователя имеет виртуальное адресное пространство , а не память. Его почти не имеет значения в 64-битной коробке, потому что есть так много адресного пространства, чтобы обойти.

В 32-битном поле для адресного пространства пользователя использовались виртуальные адреса 0x00000000-0xBFFFFFFF. 0xC0000000-0xFFFFFFFF были использованы ядром (это раскол 3: 1, другие параметры включали разделение 2: 2. Обратите внимание, что эти числа являются гигабайтами, поэтому это 2: 2 не 1: 1). Виртуальные адреса также зависят от процесса (каждый процесс может иметь страницу на 0x00001000, а другая страница).

Но виртуальный адрес не соответствует байту памяти. Это может быть обеспечено в основном четырьмя вещами:

  1. Ничего. Страница не используется. Попытайтесь получить к нему доступ, получите segfault.
  2. Физическая оперативная память. MMU переводит виртуальный адрес на какой-то физический адрес, который в действительности соответствует конденсаторам на DIMM.
  3. Swap (или файл с отображением памяти). Если вы получите доступ к этому, произойдет ошибка страницы, и ядро ​​приостанавливает процесс, пока он считывает данные в память (и, возможно, записывает другие данные на диск, чтобы освободить место). Затем ядро ​​обновляет таблицы страниц, превращая это в случай №2.
  4. Нулевая страница. Это новая выделенная страница, которая еще не используется. Когда это произойдет, ядро ​​найдет страницу физической памяти (возможно, заменив другой материал), заполните ее нулями (для обеспечения безопасности), а затем это случай №2.

Прозрачные огромные страницы делают больше дел. Вероятно, есть несколько менее важных, о которых я тоже забыл …

Во всяком случае, мой 64-битный чип имеет 48-битный размер виртуального адреса. Я не уверен, что разделяет ядро, но даже если его половина – это 47 бит пространства, что намного превышает 36-битный размер физического адреса. И 131 072 гигабайта ОЗУ слишком дорого … (И, помните, когда он становится дешевле, в 64-х бит осталось 64, будущие процессоры, вероятно, просто позволят им больше).

Аппаратные резервирования занимают небольшой объем оперативной памяти, особенно если у вас есть встроенная видеокарта, использующая некоторую ОЗУ для собственных операций. Это происходит со всеми операционными системами.

  • Ли Linux сохраняет программы в ОЗУ после 1 исполнения?
  • Рандомизировать или обрезать память приложения
  • Мониторинг ввода / вывода памяти GPU
  • использование tstime и памяти
  • Безопасный просмотр зашифрованного файла
  • Суммировать использование памяти во всех процессах программы?
  • Что такое максимальная оперативная память, поддерживаемая Linux?
  • Каков самый низкий уровень, который я вижу, как работает моя система?
  • Почему в моей системе отображается только 3,2 гигабайта ОЗУ, когда у меня определенно есть 4,0 ГБ
  • Является ли таблица файлов в файловой системе или в памяти?
  • Выделение защищенной памяти
  • Interesting Posts

    Как настроить одно задание на точное время с помощью anacron без потери конфигурации при следующем обновлении?

    CentOS 7 cpupower не устанавливает максимальную мощность процессора

    Являются ли прошивка маршрутизатора на основе Linux?

    Как установить тактильные звуковые клавиши на мою широту?

    Как запустить приложение с другой темой Gtk + 2?

    Рейд HP B120i показывает два диска в CentOS7

    Найдите новый файл и посмотрите, старше ли файл «X»

    После обновления системы Debian X не запускается при загрузке

    Wget: ошибка сегментации (сбрасывание ядра)

    не удалось выполнить резервное копирование данных с планшета Android на ноутбук с использованием tar!

    Как я могу сделать свой USB-ключ Bluetooth? (Не удается запустить устройство hci0: Время ожидания подключения (110))

    Vim: скопируйте, затем вставьте несколько раз

    выражение поиска grep и файл переименования

    Xrandr не масштабирует экран под Cygwin / X и Xming

    Найти все абсолютные ссылки в дереве каталогов

    Linux и Unix - лучшая ОС в мире.