23 Управление ОП в ОС UNIX,
Windows NT, Swapping.
В UNIX
реализована сегментно-страничная модель памяти в ее традиционном виде. Наряду с
механизмом управления страницами используется и механизм свопинга, когда на
диск выталкиваются все страницы какого-либо процесса.
В UNIX
используется алгоритм перемещения виртуальных страниц процесса в физическую
память по запросу. Обычно при запуске процесса в физическую память помещается
только небольшая часть страниц, необходимая для старта процесса, а остальные
страницы загружаются при страничных сбоях. Очевидно, что начальный период
работы любого процесса порождает повышенную нагрузку на систему. Если при
поиске виртуального адреса в соответствующем дескрипторе обнаруживается признак
отсутствия этой страницы в физической памяти, то происходит страничное
прерывание, и ядро перемещает эту страницу с диска в физическую память.
Если в физической памяти недостаточно места для размещения
затребованной процессом страницы, то ОС выгружает некоторые страницы на диск.
Этот процесс осуществляется специальным процессом ядра, "выталкивателем
страниц", имеющем в
UNIX имя pageout. Для принятия решения о том,
какую виртуальную страницу нужно переместить на диск, процессу pageout нужно
иметь информацию о текущем состоянии физической памяти.
(*)- pageout не работает
(**)-pageout
работает 4 раза в сек.
(***)-pageout
вызывается по таймеру
(****)-в свопинг погружается весь
процесс
Пороговые
значения для действий
PAGEOUT
Замечания: если свободная
физическая память меньше порога 4, то в действие вступает процесс свопинга
(наз. Shed в Unix(5)).
Shed выбирает определенный
процесс, выгружает все его страницы на диск, корректирует таблицы. Данный
процесс исключается из претендентов на выполнение. Через интервал времени
Δt, процесс Shed вызывается снова. Если кол-во свободн. ОП >4, то
выгруженный процесс перекач-ся в физ. Память и ставится в очередь на
выполнение. Pageout использует
для вытеснения алгоритм NRU – вытесняется не
используемая последнее время страница. Для NRU
необходимо: 1)признак модификации, 2)признак доступа, т.е. бит изменения(модиф-и)
и бит обращения.
Pageout периодически очищает эти признаки у страниц, которые заняты.
При разработке
структуры Windows NT была в значительной степени использована концепция
микроядра. В соответствии с этой идеей ОС разделена на несколько подсистем,
каждая из которых выполняет отдельный набор сервисных функций - например,
сервис памяти, сервис по созданию процессов, или сервис по планированию
процессов.
Структурно Windows
NT может быть представлена в виде двух частей: часть операционной системы,
работающая в режиме пользователя, и часть операционной системы, работающая в
режиме ядра. Часть Windows NT, работающая в режиме ядра, называется
executive - исполнительной частью. Она включает ряд компонент, которые
управляют виртуальной памятью.
Серверы Windows
NT выполняются в отдельном процессе, память которого отделена от других
процессов системой управления виртуальной памятью NT executive. Так как
подсистемы автоматически не могут совместно использовать память, они общаются
друг с другом посредством посылки сообщений. Ядро Windows NT работает в
привилегированном режиме и никогда не удаляется из памяти.
Свопинг
применяется в "предаварийных" ситуациях, когда размер свободной
оперативной памяти уменьшается до некоторого заданного порога, так что работа
всей системы очень затрудняется.
Необходимым
условием для выполнения задачи является загрузка ее в оперативную память, объем
которой ограничен. В этих условиях был предложен метод организации
вычислительного процесса, называемый свопингом. В соответствии с этим
методом некоторые процессы (обычно находящиеся в состоянии ожидания) временно
выгружаются на диск. Планировщик операционной системы не исключает их из своего
рассмотрения, и при наступлении условий активизации некоторого процесса,
находящегося в области свопинга на диске, этот процесс перемещается в
оперативную память. Если свободного места в оперативной памяти не хватает, то
выгружается другой процесс.
При свопинге,
в отличие от рассмотренных ранее методов реализации виртуальной памяти, процесс
перемещается между памятью и диском целиком, то есть в течение некоторого
времени процесс может полностью отсутствовать в оперативной памяти. Существуют
различные алгоритмы выбора процессов на загрузку и выгрузку, а также различные
способы выделения оперативной и дисковой памяти загружаемому процессу.