
как будет происходить трансляция адреса в пользовательском режиме? если у пользователя есть отдельная таблица страниц, то где они хранятся? Более того, как пользователь будет получать доступ к таблицам страниц, хранящимся в адресном пространстве ядра в системе с аппаратным механизмом обхода таблицы страниц?
решение1
Ядро устанавливает таблицы страниц для каждого процесса. Сопоставление виртуальных адресов с физическими выполняется блоком управления памятью (MMU) в оборудовании. Это делается прозрачно для кода пользовательского режима. Пользовательский режим не изменяет таблицы страниц, и они видны только ядру.
Виртуальное адресное пространство процесса разделено на области с различными свойствами: некоторые области доступны только для чтения, некоторые — для чтения и записи, и, как правило, большинство виртуальных адресов вообще не имеют сопоставления. Нарушения доступа обрабатываются ядром. Например, когда процесс обращается к области памяти, которая не имеет сопоставления с физическим кадром памяти, возникает исключение. Это исключение (ловушка) обрабатывается кодом ядра, который может завершить процесс, отправить ему сигнал, или ядро может прозрачно создать сопоставление для страницы.
Прозрачно (для кода пользовательского режима) отображение страницы может произойти, поскольку страница была выгружена. В этом случае так называемый обработчик ошибок страницы отображает страницу в свободный физический кадр ОЗУ и организует чтение страницы из пространства подкачки. Когда страница восстановлена, процесс планируется запустить снова, и процесс может продолжить выполнение, как будто ничего не произошло.