Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы_лекции.doc
Скачиваний:
47
Добавлен:
28.09.2019
Размер:
1.71 Mб
Скачать

3. Управление процессами

3.1. Реализация последовательного процесса в операционной системе

Запуск программы порождает процесс и вместе с ним описатель (дескриптор) процесса. Супервизор организует дескрипторы в очереди (например, входную очередь и очереди процессов, находящихся в состоянии готовности, ожидания и выполнения) и отображает изменение состояния процесса перемещением дескриптора из одной очереди в другую. Для состояний ожидания обычно ведётся столько очередей, сколько имеется ресурсов, могущих вызвать состояние ожидания. Порядок дескрипторов в очереди определяется хронологией их появления в очереди и приоритетом процесса. Число дескрипторов в системе может быть фиксированным или генерироваться в момент запуска операционной системы или динамически изменяющимся.

Как только система может выделить процессу все запрошенные им ресурсы, дескриптор процесса перемещается в очередь процессов, находящихся в состоянии готовности, и процесс ожидает очереди на выполнение. Как только завершается (или прерывается) выполняющийся процесс, управление передаётся процессу, стоящему первым в очереди на выполнение, и процесс начинает выполняться до прерывания или полного завершения. Если процесс завершён, то супервизор изымает дескриптор процесса из всех очередей. Если процесс прерван, то его дескриптор опять помещается в очередь процессов, находящихся в состоянии ожидания и выполнение процессов продолжается в порядке очерёдности.

Таким образом, при управлении процессами операционная система выполняет следующие основные функции:

  • создание и удаление задач в обобщающем смысле слова (это и процесс, и поток выполнения, т.к. они при управлении задачами не имеют существенных различий);

  • планирование процессов;

  • диспетчеризация задач;

  • синхронизация задач и обеспечение их средствами коммуникаций.

3.2. Планирование и диспетчеризация процессов и задач

Процессорное время является главным ресурсом вычислительной системы. Вполне естественна необходимость распорядиться им наиболее эффективно. А эффективность использования процессора в мультипрограммных и мультизадачных системах зависит от того, насколько рационально подобраны задачи с точки зрения минимизации конкурирования процессов и задач за доступ к имеющимся в системе ресурсам и от эффективности переключения процессора с выполнения одной задачи на выполнение другой.

При переключениях задач велика роль дескрипторов задач как информационных структур, сохраняющих контекст задачи на время прерывания её выполнения. В архитектуре современных мощных микропроцессоров предусмотрена поддержка хранения дескрипторов задач. С точки зрения надёжности работы это самое лучшее на сегодня решение. Однако, оказалось, что более эффективным является применение программных механизмов, которые применяются чаще, чем аппаратные.

Подбор процессов в целях минимизации их конкурирования за ресурсы называется планированием вычислительных процессов. Планирование процессов занимается планировщик задач, являющийся блоком супервизора. Планирование процессов осуществляется раз в минуту и реже.

Актуальность долгосрочного планирования процессов с развитием вычислительных систем снизилась. И, наоборот, возросла актуальность краткосрочного (динамического) планирования процессов и задач, которое приходится осуществлять практически при появлении каждого события. Динамическое планирование принято называть диспетчеризацией задач. Диспетчеризацию задач осуществляет другой блок супервизора – диспетчер задач. Диспетчер запускается раз 30 – 100 мс.

Планировщик процессов выбирает из входной очереди процессов такие процессы, чтобы образовалась мультипрограммная смесь, т.е. смесь процессов, ориентированных на использование разных ресурсов. Диспетчер решает, какая из задач готовых к выполнению должна быть передана на выполнение.

И долгосрочное и динамическое планирование осуществляются на основании ряда принципов, которые называют "стратегия планирования" (или "стратегия обслуживания") и "дисциплина обслуживания".

Стратегия планирования основана на следующих основных принципах:

  • по возможности заканчивать вычислительные процессы в том же порядке, в котором они были начаты;

  • отдавать предпочтение более коротким вычислительным задачам;

  • предоставлять всем процессам пользователей одинаковое время ожидания.

В стратегии планирования используется понятие "задача переднего плана" (foreground task). Этот термин родился из предположения "параллельная работа одного пользователя со множеством задач маловероятна". Поэтому из множества задач одного пользователя самый высокий приоритет имеет текущая задача, т.е. задача с которой он работает в текущий момент времени. В то же время для обеспечения нормальной работы коммуникационных процессов задачи ввода-вывода и управления должны иметь более высокий приоритет, чем задачи пользователя.

В широко распространённой системе Windows имеется возможность переключения стратегий обслуживания. В них по умолчанию установлена стратегия предоставления процессора задаче переднего плана. Однако, открыв окно "Система : Свойства" можно изменить стратегию. Например, в Windows 2000 можно выбрать "Оптимизировать быстродействие приложений", а в Windows XP – "Обеспечить наивысшее быстродействие".

В любом случае планировщик задач должен обеспечить нахождение в очереди задач на выполнение задач, ориентированных на использование разных ресурсов.

Дисциплин обслуживания (диспетчеризации) существует достаточно много (рис. 3.1). Прежде всего, они делятся на бесприоритетные и приоритетные. Бесприоритетные дисциплины не учитывают ни важность задач. Ни время их обслуживания. Приоритетные дисциплины предоставляют отдельным задачам право попасть на первоочередное обслуживание. Приоритет может быть постоянным и изменяемым (динамическим).

Рис. 3.1. Классификация дисциплин диспетчеризации

Наиболее просто реализуется дисциплина обслуживания в порядке очереди (FCFS – первым пришёл, первым обслужен).

Механизм прерывания выполняющихся процессов приводит к циклическим алгоритмам. В зависимости от способа обслуживания заблокированных задач различают вариант с одной общей очередью и с двумя параллельными очередями. В первом варианте заблокированная задача при её разблокировании ставится в конец общей очереди. Такой алгоритм можно отнести к бесприоритетным.

Во втором случае существует две параллельных очереди: очередь новых задач и очередь разблокированных задач. Разблокированные задачи выполняются перед новыми. Тем самым во втором варианте соблюдается первый принцип диспетчеризации. Эту дисциплину можно отнести уже к приоритетным дисциплинам. Она не требует перераспределения процессорного времени между задачами и относится к невытесняющим дисциплинам. Недостатком дисциплины является относительный рост времени ожидания выполнения коротких задач при росте загрузки вычислительной системы.

К циклическим приоритетным алгоритмам относится дисциплина SJN – следующей выполняется задача с наименьшим процессорным временем. Это требовало знания реально необходимого для выполнения задачи процессорного времени. Дисциплина предполагает наличие одной очереди задач, в которую ставятся на равных условиях и новые, и прерванные задачи. Таким образом короткие задачи вынуждены были ждать своей очереди наряду с прерванными, что является недостатком дисциплины.

От этого недостатка свободна дисциплина SRT (следующим выполняется задание, которому до полного выполнения необходимо меньше всех процессорного времени). Эта дисциплина относится также к циклическим приоритетным дисциплинам.

Последние три дисциплины хорошо применяются для пакетных режимов. Однако они создают две проблемы:

  • обеспечение задачам, с которыми работают пользователи, лучшего времени реакции, чем фоновым;

  • необходимость обеспечения гарантированного предоставления процессорного времени некоторым приложениям, выполняющимся без участия пользователя (например, программам получения электронной почты, использующие модем и коммутируемые линии).

Эти проблемы решает дисциплина RR (Round Robin), которая имеет и другое название: карусельная. Она использует циклический алгоритм с одной общей очередью задач на выполнение с предоставлением задачам процессорного времени квантами q. По истечении кванта времени задача снимается с процессора и ставится в конец очереди на равных условиях с вновь поступающими задачами. Величина кванта определяется на основании компромисса между приемлемым временем ожидания пользователями реакции системы на свои запросы и накладными расходами, вызванными слишком частыми переключениями между задачами при слишком малых квантах времени. В некоторых системах квант является фиксированной величиной, в некоторых можно указывать минимальное и максимальное значение кванта. В этом случае квант получает сначала минимальное значение, а в случае прерывания задачи, выделенный задаче квант увеличивается на некоторый шаг до тех пор пока он не станет достаточным для завершения задачи или не получит максимальное значение.

Алгоритм с абсолютным приоритетом применяется в операционных системах реального времени и предусматривает возможность предоставления процессорного времени задаче с высшим приоритетом, а в случае равенства приоритетов процессор обрабатывает задачи в порядке очерёдности. В этом случае прервать выполнение задачи может только появление задачи с более высоким приоритетом. Эта идея при применении карусельной дисциплины реализуется назначением всем задач равных приоритетов и созданием одной пустой задачи с наивысшим приоритетом для осуществления переключения задач. Тогда все непустые задачи получат равное процессорное время, которое будет равномерно предоставлено всем задачам.

Карусельная дисциплина с учётом приоритетов реализуется за счёт создания нескольких очередей задач на выполнение. Процессорное время отдаётся задачам из очереди с самым высоким приоритетом. Если она пуста, то просматривается следующая очередь и т.д.

Операционные системы реального времени используют дисциплины с динамическими приоритетами, которые изменяются в зависимости от обстоятельств. Операционные системы реального времени применяются в системах управления технологическим оборудованием. В системах управления возможны ситуации прерывания задач с низким приоритетом вследствие недостатка вычислительных ресурсов. В ряде ситуаций потери от прерывания таких задач намного превышают потери от прерывания высокоприоритетных задач. В этих условиях целесообразно временно повышать приоритет указанных выше задач.

В некоторых операционных системах, в частности UNIX, уровни приоритетов задач рассчитываются достаточно часто и лежат в диапазоне 0 – 127, причём приоритеты в диапазоне 96 – 127 являются фиксированными, в диапазоне 66-95 – системными и в диапазоне 0 – 65 – приоритеты режима задач. Системные и задачные приоритеты являются динамическими.

В системах Windows NT/2000/XP диспетчер поддерживает 32 уровня приоритета, причём задачи делятся на два класса: задачи реального времени и переменного приоритета. Приоритеты задач реального времени находятся в диапазоне 16 –31, все остальные имеют динамически изменяемый приоритет в диапазоне 1 – 15. При прерывании задачи операционная система снижает приоритетна единицу, а при освобождении задачи из очереди ожидания.

В системе OS/2 имеется четыре класса приоритетов, меняющихся в пределах класса в диапазоне 0 – 31. Это обеспечивается наличием 128 очередей задач с разными приоритетами.

Классификация дисциплин обслуживания, показанная на рис. 2.1, основана на наличии или отсутствии приоритетов и способах их использования. Однако, имеется и другой признак классификации – наличие или отсутствие возможности отобрать процессор у выполняющейся задачи. Если этой возможности нет, то дисциплина обслуживания называется невытесняющей, в противном случае вытесняющей.

При разработке дисциплины диспетчеризации весьма актуальной является проблема гарантированного обслуживания1. Диспетчеризация на основе жёстких временных ограничений иногда приводит к более быстрому выполнению задач, которые реально в нём не нуждаются, за счёт других задач. Существует три способа обеспечения гарантированного обслуживания процесса:

  • выделение некоторой минимальной доли процессорного времени классу задач при наличии в классе хотя бы одного процесса, находящегося в состоянии готовности;

  • выделение некоторого минимального времени любому процессу, находящемуся в состоянии готовности;

  • выделение процессу такого количества процессорного времени, которое гарантирует завершение процесса к некоторому наперёд заданному сроку.

Применение описанных выше динамических приоритетов является одной из гарантий обслуживания процессов.

Для сравнения алгоритмов диспетчеризации применяется ряд критериев:

    • Загрузка центрального процессора (в среднем для персональных систем 2 – 3%, для серверов от 15 – 40% до 90 – 100%);

    • Пропускная способность центрального процессора, измеряется количеством процессов, выполняемым за единицу времени;

    • Время оборота – время, затраченное на выполнение процесса с момента его появления до момента исчезновения;

    • Время ожидания – время нахождения процесса в очереди готовых процессов;

    • Время отклика (для интерактивных программ) – время, прошедшее от момента попадания процесса во входную очередь до момента первого обращения к терминалу.

Основные причины снижения производительности системы:

  • большие накладные расходы на переключение процессора;

  • переключение на другую задачу в момент выполнения текущей задачей критической секции.

В мультипроцессорных системах повышение производительности достигается вследствие применения:

  • совместного планирования, при котором все неблокированные потоки одного приложения одновременно ставятся на выполнение процессорами и одновременно снимаются с выполнения;

  • блокирования прерывания задач, находящихся в критической секции и запрета постановки в очередь на выполнение активно ожидающих задач до освобождения входа в секцию;

  • планирование с учётом подсказок, в частности указаний процессов подлежащих снятию с процессора и указаний процессов, которые следует поставить на процессор.