Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системное программное обеспечение. Учебник

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
ГЛАВА 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) и невытесняющими (non­preemptive), о которых мы говорили в подразделе 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] диспетчер процессов, супервизор процессов, супервизор памя­ти, супервизор таймера.
Диспетчер процессов для планирования использования центрального процессора вычислительной системы работает со-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]