Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix лекции / lection7.ppt
Скачиваний:
12
Добавлен:
20.04.2015
Размер:
339.97 Кб
Скачать

Архитектура ОС UNIX

Управление памятью. Управление вводом-выводом.

Алгоритмы управления памятью

Процесс может выполняться, если он хотя бы частично присутствует в основной памяти; ЦП не может исполнять процесс, полностью выгруженный во внешнюю память.

swaping. Процессы переносятся между основной памятью и устройством выгрузки (устройством внешней памяти) целиком и отдельные независимые части процесса не могут быть объектами перемещения

demand paging (подкачка по обращению), в соответствии с которой основная память обменивается с внешней не процессами, а страницами памяти;

Свопинг

1.управление пространством на устройстве выгрузки

2.выгрузка процессов из основной памяти

3.подкачка процессов в основную память

Управление пространством на устройстве выгрузки

Ядро выделяет на устройстве выгрузки непрерывное пространство, не беря во внимание возможную фрагментацию.

Информация о свободном пространстве на устройстве выгрузки собирается в таблицу, именуемую "карта памяти устройства"

Выделение памяти под 100, 50 и 100 единиц ресурса.

Управление пространством на устройстве выгрузки

Освобождая ресурсы, ядро ищет для них соответствующее место в карте по адресу. При этом возможны три случая:

Освободившиеся ресурсы полностью закрывают пробел в карте памяти.

Освободившиеся ресурсы частично закрывают пробел в карте памяти.

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

Управление пространством на устройстве выгрузки

Освобождение 50 с адреса 101, а затем первых 100 ресурсов.

Освобождение 200 ресурсов с устройства выгрузки, затем освобождение 350 ресурсов с адреса 151.

Устройства выгрузки

В традиционной реализации системы Unix используется 1 устройство выгрузки.

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

Администраторы могут сами создавать и удалять такие устройства.

Выгрузка процессов

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

Произведено обращение к системной функции fork.

Произведено обращение к системной функции brk, увеличивающий размер процесса.

Размер процесса увеличился в результате естественного увеличения стека процесса.

Ядру нужно освободить в памяти место для подкачки ранее выгруженных процессов.

Выгрузка процессов

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

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

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

Область данных с 2К-63К не будет выгружена, т.к. на устройстве выгрузки карта должна заполняться непрерывно.

Загрузка процесса (включая пробел размером в 61К). Физические адреса не совпадают с первоначальными.

Соседние файлы в папке Unix лекции