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

Операционные среды, системы и оболочки. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
41
Для одновременного выполнения выбираются задачи, предъяв­ляющие отличающиеся требования к ресурсам, так чтобы обес­печивалась сбалансированная загрузка всех устройств вычисли­тельной машины; так, например, в мультипрограммной смеси желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом-выводом. Таким образом, выбор нового задания из пакета заданий зависит от внутренней ситуа­ции, складывающейся в системе, то есть выбирается «выгодное» задание. Следовательно, в таких ОС невозможно гарантировать выполнение того или иного задания в течение определенного периода времени. В системах пакетной обработки переключение процессора с выполнения одной задачи на выполнение другой происходит только в случае, если активная задача сама отказы­вается от процессора, например, из-за необходимости выпол­нить операцию ввода-вывода. Поэтому одна задача может на­долго занять процессор, что делает невозможным выполнение интерактивных задач. Таким образом, взаимодействие пользова­теля с вычислительной машиной, на которой установлена сис­тема пакетной обработки, сводится к тому, что он приносит за­дание, отдает его диспетчеру-оператору, а после выполнения всего пакета заданий получает результат. Очевидно, что такой порядок снижает эффективность работы пользователя. В на­стоящее время системы пакетной обработки практически не ис­пользуются.
Системы разделения времени призваны исправить основ­ной недостаток систем пакетной обработки – изоляцию пользо­вателя-программиста от процесса выполнения его задач. Каж­дому пользователю системы разделения времени предоставляет­ся терминал, с которого он может вести диалог со своей про­граммой. Так как в системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается при­емлемым. Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них едино­лично использует машину. Ясно, что системы разделения вре­мени обладают меньшей пропускной способностью, чем систе­мы пакетной обработки, так как на выполнение принимается
42
каждая запущенная пользователем задача, а не та, которая «вы­годна» системе, и, кроме того, имеются накладные расходы вы­числительной мощности на более частое переключение процес­сора с задачи на задачу. Критерием эффективности систем с разделением времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя.
Системы реального времени применяются для управле­ния различными техническими объектами (станками, спутника­ми, научными экспериментальными установками) или техноло­гическими процессами, такими, как гальваническая линия, до­менный процесс и т.п. Во всех этих случаях существует пре­дельно допустимое время, в течение которого должна быть вы­полнена та или иная программа, управляющая объектом, в про­тивном случае может произойти авария: спутник выйдет из зоны видимости; экспериментальные данные, поступающие с датчи­ков, будут потеряны; толщина гальванического покрытия не бу­дет соответствовать норме. Таким образом, критерием эффек­тивности для систем реального времени является их способ­ность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы – реактивностью. Для данных систем мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а вы­бор программы на выполнение осуществляется исходя из теку­щего состояния объекта или в соответствии с расписанием пла­новых работ.
Некоторые операционные системы могут совмещать в себе свойства систем разных типов, например, часть задач может вы­полняться в режиме пакетной обработки, а часть – в режиме ре­ального времени или в режиме разделения времени. В таких случаях режим пакетной обработки часто называют фоновым режимом.
По основному архитектурному принципу ОС разделяются на микроядерные и монолитные. В некоторой степени это разделение тоже условно, однако можно в качестве яркого при­мера микроядерной операционной системы привести систему реального времени QNX, тогда как в качестве примера моно-
43
литной ОС можно назвать Windows 9x или ОС Linux. Ядро ОС Windows нельзя изменить, пользователям недоступны его ис-
ходные коды и у них нет программы для сборки (компиляции) этого ядра. А вот в случае работы с ОС Linux пользователи мо­гут сами собрать ядро, отвечающее их потребностям, включив в него программные модули и драйверы, которые целесообразно, по их мнению, включить именно в ядро.
Вопросы для самопроверки
1. Дайте объяснение понятиям операционной среды и опе-
рационной системы.
2. В чем отличие между понятиями процесса и задачи?
3. Изобразите диаграмму состояний процесса, поясните все
возможные переходы из одного состояния в другое.
4. Объясните значения следующих терминов: task (задача),
process (процесс), thread (поток, нить). Как они между собой со­относятся?
5. Для чего каждая задача получает соответствующий де-
скриптор? Какие поля, как правило, содержатся в дескрипторе процесса (задачи)?
6. Объясните понятие ресурса. Почему понятие ресурса яв-
ляется одним из фундаментальных при рассмотрении ОС? Ка­кие виды и типы ресурсов вы знаете?
7. Как вы считаете: сколько и каких списков дескрипторов
задач может быть в системе? От чего должно зависеть это чис­ло?
8. Перечислите дисциплины обслуживания прерываний;
объясните, как можно реализовать каждую из этих дисциплин.
9. С какой целью в ОС вводится специальный системный
модуль, иногда называемый супервизором прерываний?
10. Приведите классификацию ОС?
44
2. УПРАВЛЕНИЕ ЗАДАЧАМИ
2.1 Основные функции управления задачами
Система управления задачами обеспечивает прохождение их через компьютер. Операционная система выполняет сле­дующие основные функции, связанные с управлением задачами:
- создание и удаление задач;
- планирование процессов и диспетчеризация задач;
- синхронизация задач, обеспечение их средствами комму-
никации.
Создание и удаление задач осуществляется по соответст­вующим запросам от пользователей или от самих задач. Задача может породить новую задачу. При этом между процессами по­являются «родственные» отношения. Порождающая задача на­зывается «предком», «родителем», а порожденная – «потом­ком», «сыном» или «дочерней задачей». «Предок» может приос­тановить или удалить свою дочернюю задачу, тогда как «пото­мок» не может управлять «предком».
Основным подходом к организации того или иного метода управления процессами, обеспечивающего эффективную за­грузку ресурсов или выполнение каких-либо иных целей, явля­ется организация очередей процессов и ресурсов [2]. Очевид­но, что на распределение ресурсов влияют конкретные потреб­ности тех задач, которые должны выполняться параллельно. Другими словами, можно столкнуться с ситуациями, когда не­возможно эффективно распределить ресурсы, исключив воз­можность их простаивания. Например, всем выполняющимся процессам требуется некоторое устройство с последовательным доступом. Но поскольку оно не может распределяться между па­раллельно выполняющимися процессами, то процессы вынуж­дены будут очень долго ждать своей очереди. Таким образом, недоступность одного ресурса может привести к тому, что дли­тельное время не будут использоваться и многие другие ресурсы.
Если же возьмем набор таких процессов, которые не будут конкурировать между собой за неразделяемые ресурсы при па­раллельном выполнении, то, скорее всего, процессы смогут вы­полниться быстрее (из-за отсутствия дополнительных ожида-
45
ний), да и имеющиеся в системе ресурсы будут использоваться более эффективно. Итак, возникает задача планирования вы­числительного процесса, т.е. организация бесконфликтного выполнения множества процессов.
Задача планирования процессов возникла на этапе создания первых пакетных ОС при планировании пакетов задач, которые должны были выполняться на компьютере и оптимально ис­пользовать его ресурсы. В настоящее время актуальность этой задачи не так велика. На первый план уже очень давно вышли задачи динамического (или краткосрочного) планирования, то есть текущего наиболее эффективного распределения ресурсов, возникающего практически при каждом событии. Организация работ по выполнению задач динамического планирования полу­чила название диспетчеризации.
Очевидно, что долгосрочное планирование осуществляется гораздо реже, чем задача текущего распределения ресурсов ме­жду уже выполняющимися процессами и потоками. Основное отличие между долгосрочным и краткосрочным планировщика­ми заключается в частоте запуска: краткосрочный планировщик, например, может запускаться каждые 30 или 100 мс; долгосроч­ный – один раз за несколько минут или чаще (здесь многое за­висит от общей длительности решения заданий пользователей).
С помощью долгосрочного планировщика определяется, какой из процессов, находящихся во входной очереди, должен быть переведен в очередь готовых процессов в случае осво­бождения ресурсов памяти и выбираются процессы из входной очереди с целью создания неоднородной мультипрограммной смеси. Это означает, что в очереди готовых к выполнению про­цессов должны находиться (в разной пропорции) как процессы, ориентированные на ввод/вывод, так и процессы, ориентирован­ные на преимущественную работу с центральным процессором.
Функция краткосрочного планировщика состоит в опреде­лении конкретных задач из находящихся в очереди, готовых к выполнению, которые должны быть переданы на исполнение. В большинстве современных операционных систем долгосрочный планировщик отсутствует.
46
2.2 Планирование процессов и диспетчеризация задач
2.2.1 Дисциплины диспетчеризации
В основе определения дисциплины диспетчеризации лежит выбор стратегии планирования. Стратегия планирования оп­ределяет, какие именно процессы могут быть направлены на выполнение для достижения целей, поставленных перед данны­ми процессами. Известно большое количество различных стра­тегий выбора процесса, которому необходимо предоставить процессор. Среди них, прежде всего, можно назвать следующие стратегии [2]:
- обеспечения соответствия порядка окончания вычисле-
ний (вычислительных процессов) последовательности, в кото­рой они были приняты к исполнению;
- оказание предпочтения более коротким процессам;
- предоставление всем пользователям (процессам пользо-
вателей) одинаковых услуг, в том числе и одинакового времени ожидания.
Долгосрочное планирование заключается в подборе таких вычислительных процессов, которые бы меньше всего конкури­ровали между собой за ресурсы вычислительной системы. Когда говорят о стратегии планирования, всегда имеют в виду понятие процесса, а не понятие задачи, поскольку процесс может состоять из нескольких потоков (задач).
Следует отметить, что при рассмотрении стратегий плани­рования, как правило, имеется в виду краткосрочное планирова­ние, то есть диспетчеризация (обслуживание). Когда говорят о диспетчеризации, то всегда в явном или неявном виде имеют в виду понятие задачи (потока). Если ОС не поддерживает меха­низм тредов, то можно заменять понятие задачи понятием про­цесса.
Известно большое количество правил (дисциплин) диспетче­ризации, в соответствии с которыми формируется список (очередь) готовых к выполнению задач. Различают два больших класса дис­циплин диспетчеризации (дисциплин обслуживания) – бесприори­тетные и приоритетные. При бесприоритетном обслуживании
47
выбор задач производится в некотором заранее установленном порядке без учета их относительной важности и времени обслу­живания. При реализации приоритетных дисциплин обслужи­вания отдельным задачам предоставляется преимущественное право попасть в состояние исполнения. Классификация дисцип­лин диспетчеризации приведена на рис. 2.1.
Дисциплины диспетчеризации
Бесприоритетные
Приоритетные
Линейные:
- в порядке очереди;
- случайный выбор.
С фиксированным
приоритетом
С динамическим
приоритетом
Циклические:
- циклический алгоритм;
- многоприоритетный циклический.
С относительным
приоритетом
С абсолютным
приоритетом
Адаптивное
обслуживание
Приоритет
от времени
ожидания
Приоритет от времени
обслуживания
Рис. 2.1 − Дисциплины диспетчеризации
Приоритеты имеют следующие свойства [2]:
- приоритет, присвоенный задаче, может являться величи-
ной постоянной (статический приоритет);
- приоритет задачи может изменяться в процессе ее реше-
ния (динамический приоритет).
Диспетчеризация с динамическими приоритетами требует дополнительных расходов на вычисление значений приоритетов исполняющихся задач, поэтому во многих ОС реального време­ни используются методы диспетчеризации на основе статиче­ских (постоянных) приоритетов. Хотя следует заметить, что ди-
48
намические приоритеты позволяют реализовать гарантии об­служивания задач.
Рассмотрим кратко основные, наиболее часто используемые
дисциплины диспетчеризации с использовани­ем статических приоритетов.
Самой простой в реализации является дисциплина FCFS (first come – first served), согласно которой задачи обслуживают-
ся в порядке очереди, то есть в порядке их появления. Те зада­чи, которые были заблокированы в процессе работы (попали в какое-либо из состояний ожидания, например, из-за операций ввода/вывода), после перехода в состояние готовности ставятся в эту очередь перед теми задачами, которые еще не выполня­лись. Другими словами, образуются две очереди (рис. 2.2): одна очередь образуется из новых задач, а вторая очередь – из ранее выполнявшихся, но попавших в состояние ожидание. Такой подход позволяет реализовать стратегию обслуживания, фор­мулируемую как «по возможности заканчивать вычисления в порядке их появления». Эта дисциплина обслуживания не тре­бует внешнего вмешательства в ход вычислений и перераспре­деления процессорного времени. Существующие дисциплины диспетчеризации процессов могут быть разбиты на два класса:
вытесняющие (preemptive) и невытесняющие (non­preemptive). В ранее разработанных пакетных ОС часто реали-
зовывали параллельное выполнение заданий без принудитель­ного перераспределения процессора между задачами. В боль­шинстве современных ОС для мощных вычислительных систем, а также и в ОС для ПК, ориентированных на высокопроизводи­тельное выполнение приложений (Windows NT, OS/2, Linux), реализована вытесняющая многозадачность. Можно сказать, что рассмотренная дисциплина относится к невытесняющим.
К достоинствам этой дисциплины диспетчеризации, прежде всего, можно отнести простоту реализации и малые расходы системных ресурсов на формирование очереди задач. Однако эта дисциплина приводит к тому, что при увеличении загрузки вычислительной системы растет и среднее время ожидания об­служивания, причем короткие задания, требующие небольших затрат машинного времени, вынуждены ожидать столько же,
49
сколько и трудоемкие задания. Избежать этого недостатка по­зволяют дисциплины SJN и SRT.
Выполненные задачи
Процессор
Очередь задач, готовых к исполнению
Очередь новых задач
Рис. 2.2 − Дисциплины диспетчеризации FCFS
Блокирование
Дисциплина обслуживания SJN (Shortest Job Next) пред­полагает, что следующим будет выполняться кратчайшее зада­ние. Для ее реализации необходимо, чтобы для каждого задания была известна оценка в потребностях машинного времени. Не­обходимость сообщать ОС характеристики задач, в которых описывались бы потребности в ресурсах вычислительной сис­темы, привела к тому, что были разработаны соответствующие языковые средства. Одним из наиболее известных был, в част­ности, язык управления заданиями JCL (Job Control Language). Пользователи вынуждены были указывать предполагаемое вре­мя выполнения задания. Для того чтобы они не злоупотребляли возможностью указать заведомо меньшее время выполнения с целью получить результаты раньше других, ввели подсчет ре­альных потребностей. Диспетчер задач сравнивал заказанное время и время выполнения и в случае превышения указанной оценки в данном ресурсе ставил данное задание не в начало, а в конец очереди. В некоторых ОС в таких случаях использовалась система штрафов, при которой в случае превышения заказанно-
50
го машинного времени оплата вычислительных ресурсов осуще­ствлялась уже по другим расценкам.
Дисциплина обслуживания SJN предполагает, что имеется только одна очередь заданий, готовых к выполнению. Задания, которые в процессе своего исполнения были временно заблоки­рованы (например, ожидали завершения операций вво­да/вывода), вновь попадают в конец очереди готовых к выпол­нению наравне с вновь поступающими. Это приводит к тому, что задания, которым требуется очень немного времени для сво­его завершения, вынуждены ожидать процессор наравне с дли­тельными работами, что не всегда целесообразно.
Для устранения этого недостатка и была предложена дис- циплина SRT (Shortest Remaining Time), в соответствии с кото­рой следующим будет выполняться задание, требующее наи­меньшего времени для своего завершения.
Три вышеназванные дисциплины обслуживания могут ис­пользоваться для пакетных режимов обработки, когда для поль­зователя не является обязательным ожидание реакции системы: он просто сдает свое задание и через несколько часов получает результаты вычислений. Для интерактивных же вычислений же­лательно, прежде всего, обеспечить приемлемое время реакции системы и равенство в обслуживании, если система является мультитерминальной. Если же это однопользовательская система, но с возможностью мультипрограммной обработки, то желатель­но, чтобы те программы, с которыми пользователь непосредст­венно работает в данный момент времени, имели лучшее время реакции, нежели фоновые задания. При этом возникает необхо­димость выполнять некоторые приложения без непосредственно­го участия пользователя (например, программа получения элек­тронной почты, использующая модем и коммутируемые линии для передачи данных). Тем не менее фоновые задания гаранти­рованно должны получать необходимую им долю процессорно­го времени. Для решения подобных проблем используется дис­циплина обслуживания, называемая RR (Round Robin, круговая, карусельная), и приоритетные методы обслуживания.
Дисциплина обслуживания RR предполагает, что каждая задача получает процессорное время порциями (квантами вре- мени). После окончания кванта времени q задача снимается с процессора, и процессорное время передается следующей зада-