Управление процессами
Процесс — это программный модуль, выполняемый в центральном процессоре (CPU). Операционная система контролирует следующую деятельность, связанную с процессами:
1) создание и удаление процессов;
2) планирование процессов;
3) синхронизация процессов;
4) коммуникация процессов;
5) разрешение тупиковых ситуаций.
Не следует смешивать понятия «процесс» и «программа».
Программа – это план действий, а процесс – это собственно действие, поэтому понятие процесса включает:
- программный код;
- данные;
- содержимое стека;
- содержимое адресного и других регистров процессора.
Таким образом, для одной программы могут быть созданы
- несколько процессов в том случае, если с помощью одной программы в CPU выполняется несколько несовпадающих последовательностей команд. За время существования процесс многократно изменяет свое состояние.
Различают следующие состояния процесса:
1) новый (процесс только что создан);
2) выполняемый (команды программы выполняются в CPU);
3) ожидающий (процесс ожидает завершения некоторого события, чаще всего операции ввода-вывода);
4) готовый (процесс ожидает освобождения CPU);
5) завершенный (процесс завершил свою работу).
Переход из одного состояния в другое не может выполняться произвольным образом.
Каждый процесс представлен в операционной системе набором данных, называемых таблица управления процессом (ТУП –РСВ – process control block). В РСВ процесс описывается набором значений, параметров, характеризующих его текущее состояние и используемых операционной системой для управления прохождения процесса через компьютер.
Самую простую модель процесса можно построить исходя из того, что в любой момент времени процесс либо выполняется, либо не выполняется, т.е. имеет только два состояния. Если бы все процессы были бы всегда готовы к выполнению, то очередь по этой схеме могла бы работать вполне эффективно. Такая очередь работает по принципу обработки в порядке поступления, а процессор обслуживает имеющиеся в наличии процессы круговым методом (Round-robin). Каждому процессу отводится определенный промежуток времени, по истечении которого он возвращается в очередь.
Однако в таком простом примере подобная реализация не является адекватной: часть процессов готова к выполнению, а часть заблокирована, например, по причине ожидания ввода-вывода. Поэтому при наличии одной очереди диспетчер не может просто выбрать для выполнения первый процесс из очереди. Перед этим он должен будет просматривать весь список, отыскивая незаблокированный процесс, который находится в очереди дальше других. Отсюда представляется естественным разделить все не выполняющиеся процессы на два типа: готовые к выполнению и заблокированные. Полезно добавить еще два состояния, как показано на рис. 16.
Рис. 16. Состояния процесса.
Планирование процессов.
Система управления процессами обеспечивает прохождение процесса через компьютер. В зависимости от состояния процесса ему должен быть предоставлен тот или иной ресурс. Например, новый процесс необходимо разместить в основной памяти, следовательно, ему необходимо выделить часть адресного пространства. Процессу в состоянии готовности должно быть предоставлено процессорное время. Выполняемый процесс может потребовать оборудование ввода-вывода и доступ к файлу.
Очереди. Распределение процессов между имеющимися ресурсами носит название планирование процессов. Одним из методов планирования процессов, ориентированных на эффективную загрузку ресурсов, является метод очередей ресурсов. Новые процессы находятся во входной очереди, часто называемой очередью работ – заданий.
Входная очередь располагается во внешней памяти, во входной очереди процессы ожидают освобождения ресурса – адресного пространства основной памяти.
Готовые к выполнению процессы располагаются в основной памяти и связаны очередью готовых процессов. Процессы в этой очереди ожидают освобождения ресурса процессорное время.
Процесс в состоянии ожидания завершения операции ввода-вывода находится в одной из очередей к оборудованию ввода-вывода.
При прохождении через компьютер процесс мигрирует между различными очередями под управлением программы, которая называется планировщик (scheduler).
Операционная система, обеспечивающая режим мультипрограммирования, обычно включает два планировщика – долгосрочный и краткосрочный. Например, в OS/360 долговременный планировщик назывался планировщиком заданий, а краткосрочный – супервизором задач.
На уровень долгосрочного планирования выносятся редкие системные действия, требующие больших затрат системных ресурсов, на уровень краткосрочного планирования – частые и более короткие процессы. На каждом уровне существует свой объект и собственные средства управления им.
Основное различие между долгосрочным и краткосрочным планировщиками заключается в частоте запуска, например: краткосрочный планировщик может запускаться каждые 100 мс, долгосрочный – 1 раз за несколько минут.
Долгосрочный планировщик решает, какой из процессов, находящихся во входной очереди, должен быть переведен в очередь готовых процессов в случае освобождения ресурсов памяти.
Долгосрочный планировщик выбирает процесс из входной очереди с целью создания неоднородной мультипрограммной смеси. Это означает, что в очереди готовых процессов должны находиться в разной пропорции как процессы, ориентированные на ввод-вывод, так и процессы, ориентированные на преимущественную работу с CPU.
На уровне долгосрочного планирования объектом является не отдельный процесс, а некоторое объединение процессов по функциональному назначению, которое называется работой (приложением). Каждая работа рассматривается как независимая от других работ деятельность, связанная с использованием одной или многих программ и характеризующаяся конечностью и определенностью. По мере порождения новых работ создается собственная виртуальная машина для их выполнения. Например, в ОС Windows 95 для каждого 32-разрядного приложения реализуется своя виртуальная машина. Распределение машин производится однократно в отличие от краткосрочного планирования, где процессор процессу может выделяться многократно.
Краткосрочный планировщик решает, какой из процессов, находящихся в очереди готовых процессов, должен быть передан на выполнение в CPU. В некоторых операционных системах долгосрочный планировщик может отсутствовать. Например, в системах разделения времени (time-sharing system) каждый новый процесс сразу же помещается в основную память.
На уровне краткосрочного планирования объектом управления являются процессы, которые выступают как потребители центрального процессора для внутренних процессов или внешнего процессора для внешних процессов. Причинами порождения процесса могут быть процессы на том же уровне или сигналы, посылаемые от долгосрочного планировщика.
Выделение процессора процессу производится многократно, с целью достижения эффекта мультипрограммирования, и такой процесс называется диспетчеризацией.
Рассмотрим следующий пример. Допустим, что на жестком диске нашей вычислительной системы находится подготовленная к исполнению программа вычисления квадратного корня из натуральных чисел, и что два студента одновременно используют ее для обработки результатов лабораторных работ. Одному из них требуется извлечь корень квадратный из 1, а второму - из 4. С точки зрения студентов, они работают с одним и тем же объектом, запуская на выполнение одну и ту же программу. С точки же зрения компьютерной системы, она имеет дело с двумя различными вычислительными процессами. Разные исходные данные обуславливают разные последовательности вычислений и приводят к разным результатам, которые должны быть доставлены различным пользователям, возможно, на различные устройства ввода-вывода. Было бы странным, если бы студент, извлекающий квадратный корень из 1, получил в итоге значение 2, а студент, извлекающий квадратный корень из 4 - значение 1. Следовательно, мы не можем использовать термин «программа» в пользовательском смысле этого слова для описания того, что происходит внутри вычислительной системы.