← Дневник разработки

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

Стеклянные страницы памяти направляются в слот

В Guseva OS проверили, как ядро выделяет память по запросу и изолирует компонент при недопустимом обращении.

Представьте, что компонент впервые обращается к странице, адрес которой ядро уже зарезервировало. За этим адресом ещё нет физической памяти. Процессор передаёт управление ядру, и то проверяет, разрешён ли доступ и хватает ли компоненту квоты. Если условия выполнены, ядро выделяет страницу, и компонент продолжает работу. Так можно резервировать адреса и расходовать физическую память по мере необходимости.

Когда ядро останавливает компонент

Похожий сигнал процессора возникает, когда компонент обращается к защищённой области. В отдельных испытаниях QEMU проверили три случая: чтение защитной страницы стека, обращение к чужой странице и попытку выполнить код со страницы данных. В этих сценариях ядро остановило нарушивший правила компонент, а соседние компоненты продолжили работу.

Что проверили в Guseva OS

Отдельный прогон подтвердил, что при допустимом обращении ядро подставляет страницу с учётом квоты. Компонент прочитал ожидаемые данные, освободил страницу и завершился штатно. Эти результаты относятся к целевым сценариям QEMU.

Отчёты испытаний: защитная страница стека, чужая страница, запрет исполнения данных и выделение страницы по обращению.

Теги · Guseva OS · Ядро · Виртуальная память · Изоляция компонентов · QEMU