Как и в системе SVR4, ОС Solaris требует от клиентов подсистемы анонимной памяти резервировать пространство свопинга сразу, то есть при создании сегмента. Однако в Solaris доступное пространство равняется объему всех физических устройств свопинга плюс почти весь доступный объем физической памяти. При этом часть физической памяти всегда остается свободной с целью поддержания некоторого количества места для размещения структур ядра. Это позволяет системе Solaris работать с меньшим объемом пространства свопинга по сравнению с SVR4.
Резерв пространства свопинга в физической памяти используется только при исчерпании всего возможного пространства на устройствах свопинга. Область памяти, используемая для свопинга, является «зашитой» (wired down) (сделанной нестраничной). При выполнении операции освобождения пространства свопинга система в первую очередь делает все, чтобы сохранить резервы в оперативной памяти. То есть основная память машины используется для свопинга в последнюю очередь и освобождается при первой же возможности.
После резервирования области памяти система может создавать анонимные страницы, не обладающие физическими резервными копиями. Имена для таких страниц предоставляются файловой системой swapfs (см. следующий раздел). Так как область памяти для свопинга не является страничной, такие анонимные страницы не могут быть выгружены, и, следовательно, не требуют физического пространства свопинга для хранения.
Управление виртуальным свопингом
При создании процессом анонимной страницы в первую очередь необходимо выделить для нее пространство свопинга. В отличие от резервирования, при размещении происходит присвоение странице определенного адреса в области свопинга, или назначение имени. В SVR4 такие адреса всегда указывают на физическое устройство свопинга. Позиция структуры anon массива anon устройства равна позиции страницы в устройстве свопинга. Таким образом, адрес структуры anon выступает в качестве имени страницы. Для присвоения странице адреса применяется процедура уровня свопинга swap_alloc(), результатом выполнения которой является указатель на соответствующую структуру anon.
В ОС Solaris операция swap_alloc() производит присвоение виртуального адреса свопинга страницы. Она управляет специальным системным файлом и выделяет необходимое пространство свопинга из него. Имя виртуальной страницы свопинга описывается vnode «виртуального» файла и смещением страницы внутри этого файла. Вместо использования набора массивов anon (по одному на каждое устройство) операция выделяет структуры anon динамически. Она сохраняет имя страницы (в виде пары ) в структуре anon вместо вычисления его из адреса структуры. Следует отметить, что в этой точке выполнения процедура еще не произвела выделения и ограничения какого-либо физического пространства свопинга для страницы.
Файловая система swafs поддерживает выделение пространства свопинга в основной памяти.
При проведении операции выгрузки страницы иногда возникает ситуация нехватки места в области свопинга на дисках. В этом случае система помещает страницу в область свопинга, располагаемую в памяти, не помечая такую страницу как чистую.
Опубликовал katy
June 20 2015 10:20:09 ·
0 Комментариев ·
2186 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.