Как многоуровневые таблицы страниц действительно экономят место - PullRequest
0 голосов
/ 20 января 2020

Я пытался провести исследование того, почему многоуровневые таблицы страниц экономят место, и я думаю, что я немного запутался в том, как работает сама таблица страниц. Я нашел следующее из Cornell :

В таблице страниц требуется по одной записи на страницу. Предполагая 4 ГБ (2 ^ 32 байта) виртуального и физического адресного пространства и размер страницы 4 КБ (2 ^ 12 байт), мы видим, что адресное пространство 2 ^ 32 байта должно быть разделено на 2 ^ 20 страниц.

Насколько я понимаю, каждый процесс имеет свою собственную таблицу страниц. Означает ли это, что каждый процесс имеет 4 ГБ виртуального адресного пространства? Какой смысл виртуального адресного пространства быть таким огромным? Почему бы не выделить виртуальные страницы по мере необходимости? Это потому, что ОС хочет, чтобы все возможные адреса, которые могут быть сделаны в размере слова, отображались на виртуальную страницу? Почему бы просто не запретить программе разыменовывать любой виртуальный номер страницы, который не является допустимым индексом для таблицы страниц?

Я прочитал, что одним из преимуществ многоуровневой таблицы страниц является то, что она экономит пространство за счет нет записей таблицы страниц для виртуальных страниц, которые не используются. См. Ниже Carneg ie Mellon:

enter image description here

Но почему бы просто не иметь одноуровневую таблицу страниц с непрерывными записями - зачем процессу PTE 1, 2, а затем перейти к 8? Зачем это разрешать? Тем не менее, почему существуют все последние, неиспользованные PTE? Почему бы не сократить страницу таблицы короткими?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...