> greparray=($(echo "hello world 15 42" | grep -Eo "[0-9]+ [0-9]+"))
> echo ${greparray[1]}
42
Ядро устанавливает таблицы страниц для каждого процесса. Преобразование виртуальных адресов в физические осуществляется блоком управления памятью (MMU )аппаратно. Это делается прозрачно для кода пользовательского режима. Пользовательский режим не изменяет таблицы страниц, и они видны только ядру.
Виртуальное адресное пространство процесса разделено на области с различными свойствами, :некоторые области доступны только для чтения -, некоторые для чтения -для записи, и, как правило, большинство виртуальных адресов вообще не имеют отображения. Нарушения прав доступа обрабатываются ядром. Например, когда процесс обращается к ячейке памяти, которая не имеет сопоставления с кадром физической памяти, возникает исключение. Это исключение (ловушка )обрабатывается кодом ядра, который может убить процесс, послать ему сигнал, или ядро может прозрачно создать сопоставление для страницы.
Прозрачное (для кода пользовательского режима )сопоставление страницы может происходить из-за того, что страница была заменена. В этом случае так называемый обработчик отказов страниц сопоставляет страницу со свободным кадром физической памяти и организует чтение страницы из пространства подкачки. Когда страница восстановлена, процесс планируется запустить снова, и процесс может продолжить выполнение, как будто ничего не произошло.