Список свободных страниц - это набор страниц, из которого страницы извлекаются по запросу процессов. Управление распределением памяти между процессами основано на этом списке. Процессы берут память из него и возвращают ее обратно по завершении. Сканер страниц также возвращает память в список свободных страниц так, как это описано в лекции 7 в разделе "Алгоритм пейджинга".
Каждый раз, когда процесс запрашивает память, происходит так называемая страничная ошибка2) (page fault). Страничные ошибки делятся на три типа:
О том, как реализовано управление списком свободных страниц в Solaris, говорится в лекции 17. Сейчас нам важны некоторые основные моменты, связанные с производительностью процессов.
После загрузки системы вся виртуальная память распределяется между процессами постранично. Кроме того, в ядре инициализируется специальная таблица, в которой хранятся состояния страниц. Несколько мегабайт памяти ядро резервирует для себя, а оставшееся пространство отходит списку свободных страниц. В какой-то момент, когда процесс запрашивает память, из списка свободных страниц извлекается одна страница, которая и поступает в распоряжение процесса. Такая схема, при которой память выдается по принципу "когда потребуется", называется выделением страниц по запросу (demand paging).
Если список свободных страниц уменьшается до размера lotsfree (см. лекцию 17), ядро запускает специальный поток внутри себя - сканер страниц.