Состояние процесса
В многозадачной компьютерной системе процессы могут находиться в различных состояниях . Эти отдельные состояния могут не распознаваться операционной системы ядром как таковые . Однако они представляют собой полезную абстракцию для понимания процессов.
Первичные состояния процесса
[ редактировать ]Следующие типичные состояния процесса возможны в компьютерных системах всех типов. В большинстве этих состояний процессы «хранятся» в основной памяти .
Созданный
[ редактировать ]Когда процесс создается впервые, он находится в состоянии « создан » или « новый ». В этом состоянии процесс ожидает перехода в состояние «готовность». Прием будет одобрен или отложен долгосрочным планировщиком приема . Обычно в большинстве настольных компьютерных систем этот допуск утверждается автоматически. Однако для операционных систем реального времени этот прием может быть отложен. В системе реального времени перевод слишком большого количества процессов в состояние «готовность» может привести к перенасыщению и чрезмерной конкуренции за ресурсы системы, что приведет к неспособности уложиться в сроки выполнения процессов.
Готовый
[ редактировать ]«Готовый» или «ожидающий» процесс загружен в основную память и ожидает выполнения на ЦП (чтобы контекст переключился на ЦП диспетчером или краткосрочным планировщиком). В любой момент выполнения системы может быть много «готовых» процессов — например, в однопроцессорной системе одновременно может выполняться только один процесс, а все остальные «параллельно выполняющиеся» процессы будут ожидать исполнение.
Очередь готовности или очередь выполнения используется в компьютерном планировании . Современные компьютеры способны одновременно запускать множество различных программ или процессов. Однако процессор способен обрабатывать только один процесс одновременно. Процессы, готовые для ЦП, сохраняются в очереди «готовых» процессов. Другие процессы, ожидающие возникновения события, такие как загрузка информации с жесткого диска или ожидание подключения к Интернету, не находятся в очереди готовности.
Бег
[ редактировать ]Процесс переходит в рабочее состояние, когда он выбран для выполнения. Инструкции процесса выполняются одним из процессоров (или ядер) системы. На каждый процессор или ядро может быть запущен не более одного процесса. Процесс может работать в любом из двух режимов: режиме ядра или режиме пользователя . [1] [2]
Режим ядра
[ редактировать ]- Процессы в режиме ядра могут обращаться как к ядру, так и к адресам пользователей.
- Режим ядра обеспечивает неограниченный доступ к оборудованию, включая выполнение привилегированных инструкций.
- Различные инструкции (такие как инструкции ввода-вывода и инструкции остановки) являются привилегированными и могут выполняться только в режиме ядра.
- Системный вызов из пользовательской программы приводит к переключению в режим ядра.
Пользовательский режим
[ редактировать ]- Процессы в пользовательском режиме могут получать доступ к своим собственным инструкциям и данным, но не к инструкциям и данным ядра (или инструкциям и данным других процессов).
- Когда компьютерная система выполняется от имени пользовательского приложения, система находится в пользовательском режиме. Однако когда пользовательское приложение запрашивает услугу у операционной системы (через системный вызов ), система должна перейти из пользовательского режима в режим ядра, чтобы выполнить запрос.
- Пользовательский режим позволяет избежать различных катастрофических сбоев:
- существует изолированное виртуальное адресное пространство . Для каждого процесса в пользовательском режиме
- Пользовательский режим обеспечивает изолированное выполнение каждого процесса, чтобы он не влиял на другие процессы как таковые.
- Прямой доступ к любому аппаратному устройству не допускается.
Заблокировано
[ редактировать ]Процесс переходит в заблокированное состояние, когда он не может продолжаться без внешнего изменения состояния или события. Например, процесс может заблокировать вызов устройства ввода-вывода, такого как принтер, если принтер недоступен. Процессы также обычно блокируются, когда им требуется ввод данных пользователем или доступ к критическому разделу , который должен выполняться атомарно. Такие критические разделы защищаются с помощью объекта синхронизации, такого как семафор или мьютекс.
Прекращено
[ редактировать ]Процесс может быть завершен либо из «выполняющегося» состояния путем завершения его выполнения, либо путем явного уничтожения. В любом из этих случаев процесс переходит в состояние «завершено». Базовая программа больше не выполняется, но процесс остается в таблице процессов как процесс-зомби до тех пор, пока его родительский процесс не вызовет wait
системный вызов для чтения статуса завершения , после чего процесс удаляется из таблицы процессов, что, наконец, завершает время существования процесса. Если родитель не может позвонить wait
, это продолжает использовать запись таблицы процессов (точнее, идентификатор процесса или PID) и вызывает утечку ресурсов .
Дополнительные состояния процесса
[ редактировать ]Два дополнительных состояния доступны для процессов в системах, поддерживающих виртуальную память . В обоих этих состояниях процессы «хранятся» во вторичной памяти (обычно на жестком диске ).
Поменял и жду
[ редактировать ](Также называется приостановленным и ожидающим .) В системах, поддерживающих виртуальную память, процесс может быть выгружен, то есть удален из основной памяти и помещен во внешнее хранилище с помощью планировщика. Отсюда процесс можно перевести обратно в состояние ожидания.
Заменил и заблокировал
[ редактировать ](Также называется приостановленным и заблокированным .) Заблокированные процессы также можно заменить. В этом случае процесс одновременно выгружается и блокируется, и его можно снова включить при тех же обстоятельствах, что и выгруженный и ожидающий процесс (хотя в этом случае процесс перейдет в заблокированное состояние и может все еще ожидать чтобы ресурс стал доступен).
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Авраам Зильбершац; Питер Баер Гэлвин; Грег Ганье (29 июля 2008 г.). Концепции операционной системы . ISBN 978-0470128725 .
- ^ Морис Дж. Бах (1986). Проект операционной системы UNIX . Prentice-Hall, Inc. Аппер-Сэддл-Ривер, Нью-Джерси, США ©1986. ISBN 0-13-201799-7 .
- Столлингс, Уильям (2005). Операционные системы: внутреннее устройство и принципы проектирования (5-е изд.). Прентис Холл. ISBN 0-13-127837-1 .
- В частности, глава 3, раздел 3.2, «Состояния процесса», включая рисунок 3.9 «Переход между состояниями процесса с состояниями ожидания».