Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системное программное обеспечение. Учебник
.pdf
ГЛАВА 2.
Планирование и диспетчеризация
2.1. Планирование процессов
Операционная система контролирует следующую деятельность, связанную с процессами: создание и удаление процессов;
планирование процессов; синхронизация процессов; коммуникация процессов; разрешение тупиковых ситуаций. Система
управления процессами обеспечивает прохождение процесса
через компьютер. Процессы получают возможность выполнять
конкретную работу, когда в их распоряжение выделяются физические процессоры. В многопроцессорных системах распределение процессоров по процессам также представляет собой
сложную задачу, которую решает операционная система. Процедура решения проблем, связанных с определением того, когда следует выделять процессоры и каким именно процессам,
называется планированием загрузки процессоров. Иными словами, для распределения процессов между имеющимися ресурсами необходимо планирование процессов. Причем в качестве
ресурсов компьютера обычно рассматривают [9, 10, 11] время
работы процессора; адресное пространство основной памяти;
оборудование ввода-вывода; файлы, хранящиеся во внешней
памяти.
Итак, на протяжении существования процесса его выполнение может быть многократно прервано и продолжено. Для того
чтобы возобновить выполнение процесса, необходимо восстановить состояние его операционной среды. Состояние операционной среды отображается состоянием регистров и программного
счетчика, режимом работы процессора, указателями на открытые файлы, информацией о незавершенных операциях вводавывода, кодами ошибок выполняемых данным процессом системных вызовов и т.д. Эта информация, как уже упоминалось
выше, называется контекстом процесса.
Кроме того, операционной системе для реализации планирования процессов требуется дополнительная информация:
идентификатор процесса, состояние процесса, данные о степени привилегированности процесса, место нахождения ко-

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
62
дового сегмента и другая информация. В некоторых ОС (например, в ОС UNIX) информацию такого рода, используемую
ОС для планирования процессов, называют дескриптором про-
цесса.
Дескриптор процесса по сравнению с контекстом содержит
более оперативную информацию, которая должна быть легко
доступна подсистеме планирования процессов. Контекст процесса содержит менее актуальную информацию и используется операционной системой только после того, как принято решение о возобновлении прерванного процесса.
В зависимости от состояния процесса ему должен быть предоставлен тот или иной ресурс. Например, новый процесс необходимо разместить в основной памяти, следовательно, ему
необходимо выделить часть адресного пространства. Процессу
в состоянии «готов» должно быть предоставлено процессорное
время. Выполняемый процесс может потребовать оборудование ввода-вывода и доступ к файлу.
Одним из методов планирования процессов, ориентированных на эффективную загрузку ресурсов, является метод оче-
редей ресурсов. Новые процессы находятся во входной очереди, часто называемой очередью работ-заданий (job queue).
Входная очередь располагается во внешней памяти, во входной очереди процессы ожидают освобождения ресурса – адресного пространства основной памяти.
Готовые к выполнению процессы располагаются в основной памяти и связаны очередью готовых процессов, или ready
queue. Процессы в этой очереди ожидают освобождения ресурса процессорное время.
Процесс в состоянии ожидания завершения операции ввода-вывода находится в одной из очередей к оборудованию ввода-вывода, которая носит название devices queue.
Очереди процессов представляют собой дескрипторы отдельных процессов, объединенные в списки. Таким образом, каждый
дескриптор кроме всего прочего содержит по крайней мере один
указатель на другой дескриптор, соседствующий с ним в очереди. Такая организация очередей позволяет легко их переупорядочивать, включать и исключать процессы, переводить процессы
из одного состояния в другое.

63
Глава 2. Планирование и диспетчеризация
Программный код только тогда начнет выполняться, когда для него операционной системой будет создан процесс. Создать процесс – это значит:
• создать информационные структуры, описывающие дан-
ный процесс, то есть его дескриптор и контекст;
• включить дескриптор нового процесса в очередь готовых
процессов;
• загрузить кодовый сегмент процесса в оперативную память
или в область свопинга.
2.2. Цели и дисциплины планирования
Планирование процессов включает решение следующих задач:
1) определение момента времени для смены выполняемого
процесса;
2) выбор процесса на выполнение из очереди готовых про-
цессов;
3) переключение контекстов «старого» и «нового» процессов.
Первые две задачи решаются программными средствами,
а последняя в значительной степени аппаратно [1, 3, 6].
Цели планирования предполагают следующее.
Дисциплина планирования должна быть справедливой,
то есть ни один процесс не может пострадать от бесконечного
откладывания.
Дисциплина планирования должна стремиться к обслуживанию максимально возможного количества процессов в единицу времени.
Необходимо обеспечить максимальному числу пользователей приемлемое время ответа, то есть в худшем случае несколько секунд.
Данное задание должно выполняться приблизительно за
одно и то же время и с одной и той же стоимостью, независимо от нагрузки на систему, то есть дисциплина планирования
должна быть предсказуемой.
Следует минимизировать накладные расходы (накладные
расходы обычно рассматриваются как потеря ресурсов).
Требуется сбалансировать использование ресурсов (повышение коэффициента использования системных ресурсов).

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
64
Нужно иметь достаточно свободных ресурсов, чтобы обеспечить баланс между временем ответа и коэффициентом использования ресурсов.
Следует исключить бесконечное откладывание (учитывать
«старение» процесса, то есть с увеличением периода ресурса
приоритет его должен расти).
Нужно учитывать приоритеты (предпочтение отдавать процессам с более высокими приоритетами).
Оказывать предпочтение следует процессам, занимающим
ключевые ресурсы (чтобы быстрее освободить ключевой ресурс).
Необходимо создавать лучшие условия для выполнения
процессов, требующих менее частой подкачки страниц.
При увеличенной нагрузке постепенно, а не сразу, терять работоспособность. Например, не разрешая создавать новые процессы.
Различают следующие основные дисциплины планирова-
ния [1, 5].
Планирование с переключением и без переключения.
Если после предоставления центрального процессора в распоряжение некоторому процессу отобрать центральный процессор у этого процесса нельзя, то говорят о дисциплине планиро-
вания без переключения.
Если же центральный процессор можно отобрать, то говорят о дисциплине планирования с переключением.
Переключение необходимо в системах, в которых процессы высокого приоритета требуют немедленного внимания. Например, в системах реального времени пропажа одного важного сигнала прерывания может привести к катастрофе.
В интерактивных системах переключение позволяет гарантировать приемлемые времена ответа. В системах без переключения времена ответа более предсказуемы, так как задания
с высоким приоритетом не могут оттеснять уже ожидающие
задания.
Операционная система устанавливает часы или интервальный таймер с целью генерации сигнала прерывания в некоторый
момент времени в будущем. После прерывания центральный
процессор передается другому процессу. Если работает программа пользователя и происходит временное прерывание, то опера-

65
Глава 2. Планирование и диспетчеризация
ционная система включается при этом в работу и решает, какому
процессу следует предоставить далее центральный процессор.
Временные управления гарантируют приемлемые времена ответа для пользователей и предотвращают «зависание» системы
из-за зацикливания какой-либо программы пользователя.
Приоритеты могут присваиваться системой автоматически
или быть назначены извне. Приоритеты могут быть заслуженными или купленными. Они могут быть статическими и динамическими. Механизмы динамических приоритетов реагируют на изменения в ситуации. Эти схемы сложнее в реализации,
чем статические, и дороже, но эти издержки обычно оправдываются повышением реактивности системы. Существуют покупаемые приоритеты за счет более высокой платы за привилегии в обслуживании.
Планирование по сроку завершения. Принимаются все
меры, чтобы выполнение определенных заданий заканчивалось
к заранее обусловленному времени. Это сложно организовать
по следующим причинам [1, 2, 5]:
• пользователь должен заранее точно указать, какие ресурсы потребуются для его задания, а такую информацию можно
иметь лишь в редких случаях;
• система должна выполнить задания к сроку без снижения уровня обслуживания других пользователей;
• система должна распределять точно свои ресурсы, но могут поступать новые задания, и тогда сделать это станет трудно;
• если существует несколько заданий, которые нужно выполнить к определенному сроку, то при планировании могут
даже потребоваться специальные методы оптимизации;
• активное управление ресурсами может быть связано с увеличением накладных расходов.
Планирование по принципу FIFO (первый пришедший об-
служивается первым). Здесь более длинные и более короткие
процессы ждут друг друга. Это дисциплина планирования без
переключения, ее не рекомендуется применять при работе в интерактивном режиме, так как она не может гарантировать хорошие времена ответа. Этот принцип редко используется в качестве
основной дисциплины обслуживания, а чаще комбинируется
с другими схемами.

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
66
Циклическое планирование (RR). Диспетчеризация процессов осуществляется по принципу FIFO, однако каждый раз
процессу предоставляется ограниченное количество времени
центрального процессора, называемое временным квантом.
Эта дисциплина эффективна для работы с разделением времени, когда система должна гарантировать приемлемые времена ответа для всех интерактивных пользователей. Если квант
времени становится очень большим, то каждому процессу предоставляется столько времени, сколько ему требуется для завершения. При этом циклическое планирование, по сути,
вырождается в планирование по принципу FIFO. Если квант
становится очень маленьким, то накладные расходы на контексты переключения начинают играть доминирующую роль,
причем характеристики системы в конце концов настолько
ухудшаются, что с какого-то момента основное время затрачивается на переключение процессора (практически ничего не
остается на выполнение вычислений для пользователей) [1].
Величина оптимального кванта времени меняется от системы
к системе, причем меняется и в зависимости от нагрузок. Если
все процессы лимитируются центральным процессором, то вообще не имеет смысла переключаться с процесса на процесс,
так как затраты на переключение фактически вычитаются
из производительности вычислительной машины.
Планирование по принципу SJF. Это дисциплина планирования без переключения, согласно которой следующим для выполнения выбирается ожидающее задание (или процесс) с минимальным оценочным временем, остающимся до завершения.
Принцип SJF обеспечивает уменьшение среднего времени ожидания по сравнению с дисциплиной FIFO. Но времена
ожидания при этом колеблются в более широких пределах,
то есть менее предсказуемы. Механизм SJF выбирает для обслуживания задания таким образом, чтобы очередное задание
быстрее завершалось и покидало систему. Так как это дисциплина планирования без переключений, то не рекомендуется
ее применять (так же как и FIFO) в системах разделения времени, где нужно гарантировать время ответа.
Планирование по принципу SRT (по наименьшему остающемуся времени). Это аналог принципа SJF, но с переклю-

67
Глава 2. Планирование и диспетчеризация
чением, применяемым в системах с разделением времени.
По принципу SRT всегда выполняется процесс, имеющий минимальное оценочное время до завершения, причем с учетом
новых поступающих процессов.
Планирование по принципу HRN (по наибольшему относительному времени реакции). Это дисциплина планирования
без переключений, согласно которой приоритет каждого задания является функцией не только времени обслуживания этого задания, но также времени, затраченного заданием на ожидание обслуживания.
Динамические приоритеты при дисциплине HRN вычисляются по формуле [1]:
Приоритет = (время ожидания +
+ время обслуживания) / время обслуживания.
По этой формуле видно, что предпочтение будет оказываться более коротким заданиям. Более длинные задания, которые
довольно долго ждут, будут также получать предпочтение. При
этом время ответа системы для данного задания будет равно
Время ожидания + время обслуживания.
Многоуровневые очереди с обратными связями. Механизм
планирования должен [1, 5]:
1) оказывать предпочтение коротким заданиям;
2) оказывать предпочтение заданиям, лимитируемым вводом-выводом, чтобы обеспечить хороший коэффициент использования устройств ввода-вывода;
3) как можно быстрее определять характер задания и соответствующим образом планировать выполнение этого задания.
Многоуровневые очереди с обратными связями обеспечивают достижение этих целей. Новый процесс входит в сеть
очередей с конца верхней очереди. Он перемещается по этой
очереди согласно принципу FIFO, пока не получит в свое распоряжение центральный процессор. Если задание завершается или освобождает центральный процессор, чтобы окончить
операцию ввода-вывода (или в случае наступления иного события), то задание выходит из сети очередей. Если же выде-

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
68
ленный квант времени истекает до того, как процесс добровольно освободит центральный процессор, то этот процесс
помещается в конец следующей очереди более низкого уровня и т.д. Обычно в системе предусматривается очередь самого
нижнего уровня, который реализует принцип циклического
обслуживания и в котором данный процесс циркулирует, пока
не завершится (рис. 2.1). Обычно квант времени, предоставляемый данному процессу при переходе в каждую очередь
более низкого уровня, увеличивается. Однако ему не удается
получать центральный процессор слишком часто, так как процессы, находящиеся в очередях более высоких уровней, имеют и более высокий приоритет. Процесс, находящийся в данной очереди, может начать выполнение, если нет ожидающих
процессов во всех очередях более высоких уровней. Выполняющийся процесс прерывается, если поступает новый процесс
в очередь более высокого уровня.
Использование ЦП
Использование ЦП
Использование ЦП
Рис. 2.1. Многоуровневые очереди с обратными связями
Многоуровневые очереди с обратными связями – показательный пример адаптивного механизма. Такие механизмы
требуют больших накладных расходов, чем неадаптивные, но
присущая им чувствительность к изменениям режимов работы
делает систему более реактивной и компенсирует эти расходы
[3, 5]. Распространен вариант такой системы, в которой про-

69
Глава 2. Планирование и диспетчеризация
цесс несколько раз циркулирует в каждой очереди, прежде чем
перейти в очередь нижележащего уровня. Количество подобных циклов в каждой очереди увеличивается по мере перехода
на нижележащие уровни.
2.3. Алгоритмы планирования процессов
Существует множество различных алгоритмов планирования процессов, по-разному решающих вышеперечисленные
задачи, преследующих различные цели и обеспечивающих
различное качество мультипрограммирования. Среди этого множества алгоритмов рассмотрим подробнее две группы
наиболее часто встречающихся алгоритмов: алгоритмы, основанные на квантовании, и алгоритмы, основанные на приоритетах, то есть вытесняющие и невытесняющие алгоритмы планирования. Эти алгоритмы связаны, в свою очередь,
с двумя основными типами процедур планирования процессов – вытесняющими (preemptive) и невытесняющими (nonpreemptive), о которых мы говорили в подразделе 1.1 в связи
с понятием многозадачности.
В теории и практике создания операционных систем рекомендуют применять двухуровневую схему управления прохождением пакетов заданий в вычислительной системе [9, 10,
11]. Различают уровни долгосрочного (внешнего) и кратко-
срочного (внутреннего) планирования.
Уровень внешнего планирования выполняет действия, от-
носительно редкие в системе, но требующие больших системных затрат.
Уровень внутреннего планирования выполняет частые
и более короткие действия по управлению процессами.
Объектами управления уровня долгосрочного планирования являются задачи и их объединения – работы.
Работа – совокупность задач обработки данных, объединенных для достижения заданных целей обработки. Каждая работа является независимой единицей обработки данных и связана
с исполнением одной или нескольких программ (пользовательских и/или системных) на одном или нескольких процессорах
для достижения определенного результата.

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
70
Таким образом, при прохождении через компьютер процесс
мигрирует между различными очередями под управлением программы, которая называется планировщик (scheduler). Операционная система, обеспечивающая режим мультипрограммирования, обычно включает два планировщика – долгосрочный
(long term scheduler) и краткосрочный (short term scheduler/
CPU scheduler) [9, 10, 11]. Основное различие между долгосрочным и краткосрочным планировщиками заключается в частоте
запуска, например, краткосрочный планировщик может запускаться каждые 100 мс, долгосрочный – один раз за несколько
минут.
Долгосрочный планировщик решает, какой из процессов,
находящихся во входной очереди, должен быть переведен в очередь готовых процессов в случае освобождения ресурсов памяти.
Долгосрочный планировщик выбирает процесс из входной очереди с целью создания неоднороднойго мультипрограммного набора. Это означает, что в очереди готовых процессов должны находиться в разной пропорции как процессы, ориентированные
на ввод-вывод, так и процессы, ориентированные на преимущественную работу с CPU.
Краткосрочный планировщик решает, какой из процессов,
находящихся в очереди готовых процессов, должен быть передан на выполнение в CPU. В некоторых операционных системах
долгосрочный планировщик может отсутствовать. Например,
в системах разделения времени (time sharing system) каждый
новый процесс сразу же помещается в основную память. Объектом управления на уровне краткосрочного планирования являются процессы, которые выступают как конкурирующие друг
с другом потребители ресурсов вычислительной системы.
Средства управления задачами на уровне внутреннего пла-
нирования связаны с краткосрочным планированием. Реализация системы краткосрочного планирования осуществляется
различно в разных операционных системах. Основными компонентами краткосрочного планировщика являются [9, 10, 11]
диспетчер процессов, супервизор процессов, супервизор памяти, супервизор таймера.
Диспетчер процессов для планирования использования
центрального процессора вычислительной системы работает со-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
