Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОперационныеСистемы, общие понятия.docx
Скачиваний:
140
Добавлен:
08.02.2015
Размер:
366.4 Кб
Скачать

Управление памятью в ос unix на основе свопинга (1-2)

Большинство UNIX – систем для управления памятью реализуют подход свопинга (не требуется, чтобы программа оставалась в оперативно памяти до момента завершения).

Перемещением данных между памятью и диском управляет верхний уровень планировщика, называемый swapper (процесс с идентификатором 0).

Выгрузка данных из памяти на диск инициируется, когда у ядра кончается свободная память из-за одного из следующих событий:

  1. fork требуется память для процесса – сына.

  2. brk собирается расширить сегмент данных.

  3. Динамическому сегменту требуется дополнительная память.

  4. Когда наступает время запустить процесс, долго находящийся на диске, часто бывает необходимо удалить из памяти другой процесс, чтобы освободить место для запускаемого процесса.

Выбирая «жертву», т.е. процесс, который надо выгрузить из памяти, swapper рассматривает блокированные процессы. Если они нашлись, то из них выбирается процесс с наивысшим значением суммы приоритета и времени пребывания в памяти.

Если блокированных процессов нет, то на основе этого критерия выбирается готовый процесс.

Каждые несколько секунд swapper исследует список выгруженных процессов, проверяя, не готов ли какой-нибудь из них к работе. Если процессы в состоянии готовности обнаруживаются, то из них выбирается процесс, дольше всех находящийся на диске.

Затем swapper проверяет, будет ли лёгкий свопинг или тяжелый.

(Объяснить, в каком случае какой свопинг и что нужно освободить в памяти)

  • Лёгкий свопинг не требует дополнительного высвобождения памяти.

  • Тяжелый свопинг – это свопинг, при котором для загрузки в память выгруженного на диск процесса, из неё требуется удалить один или несколько других процессов.

Всё это повторяется до выполнения одного из условий:

  1. На диске нет процессов, готовых к работе.

  2. В памяти не осталось места для новых процессов.

Чтобы не терять большую часть производительности системы на свопинг, ни один процесс не выгружается на диск, если он находится в памяти менее 2-х секунд.

Свободное место в памяти и на диске учитывается при помощи связанного списка свободных блоков. Когда требуется свободное пространство в памяти или на диске, из списка выбирается первое подходящее. После этого, в список возвращается остаток от свободного пространства.

Управление памятью в ос unix на основе страничной подкачки. (2-2)

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

Суть этого подхода заключается в следующем: чтобы работать, процессу не нужно целиком находиться в памяти. Всё, что действительно требуется – контекст процесса и таблица страниц. Если они загружены, то процесс считается находящимся в памяти и может быть запущен планировщик. Страницы с процедурным сегментом, сегментом данных, динамическим сегментов загружаются в память динамически, по мере обращения к ним. Страничная подкачка реализуется частично своппером (PID = 0), частично новым процессом, называемым страничным демоном (PID = 2).

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

Оперативная память в Unix делится на 3 части: первые две – ядро ОС и карта памяти – фиксированы, т.е. не выгружаются из памяти. Остальная память делится на страницы, каждая из которых может содержать страницы процедурного сегмента, сегмента данных и динамического сегмента того или иного процесса, или находится в списке свободных страниц.

Карта памяти содержит информацию о содержимом страниц. Для каждой страницы в карте памяти есть запись фиксированной длины:

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

  • Следующие три блока используются, когда страница содержит информацию. У каждой страницы в оперативной памяти есть фиксированное место хранения на диске, в которое она помещается, когда выгружается из памяти.

  • Следующие три поля содержат ссылку на запись в таблице процессов, тип хранящегося в таблице сегмента и смещение в сегменте, т.е. номер страницы в сегменте.

  • Последнее поле содержит флаг, необходимы для алгоритма замещения (часов).

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

Если список свободных страниц пуст, выполнение процесса приостанавливается до тех пор, пока страничный демон не освободит необходимое количество страниц.