Процессы


Понятие процесс(process) введено разработчиками ОС с 60-х годов, как программа во время выполнения. Заметим, что программа — это всего лишь файл в формате загрузки, сохраняемый на диске, а процесс расположен в памяти на этапе выполнения.
Состояния процесса
Для процесса характерен ряд дискретных состояний, причем смену этих состояний могут вызывать различные события. Первоначально ограничимся рассмотрением трех основных состояний процесса.
• Процесс находится в состоянии выполнения, если в данный момент ему выделен центральный процессор (ЦП).
• Процесс находится в состоянии готовности, если он мог бы сразу использовать центральный процессор, предоставленный в его распоряжение.
• Процесс находится в состоянии блокировки, если он ожидает некоторого события, чтобы получить возможность продолжать выполнение.
Заметим, что в однопроцессорной машине в состоянии выполнения может в каждый конкретный момент времени находится только один процесс. В состояниях же готовности и блокировки могут находиться несколько процессов, т.е. есть возможность создать список готовых и список заблокированных процессов.
Список готовых процессов упорядочен по приоритету, первым в распоряжение получает ЦП первый процесс из списка. При создании списка готовых процессов, каждый новый процесс помещается в конец списка, а по мере завершения выполнения предыдущих процессов продвигается в головную часть списка. Список же заблокированных процессов не упорядочен, т.к. разблокировка процессов осуществляется в том порядке, в котором происходят ожидаемые ими события.
Рассмотрим диаграмму переходов процесса X из состояния в состояние — смену состояний процесса.

Запуск, или выбор процесса для выполнения — это предоставление ЦП первому процессу из списка готовых процессов. Запуск осуществляется с помощью программы — диспетчер.
Для предотвращения монопольного захвата ресурсов ЦП одним процессом, ОС устанавливает в специальном таймере прерываний определенный временной интервал, который отводится для данного процесса, по истечении кванта времени, таймер вырабатывает сигнал прерывания, по которому управление передается ОС и процесс переводится из состояния выполнения в состояние готовности, а первый процесс из списка готовых — в состояние выполнения.
Блокирование процесса — это освобождение ЦП процессом до истечения отведенного ему кванта времени, т.е. когда выполняющийся процесс инициирует, например, операцию ввода-вывода, и, таким образом, добровольно освобождает ЦП в ожидании завершения указанной операции.
Пробуждение процесса осуществляется тогда, когда происходит какое-либо событие, ожидаемое процессом, и он переходит из состояния блокировки в состояние готовности. Так в выше описанном случае, после завершения операции ввода-вывода.
Итак, мы определили четыре возможные смены состояния процесса.
Зап(X) : Г В
Икв(X): В Г
Блк(X): В Б
Прб(X): Б Г

Отметим, что единственная смена состояния, инициируемая самим процессом — это блокирование, остальные инициируются объектами, внешними по отношению к данному процессу.