Что делает ядро, когда программе нужна память

В Guseva OS проверили, как ядро выделяет память по запросу и изолирует компонент при недопустимом обращении.
Представьте, что компонент впервые обращается к странице, адрес которой ядро уже зарезервировало. За этим адресом ещё нет физической памяти. Процессор передаёт управление ядру, и то проверяет, разрешён ли доступ и хватает ли компоненту квоты. Если условия выполнены, ядро выделяет страницу, и компонент продолжает работу. Так можно резервировать адреса и расходовать физическую память по мере необходимости.
Когда ядро останавливает компонент
Похожий сигнал процессора возникает, когда компонент обращается к защищённой области. В отдельных испытаниях QEMU проверили три случая: чтение защитной страницы стека, обращение к чужой странице и попытку выполнить код со страницы данных. В этих сценариях ядро остановило нарушивший правила компонент, а соседние компоненты продолжили работу.
Что проверили в Guseva OS
Отдельный прогон подтвердил, что при допустимом обращении ядро подставляет страницу с учётом квоты. Компонент прочитал ожидаемые данные, освободил страницу и завершился штатно. Эти результаты относятся к целевым сценариям QEMU.
Отчёты испытаний: защитная страница стека, чужая страница, запрет исполнения данных и выделение страницы по обращению.
Теги · Guseva OS · Ядро · Виртуальная память · Изоляция компонентов · QEMU