Анатомия программ в памяти

Анатомия программ в памяти

Каждый процесс в многозадачной ОС запускается внутри своей собственной «песочницы». Эта песочница называтся виртуальным адресным пространством, которая в 32-битном режиме всегда представляет собой блок памяти размером 4 ГБ. Эти виртуальные адреса отображаются на физическую память с помощью таблиц отображения страниц (page table), которые поддерживаются ядром ОС и обрабатываются процессором. Каждый процесс имеет свой набор страниц, но здесь есть один нюанс. Виртуальные адреса применяются ко всему ПО машины, а значит и к ядру ОС. Отсюда следует, что некоторая порция виртуального адресного пространства должна быть зарезервирована и для ядра.

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