Вы путаете страницу с записью в таблице страниц:
- Таблица страниц состоит из записей таблицы страниц.
- Каждая запись таблицы страниц содержит адрес в физической памяти страницы.
- страница представляет собой фрагмент памяти размером 16 КБ.
Вы хотите отобразить 4 ГБ физической памяти на несколько страниц по 16 КБ.
Итак, вам нужно (4 * 10 ^ 6 / 16 * 10 ^ 3) = 250 страниц (адресов)
Каждый адрес хранится в записи таблицы страниц, которая представляет собой 32-битное целое число, состоящее из адреса в физической памяти страницы и некоторых битов модификатора/информации об этой странице. .
Каждому процессу требуется как минимум одна таблица страниц. Здесь он состоит из 250 записей таблицы страниц. Размер каждой записи в таблице страниц представляет собой 32-битное (4 байта) число (назовите его как хотите)
Таким образом, общий размер, необходимый для одного процесса:
250 * 4B = 1000 B = 1kB
Почему этот подход не используется на основе модели подкачки, используемой MMU x86:
Проблема с одноуровневым механизмом подкачки, как вы описываете, заключается в том, что каждому (независимо от того, насколько мал) процессу потребуется: 4 ГБ/16 КБ = 4 * 10 ^ 6 Б / 16 * 10 ^ 3 Б = 0,25 * 1000 = < strong>250 записей таблицы страниц
250 * 4 байта (32 бита на запись) = 1 КБ на процесс
Это не кажется большим, но здесь вы использовали страницы размером 16 КБ (например, большинство систем x86 используют страницы размером 4 КБ, поэтому вам потребуется 1 МБ для каждого процесса)
Вот почему x86 использует двухуровневый процесс подкачки, в котором каждый процесс имеет 1024 записи каталога страниц, и каждая из этих записей содержит адрес таблицы страниц (которая содержит 1024 записи таблицы страниц). Таким образом, минимальная выделенная память процесса становится: 4 байта (запись каталога страниц) + 1024 * 4 байта (1024 32-битных записи таблицы страниц). Каждая запись таблицы страниц указывает на физическую страницу размером 4 КБ в памяти.
1024 записи каталога страниц * 1024 записи таблицы страниц для каждого каталога * 4 КБ страницы = 4 ГБ адресуемой памяти
Виртуальный адрес состоит примерно из:
- Индекс записи каталога страниц
- Индекс записи в таблице страниц
- Смещение на странице 4kB
Это означает, что даже если вы увеличите размер одной страницы (тем самым уменьшив количество необходимых записей в таблице страниц), вам потребуется большее число для описания смещения.
27.10.2014