Почему 64-битные операционные системы используют для адресации только 48-битные адреса


Адрес, используемый в программе, то есть значение указателя, это так называемый "виртуальный адрес". Процессор содержит в себе небольшой объём сверхбыстрой ассоциативной памяти, в котором содержится преобразование нескольких (часто 64) виртуальных адресов страниц в его физические адреса. Так как 64 строк таблицы явно недостаточно для реальных задач, в x86 архитектурах используются таблицы страниц, размещённые в основной памяти. Каждая таблица страниц сама является страницей и состоит из записей таблицы страниц. Так как число записей в одной таблице ограничено и зависит от размера записи и размера страницы, используется многоуровневая организация таблиц, часто 2 или 3 уровня, иногда даже 4 уровня (для 64-х разрядных архитектур).

Современные реализации архитектуры x86-64 используют 48 битные физические адреса (с возможностью расширения до 52 бит в будущем), позволяя адресовать до 256 TB основной памяти. Данный объём в настоящее время считается избыточным для реальных систем, а увеличение разрядности адресов приведёт к раздуванию таблиц страниц и, соответственно, увеличению количества их уровней.

Библиографический список



Найдите ошибки в своем C, C++, C# и Java коде

Предлагаем попробовать проверить код вашего проекта с помощью анализатора кода PVS-Studio. Одна найденная в нём ошибка скажет вам о пользе методологии статического анализа кода больше, чем десяток статей.

goto PVS-Studio;



Найденные ошибки

Проверено проектов
346
Собрано ошибок
13 188

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;