как пользователь получает доступ к таблицам страниц

как пользователь получает доступ к таблицам страниц

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

решение1

Ядро устанавливает таблицы страниц для каждого процесса. Сопоставление виртуальных адресов с физическими выполняется блоком управления памятью (MMU) в оборудовании. Это делается прозрачно для кода пользовательского режима. Пользовательский режим не изменяет таблицы страниц, и они видны только ядру.

Виртуальное адресное пространство процесса разделено на области с различными свойствами: некоторые области доступны только для чтения, некоторые — для чтения и записи, и, как правило, большинство виртуальных адресов вообще не имеют сопоставления. Нарушения доступа обрабатываются ядром. Например, когда процесс обращается к области памяти, которая не имеет сопоставления с физическим кадром памяти, возникает исключение. Это исключение (ловушка) обрабатывается кодом ядра, который может завершить процесс, отправить ему сигнал, или ядро ​​может прозрачно создать сопоставление для страницы.

Прозрачно (для кода пользовательского режима) отображение страницы может произойти, поскольку страница была выгружена. В этом случае так называемый обработчик ошибок страницы отображает страницу в свободный физический кадр ОЗУ и организует чтение страницы из пространства подкачки. Когда страница восстановлена, процесс планируется запустить снова, и процесс может продолжить выполнение, как будто ничего не произошло.

Связанный контент