Введение

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

Первичные состояния процесса

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

Создано

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

Готовься .

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

Бег

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

Режим ядра

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

Запрещен

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

Прекращено

Процесс может быть завершен либо из состояния "выполнения" путем завершения его работы, либо принудительно уничтожен. В любом из этих случаев процесс переходит в состояние "завершенный". Основная программа больше не выполняется, но процесс остается в таблице процессов как зомби-процесс до тех пор, пока его родительский процесс не вызовет системный вызов `wait` для чтения статуса выхода, после чего процесс удаляется из таблицы процессов, окончательно завершая свой жизненный цикл. Если родительский процесс не вызывает `wait`, это продолжает занимать запись в таблице процессов (в частности, идентификатор процесса или PID) и приводит к утечке ресурсов.

Дополнительные состояния процесса

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

Обменены и ждут

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

Обменен и заблокирован

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