Оставшиеся процедуры интерфейса pmap используются для управления и синхронизации внутренних структур данных, pmap jpinit() создает экземпляр машинно-зависимой структуры pmap. Она используется процедурами vmspaceJork() и vmspaceexec() при создании новых адресных пространств в ходе fork или exec, pmap release() освобождает ресурсы pmap. Она используется процедурой vmspace Jree() при очистке vmspace после завершения процесса.
Управление памятью
Инициализация физических страниц
Чтобы дать процедурам виртуальной памяти более высокого уровня возможность инициализировать физическую память, предусмотрено два интерфейса, pmapjiero jjage() принимает физический адрес и заполняет страницу нулями, pmapjjopyjpage() принимает два физических адреса и копирует содержимое первой страницы во вторую. Поскольку обе процедуры принимают физические адреса, модулю pmap скорее всего придется сначала отобразить эти страницы в адресное пространство ядра, прежде чем он сможет получить к ним доступ.
Управление информацией об использовании страницы
Машинно-независимому коду управления страницами нужно иметь возможность получать от нижележащего оборудования основную информацию об использовании и изменениях страниц. Модуль pmap способствует сбору этой информации, не требуя от машинно-независимого кода понимания деталей таблиц отображения, предоставляя набор интерфейсов для запроса и сбрасывания битов ссылок и модификации. Демон выгрузки может вызвать vm_page_test_dirty() для определения того, грязная ли страница.
Еще статьи...
Страница 1 из 19
Управление памятью