В многозадачной компьютерной системе процессы могут принимать различные состояния. Эти состояния в действительности могут не различаться ядром операционной системы, они удобная абстракция для понимания процессов.
Различные состояния процесса показано на диаграмме состояний, на которой стрелками показано переходы между состояниями. Как видно, некоторые процессы сохраняются в основной памяти, а другие во вторичной (виртуальной) памяти.
Основные состояния процесса
Во всех типах компьютерных систем процессы имеют следующие состояния:
- Созданный (новый)
- Ожидающий (готов)
- Запущенный
- Блокированный
- Завершенный
Созданный
(Другое название - новый). Когда процесс создается впервые, он попадает в положение «создан» или «новый». В этом состоянии он ожидает входа в состояние «готов». В этом состоянии процесс может быть воспринят или отложен долгосрочным планировщиком.
В большинстве настольных компьютерных систем выбор выполняется автоматически, однако в операционных системах реального времени выбор может быть отложен. В системах реального времени перевод слишком большого числа процессов в состояние «готов» может привести к переконкуренции за системные ресурсы, что ведет к невозможности завершения процесса до заданного срока.
Готов
(Другое название - ожидающий). «Готов» процесс уже загружен в основную память и ожидает выполнения центральным процессором (контекстное переключение будет осуществлено диспетчером или краткосрочным планировщиком ). В компьютерной системе может быть много «готовых» процессов. В однопроцессорной системе только один процесс будет выполняться в конкретный момент времени, все остальные «одновременно выполняемые» процессы будут ожидать выполнения.
Запущенный
(Другие названия - активный или исполняемый). «Запущенным» является тот процесс, который в данный момент выполняется центральным процессором. Если процесс исчерпает отведенный ему интервал времени, операционная система переключит контекст процесса снова в состояние «готов». Переключение контекста также может произойти, когда процесс завершится или когда он будет блокирован, нуждаясь в некотором ресурсе (например, ввода / вывода) и тогда он будет перемещен в положение «блокирован».
Блокированный
Если процесс «заблокируется» на ресурсе, он будет отстранен от процессора (ибо процесс не может продолжать исполнение) и переведен в блокированное состояние. Процесс будет оставаться "заблокированным" пока соответствующий ресурс не станет доступен. О разблокировании ресурса заблокированному процессу сообщает операционная система (о доступности ресурса сама операционная система сообщается с помощью прерывания). Как только операционная система узнает, что процесс разблокирован, он переводится в состояние "готов", с которого он может быть переведен в состояние «исполняемый», в котором он сможет использовать заново доступный ресурс.
Завершенный
Процесс может завершиться либо когда он в состоянии «исполняемый» и завершит свое выполнение, или когда его будет явно «снято» по команде оператора. В обоих случаях процесс переходит в состояние «завершенный». Если процесс не будет отстранен от памяти после вхождения в это состояние, то это состояние называется "зомби".
Дополнительные состояния процесса:
В системах, поддерживающих виртуальную память, возможны еще два дополнительных состояния. В обоих этих состояниях процесс «находится» во вторичной памяти (преимущественно - жесткий диск).
Выгруженный и ожидающий
(Другое название - приостановленный и ожидающий). В системах, которые поддерживают виртуальную память, процесс может быть выгружен из основной памяти и помещен в виртуальную память среднесрочным планировщиком. Оттуда, процесс может быть выгружен в состояние «ожидающий».
Выгруженный и заблокированный
(Другое название - приостановлен и блокирован). Процессы, которые являются заблокированными, могут также быть выгружены. В этом случае процесс является «выгружен и ожидающий» и может быть выгружен в тех же случаях, что и «выгружен и ожидающий процесс» (хотя в этом случае процесс будет в блокированном состоянии и может все еще ожидать пока ресурс станет доступным).