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

> greparray=($(echo "hello world 15 42" | grep -Eo "[0-9]+ [0-9]+"))
> echo ${greparray[1]}
42
0
22.11.2019, 11:18
1 ответ

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

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

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

0
28.01.2020, 03:05

Теги

Похожие вопросы