Приостановка процессов
При снижении степени многозадачности один или несколько резидентных в настоящее время процессов должны быть приостановлены (выгружены во вторичную память). В [CARR84] перечислены шесть возможностей.
· Процесс с наименьшим приоритетом. Так реализована стратегия планировщика, не имеющая отношения к вопросам производительности.
· Процесс, вызывающий прерывания. Данный выбор основан на большой вероятности того, что у процесса, генерирующего прерывания из-за отсутствия страницы, рабочее множество не резидентно, и суммарная производительность системы не пострадает при приостановке данного процесса.Кроме того, при таком выборе блокируется процесс, который и так практически все время находится в заблокированном состоянии, так что его приостановка приводит к снижению накладных расходов, связанных с замещением страниц и операциями ввода-вывода.
· Последний активированный процесс. Маловероятно, что у этогопроцесса рабочее множество резидентно.
· Процесс с минимальным резидентным множеством. Этот выбор минимизирует будущие затраты на загрузку данного процесса. К сожалению, таковыми являются процессы с высокой степенью локализации.
· Наибольший процесс. При этом выборе мы освобождаем большое количество кадров перегруженной процессами памяти, снижая тем самым количество процессов, которые должны быть деактивированы.
· Процесс с максимальным остаточным окном исполнения.В большинстве схем планирования процесс может выполняться только определенное количество квантов времени до прерывания и перемещенияего в конец очереди активных процессов. Данный выбор приближается к стратегии планирования, предоставляющей преимущество процессам с наименьшим временем работы.
Как и во многих других областях разработки операционных систем, выбор стратегии основан на здравом смысле и зависит от множества факторов, как, например, характеристик выполняемых в системе программ.
8.3. УПРАВЛЕНИЕ ПАМЯТЬЮ B UNIX
Система управления памятью в UNIX варьируется в разных операционных системах. Ранние версии UNIX использовали переменное распределение памяти без применения виртуальной памяти. Современные реализации, включая SVR4 и Solaris 2-х, используют страничную виртуальную память.
В SVR4 и Solaris, по сути, имеются две раздельные схемы управления памятью. Страничная система обеспечивает реализацию возможностей виртуальной памяти, распределяя кадры основной памяти среди процессов, а также среди буферов диска. Хотя описанная схема эффективно работает с пользовательскими процессами и дисковым вводом-выводом, страничная виртуальная память мало приспособлена для управления памятью ядра. Для этой цели используется распределение памяти ядра. Рассмотрим оба механизма.
Страничная система
Структуры данных
Для страничной виртуальной памяти UNIX использует ряд структур данных, которые (с минимальной коррекцией) являются машинно-независимыми (см. рис. 8.31 и табл. 8.6).
• Страница таблиц. Обычно для каждого процесса используется одна таблица страниц, в которой каждой странице виртуальной памяти процесса соответствует одна запись.
• Дескриптор дискового блока. В этой таблице каждой странице процесса соответствует запись, описывающая дисковую копию этой страницы.
• Таблица кадров. Описывает каждый кадрреальной памяти; таблица проиндексирована номерами кадров.
• Таблица использования свопинга. Для каждого устройства свопинга имеется своя таблица, в которой для каждой страницы на этом устройстве имеется своя запись.
Большинство полей, приведенных в табл. 8.6, не требуют пояснений. Поле возраста в записи таблицы страниц указывает, как давно программа не обращалась к этому кадру. Размер и частота обновления этого поля зависят от конкретной реализации. Таким образом, нет универсального использования операционной системой UNIX этого поля при реализации стратегии замещения страниц.
Наличие поля типа памяти в дескрипторе дискового блока необходимо по следующей причине: когда выполнимый файл используется для создания нового процесса, в реальную память может быть загружена только часть кода и данных. Позже, при возникновении прерывания из-за отсутствия страницы, в память загружаются новые порции кода или данных. Страницы виртуальной памяти создаются и связываются с определенными положениями на устройстве свопинга только в момент первоначальной загрузки. В этот момент операционная система решает, следует ли очистить (установить равными 0) ячейки кадра страницы перед первой загрузкой блока кода или данных.
Замещение страниц
Для замещения страниц используется таблица кадров. Для создания списков в этой таблице применяются несколько указателей. Все доступные кадры объединены в один список свободных кадров, в которых могут размещаться страницы. Когда количество доступных страниц становится ниже некоторого порогового значения, ядро в качестве компенсации отдает ряд страниц загруженных процессов.
Алгоритм замещения страниц, использованный в SVR4, представляет собой усовершенствованный часовой алгоритм (см. рис. 8.16), известный под названием часового алгоритма с двумя стрелками (рис. 8.22). Этот алгоритм использует бит обращений из записи таблицы страниц для каждой из страниц памяти, которая может быть выгружена из основной памяти (т.е. не заблокирована). Этот бит устанавливается равным 0 при первоначальной загрузке страницы, и равным 1 — при обращении кней для чтения или записи. Перед ний указатель проходит по страницам, содержащимся в списке пригодных для выгрузки страниц, и устанавливает бит обращений каждойиз них равным 0. Несколько позже по тем же страницам проходит задний указатель и проверяет бит обращений. Если он равен 1, значит, к данной странице было обращение между проверками ее передним и задним указателями, и такая страница игнорируется. Страница же бит обращений которой остался равен 0, переносится в список выгружаемых страниц.
Работа алгоритма определяется двумя параметрами.
• Частота сканирования. Частота, с которой указатели сканируют список страниц (в кадрах в секунду).
• Охват. Интервал между передним и задним указателями.
Эти параметры в процессе загрузки операционной системы получают значения по умолчанию, основанные на количестве физической памяти. Частота сканирования в процессе работы может изменяться, чтобы соответствовать изменяющимся условиям работы системы. Параметр линейно изменяется от минимального значения до максимального, определенных при настройке системы, с изменением количества свободной памяти от максимального до минимального — иными словами, чем меньше свободной памяти в системе, чем чаще выполняется сканирование. Охват определяет интервал между указателями и вместе с частотой сканирования определяет промежуток времени, в течение которого к странице должно произойти обращение, чтобы она оставалась в основной памяти.
Дата добавления: 2016-06-05; просмотров: 1527;