Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
36
Добавлен:
30.04.2013
Размер:
16.33 Mб
Скачать

Механизм свопинга (Swapping)

Недостатки простых ОС с динамическим распределением памяти и сни­жение цен на долговременные носители привели к созданию систем с вы­грузкой процессов во внешнее адресное пространство, обычно размещаемое на жестком диске. Одним из таких первых исторически и наиболее простых механизмов является свопинг.

Он основан на полной выгрузке одного из процессов, приостановленных планировщиком из физической памяти в виртуальную. И, наоборот, для загрузки в физическую память системы всего процесса, возобновленного планировщиком для продолжения работы. В файл свопинга выгружается весь процесс целиком, за исключением данных, расположенных в управ­ляющих структурах. Преимуществом свопинга является простота управле­ния выгрузкой кодов процессов в файл свопинга. Однако такая "перегруз­ка" существенно ухудшает производительность ОС за счет потерь времени на выполнение операций по загрузке и выгрузке процессов.

Механизм пейджинга (Paging)

Этот механизм основан на частичной загрузке процесса из виртуальной

памяти в физическую в виде "страницы" (раgе) кода, который должен ис­полняться. После исполнения текущей страницы загружается следующая. Преимущества пейджинга заключаются в том, что практически все процессы всегда готовы к выполнению, так как исполняемая часть кодов

(страница) всегда находится в памяти. Однако, когда процессов в ОС ста­новится много, оценка для какого процесса какая часть кода должна испол­няться с последующей загрузкой нужной страницы, занимает много вре­мени работы ММ и PS. Поэтому накладные расходы в системе становятся значительными. Кроме того, построить идеальный ММ, который бы оптимально оценивал, какую страницу в какой момент времени для каждого процесса нео6ходимо загружать, практически невозможно.

На практике используются несколько алгоритмов, которые предназначены для решения этой про6лемы.

NR U

Первый из них называется NRU (Not Recently used). Для сбора статистики о том, какие страницы использовались, а какие нет, в современных ОС имеется два статусных бита. Бит R(Referenced - обращение) устанавливается при обращении к странице на запись/чтение. Бит М (Modified -

изменение) устанавливается при изменении кода страницы. Они модифицируются аппаратно при любом обращении к памяти. При возникновении страничного прерывания в ОС ММ проверяет все страницы и делит их на 4 категории:

  • не было обращений и изменений;

  • не 6ыло обращений, страница изменена;

  • было обращение, страница не изменена;

  • произошло о6ращение и страница изменена.

Алгоритм NRU просто удаляет страницы из первой категории, начиная с минимального номера. Если же этого недостаточно, то приходится делать вы6ор, из какой категории удалять страницы дальше. Очевидно, что коды программ не могут быть модифицированы , следовательно, далее внимание должно быть обращено на те страницы, которые были модифицированы, то есть содержат данные, а также на количество этих данных на странице.

FIFO

Другим, не менее используемым, алгоритмом является метод FIFO. В этом случае из списка страниц удаляется та, которая пришла раньше всех. При этом новая страница добавляется в список на последнее место.

Существует модификация этого алгоритма, которая называется "вторая

попытка" (second chance). При этому у кандидата на удаление проверяется

бит R. И если она равен 0, следовательно, к странице не обращались, и она тут же удаляется. Если этот бит равен 1, то страница перемещается в конец списка, а время ее ра6оты обнуляется. И т.д.

ММ в UNIX

На ранних стадиях развития как Unix, так и других операционных систем, работа ММ базировалась только на одном из механизмов выгрузки данных на диск, который определялся при инсталляции. В настоящее время Unix совмещает в себе оба тих процесса. При обращении к странице виртуальной памяти система проверяет та6лицу распределений страниц и определяет, находится ли страница в памяти. Если нет, то выдается сообщение об ошибке и страница переносится в память из области свопинга. Когда оши6ок становится слитком много, тог система начинает перекосить в о6ласть свопинга целые процессы, то есть пейджинг замещается на свопинг.

Для пользователя в описании ММ часто указывают на следующие возможности виртуальной памяти:

  • Адресное пространство, значительно большее, чем пространство физи- ческой памяти в системе;

  • Защита адресного пространства процесса от доступа к нему других процессов, гарантируя неперекрытие кодов процессов. Исключение составляет "разделенная" память, которая специально выделяется для использования несколькими процессами одновременно;

  • Процесс создания виртуальных файлов в виртуальной памяти, то есть выделение некоторой о6ласти памяти, непосредственно не связанной с процессом и организацией доступа к ней как к некоторому файлу;

  • Полный доступ к физической памяти гарантируется для обеспечения полного и корректного доступа всем процессам в ОС в управлении физическими ресурсами системы;

  • Обеспечение доступа к разделяемой памяти (Shared Memory) для обмена данными двум и более процессам.

Модули ММ

ММ состоит из следующих модулей (смотри рис. 3.6):

  • Архитектурно зависи1аый модуль (AIM) — контроллер физической памя­ти е интерфейсом к физической памяти.

  • Архитектурно независимый модуль (ASM), обеспечивающий работу ме­ханизмов пейджинга и свопинга. Этот модуль отвечает за удаление и за­грузку страниц.

  • Системный интерфейс (SCI) – обеспечивает ограниченный доступ процессам пользователя к памяти. Он позволяет процессам пользователя выделять и освобождать память, а также обеспечивает работу с вирту­альными файлами.

Зависимости. Управляющие потоки

В ОС Unix существует одно специфическое виртуальное устройство, называемое виртуальный диск (ramdisk); это устройство располагается в области основной памяти, и система трактует его как обычное устройстве долговременной памяти. Драйвер этого устройства использует ММ для

реализации этой задачи и таким образом образуется зависимость посредством потоков управления и потоков данных между драйверами файловой системы и ММ.

С другой стороны, существует логическая файловая система, которая

поддерживается сетевой файловой системой только как клиент этой систе­мы. NFS обеспечивает доступ к файлам, расположенным на других маши­нах так, как будто эти файлы представляют часть локальной файловой сис­темы. Для достижения этого один из модулей логической файловой системы использует сетевую подсистему.

ММ управляет физической памятью и принимает сообщения от аппаратуры, когда встречаются неполадки в ее работе, а это означает наличие двусторонних потоков данных и потока управления между контроллером памяти и физической памятью. Кроме уже упомянутого использования контроллером памяти файловой системы для свопинга и управления аппа­ратурой, используется вызов процесса планировщика для остановки процесса, так как VFS не может выполнить некоторый запрос к ресурсам мгновенно. Планировщик ожидает окончания выполнения запроса К аппаратуре и возобновляет этот процесс при получении подтверждения о вы­полнении этого запроса- Так как планирование распределения памяти про­исходит для каждого процесса и осуществляется при поддержке планировщика, то это означает наличие двунаправленных потоков данных меж­ду ММ и планировщиком.

Процесс пользователя во время работы может затребовать дополнительное пространство в памяти и после регистрации запроса в структурах данных, выделения этого места. Это означает наличие потока управляющей информации между ММ и системным интерфейсом для процесса пользователя. Кроме того, системный интерфейс ММ позволяет пользовательским процессам вызывать VFS для запоминания и восстановления данных.

В контроллере памяти не существует механизма регистрации и скрытых вызовов для процесса пользователя, следовательно, не существует управляющих потоков от VFS к процессам пользователя (возобновляемый пла­нировщиком процесс не требует потоков управления).