Предположим, на 32-битной ОС у нас есть 4 ГБ доступного виртуального адресного пространства. Таким образом, это означает, что нам нужно отобразить 2 ^ 32 = 4 294 967 296 адресов.

Если вы вычисляете размер для хранения всех 4 294 967 296 адресов в адресном пространстве и если каждый из них имеет размер 4 байта, он должен занять:

Размер памяти для всех адресов = 4 294 967 296 адресов x 4 байта

Мой вопрос:

Может ли одна таблица страниц хранить столько адресов в своих записях? Если это так, то почему размер таблицы страниц будет только 4 МБ, как здесь ответили?

1 ответ1

1

Виртуальная память не входит в один байт. Минимальная единица памяти, которую вы можете выделить, поделиться, отобразить, поменять местами, заблокировать и т.д., Составляет страницу (обычно) 4096 байт.

Все адресное пространство (4 ГБ) делится на 1 млн. Таких страниц. Вот почему вся таблица содержит 1Mi записей по 4 байта каждая, что составляет ровно 4 МБ.

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