Подсистема Управления процессами (УП) является наиболее интенсивно используемым компо-нентом ОС, входящим в состав ядра ОС, то есть резидентно размещенным в ОП и выполняющим следующие важнейшие функции: 1. представление процессов в ОС посредством блоков управления процессами; 2. создание и уничтожение процессов; 3. обработка прерываний и переключение процессов из состояния в состояние; 4. синхронизация и организация взаимодействия между асинхронными и параллельными процессами. Процессом называется программа в стадии или во время выполнения. В большинстве ОС про-цесс соответствует заданию пользователя. В системе существует одновременно много процессов. Да-же в однопрограммной ОС существует системный и пользовательский процессы и можно выделить два типа состояний: пассивное и активное (пассивное, когда запуск не производится или работа за-вершена). В период своего существования процесс проходит через ряд дискретных состояний, под-разделяющихся на основные и дополнительные состояния. Основные состояния процесса: 1. Состояние активности, когда процесс обладает всеми необходимыми ресурсами и непо-средственно выполняется процессором. 2. Состояние готовности, когда процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса. 3. Состояние блокировки или ожидания, когда процесс не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завер-шения операции ввода-вывода, получения сообщения от другого процесса, освобожде-ния какого-либо необходимого ему ресурса. Дополнительные состояния процесса: 1. Приостановка готовности, когда процесс готов, но задержан и не конкурирует за ЦП. 2. Приостановка блокировки, когда процесс блокирован и задержан. То есть также не будет конкурировать за ЦП. Дополнительные состояния процессов кратковременны и обычно используются в ОС РВ (реаль-ного времени при перегрузках ЦП. В однопроцессорных ЭВМ в каждый момент времени может выполняться только один процесс и поэтому, когда один процесс активен, то несколько процессов могут находиться в других состояниях, т.е. находятся в соответствующих очередях (готовности, блокировки и др.).
Очередью называется упорядоченный по приоритетам список процессов, ожидающих доступ к некоторому вычислительному ресурсу. В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответст-вии с алгоритмом планирования процессов, реализуемым в данной операционной системе. Диаграмма переходов процесса представлена на рисунке 1. 1. Когда в ОС поступает задание на обслуживание, создается процесс, который устанавливается в очередь готовых процессов. 2. Процесс постепенно продвигается в очереди и, когда очередь подходит при освобождении ЦП, процесс переходит в состояние активности. Предоставление ЦП процесса называется запуском или выбором процесса для выполнения. Эту функцию выполняет системная программа, называющаяся диспетчером. 3. Процесс, получивший ЦП, выполняется. Для предотвращения случайного, либо умышленного монопольного захвата ресурсов ЭВМ каким-либо процессом устанавливается временной ин-тервал, называющийся квантом времени, в течение которого процессу разрешено занимать ЦП. Этот интервал устанавливается аппаратным таймером прерываний. По истечении кванта времени диспетчер возвращает процесс в состояние готовности и выбирает следующий гото-вый процесс. 4. Если выполняемый процесс до истечения кванта запрашивает какое-либо внешнее событие (обычно ввод/вывод), то добровольно освобождает ЦП, переводится в очередь блокировки до наступления события, безвозвратно теряет остаток кванта. 5. При наступлении события (завершении операции ввода/вывода) процесс переводится в со-стояние готовности. Операции приостановки и возобновления играют важную роль в ОС РВ и используются в сле-дующих случаях: • при пиковой нагрузке ВС, когда она не может обеспечить требуемое быстродей-ствие, когда расходы времени на смену состояний превышают полезную работу; • при ненадежной работе системы и возможном ее отказе; • когда промежуточные результаты работы процесса вызывают сомнение в пра-вильности работы программы. При приостановке процесс обязательно освобождает ОП, его копия сбрасывается на диск, в спе-циальный свопинг файл (swaping). Также могут быть освобождены и другие ресурсы. 6. В активном состоянии инициатором приостановки в однопроцессорной системе может быть сам процесс, а в мультипроцессорной – и другие процессы. В остальных состояниях – другие процессы (внешние события). 7. Возобновление (или активизация) процесса это операция подготовки процесса к повторному запуску с точки приостановки. 6. По завершении выполнения задания процесс уничтожается. Все смены состояний происходят по прерываниям. Прерывание – это событие/сигнал, привлекающий внимание ЦП и заставляющий его изменить текущий порядок исполнения команд процесса. Существуют аппаратные и программные прерыва-ния. Аппаратные прерывания инициируются аппаратурой (например, сигнал микросхемы таймера в IBM PC вырабатывается 18.2 раза в секунду), сигналом принтера, нажатием клавиш клавиатуры и многими другими причинами. Программные прерывания инициируются процессом и на самом деле ничего не прерывают. Это обычные процедуры, которые используются программами для выполнения стандартной рутиной работы. Однако, эти программы содержатся в ОС, и механизм прерываний дает возможность обратиться к ним из программ пользователей. Программные прерывания могут выдаваться внутри друг друга (быть вложенными). Например, аппаратные прерывания могут возникнуть при выполнении программных прерываний. Когда разрешенное прерывание вызывается, то ЦП оставляет свою работу, выполняет прерывание, а затем возвращается в место прерывания. Управляет прерываниями обработчик прерываний (Interrupt Handler).
Операции над процессами В соответствии с жизненным циклом процесса его выполнение может быть многократно пре-рвано и продолжено. Для того, чтобы возобновить выполнение процесса, необходимо восстановить состояние его операционной среды. Состояние операционной среды отображается состоянием реги-стров и программного счетчика, режимом работы процессора, указателями на открытые файлы, ин-формацией о незавершенных операциях ввода-вывода, кодами ошибок выполняемых данным процессом системных вызовов и т.д. Эта информация называется контекстом процесса. Кроме этого, операционной системе для реализации планирования процессов требуется допол-нительная информация: идентификатор процесса, состояние процесса, данные о степени привилеги-рованности процесса, место нахождения кодового сегмента и другая информация. В некоторых ОС (например, в ОС UNIX) информацию такого рода, используемую ОС для планирования процессов, называют дескриптором или блоком управления процесса. Дескриптор процесса по сравнению с контекстом содержит более оперативную информацию, которая должна быть легко доступна подсистеме планирования процессов. Контекст процесса содер-жит менее актуальную информацию и используется операционной системой только после того, как принято решение о возобновлении прерванного процесса. Очереди процессов представляют собой дескрипторы отдельных процессов, объединенные в списки. Таким образом, каждый дескриптор, кроме всего прочего, содержит, по крайней мере, один указатель на другой дескриптор, соседствующий с ним в очереди. Такая организация очередей позво-ляет легко их переупорядочивать, включать и исключать процессы, переводить процессы из одного состояния в другое. В этой связи подсистема Управление процессом должна выполнять следующие операции над процессами: 1. Создание. 2. .Уничтожение. 3. Запуск. 4. Блокировка. 5. Приостановка. 6. Возобновление, а также 7. Изменение диспетчерского приоритета процесса (работа с очередями). Создание состоит из многих этапов: • присвоение идентификатора процессу; • включение его в список активных процессов, известных системе; • формирование блока управления процессом; • выделение процессу начальных ресурсов. В общем случае существующий процесс может породить новый процесс и имеет место иерархи-ческая структура процессов. Задача может порождать подзадачу в мультипрограммном режиме, и, в этом смысле, мы имеем родительский и дочерний процессы. Уничтожение процесса означает удаление его из системы. Ресурсы возвращаются системе, имя процесса удаляется из списка, блок управления процессом освобождается. Блок управления процессом (Program Control Block – PCB) является центральным объектом в ОС, который определяет процесс и содержит всю необходимую информацию о процессе. PCB содержит определенные сведения. 1. Текущее состояние процесса (Program Status Word - PSW).(Всего 5 состояний) 2. Уникальный идентификатор процесса. 3. Приоритет. 4. Указатели памяти процесса. 5. Указатели выданных процессу ресурсов. 6. Область сохранения регистров. Когда ОС переключает ЦП с процесса на процесс, используется область сохранения регистров в PSB, чтобы запомнить информацию, необходимую для возобновления процесса, когда он снова получит ЦП. Обработка прерываний состоит в следующем: 1. При возникновении прерывания, управление передается в ОС.
2. ОС запоминает состояние прерванного процесса, обычно в PCB прерванного процесса. 3. ОС анализирует тип прерывания и передает управление соответствующему обработчику прерываний. 4. После обработки прерывания ОС либо продолжает выполнять прерванный процесс, либо запускает готовый процесс с наивысшим приоритетом. Основная концепция обработки прерываний В различных ЭВМ существует различный набор типов прерываний, которые можно разделить на 6 классов. 1. Программы-прерывания по системной директиве. Инициатор – активный процесс, выполнивший команду SVC (обращение к супервизору), то есть запрос на предоставление ОС какой-либо системной вычислительной услуги. 2. Прерывания ввода-вывода. Инициируются устройством ввода/вывода (УВВ) и сигна-лизируют ЦП о том, что произошло изменение состояния канала ввода-вывода (КВВ) или УВВ (например: завершение операции, ошибка, переход устройства в состояние готовности). 3. Внешние прерывания. Причинами их является нажатие операторами клавиш на панели ЭВМ или прием сигнала прерывания от другого ЦП в мультипроцессорной системе, сиг-нала от модема. 4. Прерывание по рестарту. Нажатие оператором на панели управления кнопки рестарта или Reset. 5. Логические прерывания по контролю программы вызываются программными ошибка-ми, обнаруженными при выполнении программы (деление на ноль, попытка выполнить привилегированную команду в пользовательском режиме, неверный код операции, защита памяти и т.д.). 6. Прерывания по контролю машины вызываются аппаратными ошибками. Планирование процессов включает в себя решение следующих задач: 1. определение момента времени для смены выполняемого процесса; 2. выбор процесса на выполнение из очереди готовых процессов; 3. переключение контекстов "старого" и "нового" процессов. Первые две задачи решаются программными средствами и будут рассмотрены в следующих разделах, а последняя выполняется, как правило, аппаратно.