Чтобы дать процедурам виртуальной памяти более высокого уровня возможность инициализировать физическую память, предусмотрено два интерфейса, pmapjiero jjage() принимает физический адрес и заполняет страницу нулями, pmapjjopyjpage() принимает два физических адреса и копирует содержимое первой страницы во вторую. Поскольку обе процедуры принимают физические адреса, модулю pmap скорее всего придется сначала отобразить эти страницы в адресное пространство ядра, прежде чем он сможет получить к ним доступ.
В реализации PC есть пара глобальных виртуальных адресов ядра, зарезервированных для обнуления и копирования страниц, pmapzero _page() отображает указанный физический адрес в зарезервированный виртуальный адрес, вызывает bzero(), чтобы очистить страницу, а затем удаляет временное отображение с помощью единственного примитива отмены трансляции, используемой pmapremove(). Таким же образом pmap_сору_page() создает отображения для обоих физических адресов, использует bcopy() для копирования, а затем удаляет оба отображения.
- 15/11/2010 23:40 - Управление внутренними структурами данных
- 11/11/2010 20:28 - Изменение для отображений атрибутов доступа и резервирования
- 09/11/2010 09:04 - Операции, определенные пейджером
- 08/11/2010 13:50 - Выделение и освобождение отображения
- 05/11/2010 00:51 - Завершение процесса
- 04/11/2010 18:14 - Роль модуля pmap