- •Архитектура ОС UNIX
- •Алгоритмы управления памятью
- •Свопинг
- •Управление пространством на устройстве выгрузки
- •Управление пространством на устройстве выгрузки
- •Управление пространством на устройстве выгрузки
- •Устройства выгрузки
- •Выгрузка процессов
- •Выгрузка процессов
- •Область данных с 2К-63К не будет выгружена, т.к. на устройстве выгрузки карта должна
- •Выгрузка с расширением (brk или естественное увеличение стека)
- •Загрузка (подкачка) процессов
- •Загрузка (подкачка) процессов
- •Выбор выгружаемого процесса
- •ПОДКАЧКА ПО ЗАПРОСУ
- •Структуры данных
- •Запись таблицы страниц
- •Записи таблицы страниц
- •Записи на дисковом блоке
- •pfdata
- •Таблица использования
- •Взаимосвязь структур
- •fork
- •Что должны уметь на зачете
- •Отображение файла на область. exec
- •ПОДСИСТЕМА УПРАВЛЕНИЯ ВВОДОМ-ВЫВОДОМ
Выгрузка с расширением (brk или естественное увеличение стека)
Если процесс испытывает потребность в дополнительной физической памяти и если эта потребность превышает доступные резервы памяти, ядро выполняет операцию выгрузки процесса с расширением его размера на устройстве выгрузки.
Загрузка (подкачка) процессов
Нулевой процесс (процесс подкачки) является единственным процессом, загружающим другие процессы в память с устройств выгрузки.
Процесс подкачки начинает работу по окончании инициализации системы. Он загружает процессы в память и, если ему не хватает места в памяти, выгружает оттуда некоторые из процессов, находящихся там. Если у процесса подкачки нет работы или же он не в состоянии выполнить свою
работу, процесс подкачки приостанавливается; ядро периодически возобновляет его выполнение
Таймер возобновляет работу процесса подкачки
Загрузка (подкачка) процессов
Процесс подкачки просматривает все процессы, находящиеся в состоянии "готовности к выполнению, будучи выгруженными", и выбирает из них один, который находится в этом состоянии дольше остальных.
Если имеется достаточно свободной памяти, процесс подкачки загружает выбранный процесс, выполняя операции в последовательности, обратной выгрузке процесса - выделяется физическая память, затем с устройства выгрузки считывается нужный процесс и освобождается место на устройстве
Выбор выгружаемого процесса
прекратившие свое существование процессы не подходят для выгрузки, поскольку они не занимают физическую память;
не могут быть выгружены процессы, заблокированные в памяти, например, выполняющие операции над областями;
ядро предпочитает выгружать приостановленные процессы, поскольку процессы, готовые к выполнению, имеют больше шансов быть вскоре выбранными на выполнение.
процесс подкачки производит выгрузку на основании приоритета, продолжительности нахождения в памяти и значения nice.
Решение о выгрузке процесса принимается ядром на основании его приоритета и продолжительности его пребывания в памяти!
ПОДКАЧКА ПО ЗАПРОСУ
В системах с подкачкой страниц отсутствуют ограничения на размер процесса, связанные с объемом доступной физической памяти. Например, в машинах с объемом физической памяти 1 и 2 Мбайта могут исполняться процессы размером 4 или 5 Мбайт.
Работа подсистемы замещения страниц распадается на две части: откачка редко используемых страниц на устройство выгрузки и обработка ошибок из-за отсутствия нужной страницы.
принцип "локальности" Деннинга - сформулировано понятие рабочего множества процесса как совокупности страниц, использованных процессом в последних n ссылках на адресное пространство памяти; число n называется окном рабочего множества
Структуры данных
Для поддержки функций управления памятью на машинном (низком) уровне и для реализации механизма замещения страниц ядро использует 4 основные струк туры данных:
записи таблицы страниц
дескрипторы дисковых блоков
таблицу содержимого страничных блоков (page frame data table - pfdata)
таблицу использования области подкачки
Запись таблицы страниц
Записи таблицы страниц
Установка бита доступности свидетельствует о правильности содержимого страницы памяти
Бит упоминания устанавливается в том случае, если процесс делает ссылку на страницу
Бит модификации - в том случае, если процесс скорректировал содержимое страницы.
Установка бита копирования при записи, произво димая во время выполнения системной функции fork, свидетельствует о том, что ядру в случае, когда процесс корректирует содержимое страницы, следует соз давать ее новую копию.
"возраст" страницы говорит о продолжительности ее пребывания в составе рабочего множества процесса.
Записи на дисковом блоке
Каждая запись таблицы страниц связана с дескриптором дискового блока, описывающим дисковую копию виртуальной страницы.
Поэтому процессы, использующие разделяемую область, обращаются к общим записям таблицы страниц и к одним и тем же дескрипторам дисковых блоков.
Содержимое виртуальной страницы располагается либо в отдельном блоке на устройстве выгрузки, либо в исполняемом файле, либо вообще отсутствует на устройстве выгрузки.
Если страница находится на устройстве выгрузки, в дескрипторе дискового блока содержится логический номер устройства и номер блока, по которым можно отыскать содержимое страницы.
Если страница содержится в исполняемом файле, в дескрипторе дискового блока располагается номер логического блока в файле с содержимым страницы; ядро может быстро преобразовать этот номер в адрес на диске.