Где находится таблица страниц? - PullRequest
0 голосов
/ 16 июня 2019

Я изучал страницы подкачки и таблицы страниц.Я не вижу, чтобы понять, где находятся таблицы страниц.В одном из ответов от обмена стека (https://unix.stackexchange.com/questions/487052/where-is-page-table-stored-in-linux), сказано, что таблицы страниц находятся в адресном пространстве ядра, которое находится в виртуальной памяти (из того, что я понял). Однако в слайдах лекции из Университета Иллинойса (* 1003)*https://courses.engr.illinois.edu/cs241/sp2014/lecture/09-VirtualMemory_II_sol.pdf), таблицы страниц, похоже, находятся в ОЗУ, то есть в физической памяти. Кто-нибудь может сказать мне ясно, где хранятся таблицы страниц?

Заранее спасибо.

1 Ответ

0 голосов
/ 16 июня 2019

Ответ на этот вопрос слишком широкий, и я думаю, что он относится к обмену стеками суперпользователя.

В системах x86 таблицы страниц - это структуры, используемые ЦП, но они слишком велики, чтобыудерживайте в регистрах, чтобы они сохранялись в оперативной памяти.

У любого процесса есть карта памяти, в которой есть две большие зоны: пространство пользователя и пространство ядра.Пространство ядра - это одно и то же пространство для всего процесса.Пространство пользователя является частным для этого процесса.В 32-битных системах Linux на базе X86 любой логический адрес, равный или превышающий 0xC0000000, принадлежит ядру.Ниже этого адреса находится пространство пользователя.

Таблица страниц процесса находится в пространстве ядра.Ядро может иметь несколько таблиц страниц в оперативной памяти, но только одна таблица активных страниц.В процессорах x86 это таблица страниц, указанная регистром CR3.

Более подробное объяснение того, как это работает, здесь: https://stackoverflow.com/a/20792205/3011009

...