1

У нас есть сервер CentOS 6 i686 (установленный предыдущим сотрудником) на блейд-сервере, который имеет 32 ГБ ОЗУ (4 ГБ х 8 слотов).
Полезная оперативная память составляет 14 ГБ.

У меня вопрос, почему он показывает 14 ГБ вместо 4 ГБ, что является максимальным для 32-битной ОС.
Могу ли я удалить оперативную память в 4 слота, чтобы иметь общую оперативную память 16 ГБ, тогда какой будет полезная память?

1 ответ1

1

вместо 4 ГБ, что максимум для 32-битной ОС.

Программы в Linux (и в большинстве операционных систем) не имеют дело с физической памятью напрямую - они работают с виртуальными адресами, которые переводятся аппаратными средствами в соответствии с отображением, которое настраивает ОС.

Таким образом, хотя 32-разрядные системы используют 32-разрядные указатели, и программа не может видеть более 4 ГБ виртуальной памяти одновременно, таблицы страниц (отображения виртуальной памяти в физическую) могут фактически представлять более длинные физические адреса, чем этот. Соответствующая функция x86 называется расширением физических адресов (также) и позволяет этим сопоставлениям разрешать 36-битные физические адреса.

Это означает, что вы можете одновременно сопоставлять несколько процессов разным виртуальным областям размером 4 ГБ в физическом пространстве до 64 ГБ. (То же самое происходит, если вы запускаете 32-битные процессы в 64-битной ОС.)


Аналогично, 16-разрядные системы могут использовать более 64 КБ физической памяти с помощью таких хитростей, как сегментация (которая на 8086 позволяла эффективно использовать 20-разрядные физические адреса) или переключение банков (что позволило переназначить одни и те же адреса памяти в разные физические области, например, C64 или MS-DOS XMS/EMS).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .