Создание нового процесса в различных ОС.



При загрузке операционной системы создаются несколько процессов. Некоторые из них являются высокоприоритетными процессами, то есть обеспечивают взаимодействие с пользователем и выполняющими заданную работу. Основные процессы являются фоновыми, они не связаны с конкретными пользователями, но выполняют особые функции. Например, фоновый процесс может быть предназначен для обработки приходящей на компьютер почты, активизируясь только по мере появления почты. Другой фоновый процесс может обрабатывать запросы к web-страницам, расположенным на компьютере, и активизироваться для обслуживания полученного запроса. Фоновые процессы, связанные с электронной почтой, web-страницами, новостями, выводом на печать и т.п., называются демонами. В больших системах насчитываются десятки демонов.

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

Жизненный цикл процесса

Жизненный цикл процесса в ОС UNIX может быть разбит на несколько состояний. Переход из одного состояния в другое происходит в зависимости от наступления определенных событий в системе.

Состояния процесса:

Ø Осуществление в пользовательском режиме. При этом процессором выполняются прикладные инструкции данного процесса.

Ø Выполнение в режиме ядра.Тем временем процессом выполняются системные инструкции ядра от имени процесса. Существуют всего три события, при которых выполнение процесса переходит в режим ядра: аппаратные прерывания, особые ситуации и системные вызовы.

Ø Отстаивает очередь на выполнение. Процесс не выполняется, но готов к запуску (обладает всеми необходимыми ему ресурсами, кроме процессора), как только планировщик выберет его (состояние runnable).

Ø Нахождение в состоянии сна (asleep), ожидая недоступного в данный момент ресурса, например, завершения операции ввода-вывода.

Ø Возвращение из режима ядра в режим задачи.Однако ядро прерывает его и производит переключение контекста для запуска более приоритетного процесса.

Ø В данный моментсоздан системным вызовом fork и находится в переходном состоянии: он существует, но не готов к запуску и не находиться в состоянии сна.

Ø Состояние зомби (zombie, defunct). Как такового процесса не существует, но остаются записи, содержащие код возврата и временную статистику его выполнения, доступную для родительского процесса. Это состояние является конечным в жизненном цикле процесса (рис. 8).

Рис. 8. Жизненный цикл процесса

Процесс начинает свой жизненный путь с состояния 6, когда родительский процесс выполняет системный вызов fork. После того как создание процесса полностью завершено, процесс завершает "дочернюю часть" вызова fork и переходит в состояние 3 (готовность к запуску), ожидая своей очереди на выполнение. Когда планировщик выбирает процесс для выполнения, он переходит в состояние 1, и далеевыполняется в пользовательском режиме.

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

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

Когда ресурс становиться доступным, ядро "пробуждает процесс", используя вызов wakeup, помещает его в очередь на выполнение, и процесс переходит в состояние 3 (готовность к запуску).

После того как планировщик выбрал процесс на запуск, последний начинает свое выполнение в режиме ядра.

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

Состояние процессов

Три состояния процесса (рис. 9):

ü Выполнение (занимает процессор);

ü Готовность (процесс временно приостановлен, чтобы позволить выполняться другому процессу);

ü Ожидание (процесс не может быть запущен по своим внутренним причинам, например, ожидая операции ввода/вывода).

Рис. 9. Состояние процесса

Возможные переходы между состояниями:

ü Процесс блокируется, ожидая входных данных

ü Планировщик выбирает другой процесс

ü Планировщик выбирает этот процесс

ü Поступили входные данные

Переходы 2 и 3 вызываются планировщиком процессов операционной системы, так что сами процессы даже не знают о этих переходах. С точки зрения самих процессов есть два состояния выполнения и ожидания.

На серверах для ускорения ответа на запрос клиента, часто загружают несколько процессов в режим ожидания, и как только сервер получит запрос, процесс переходит из "ожидания" в "выполнение". Этот переход выполняется намного быстрее, чем запуск нового процесса.


Дата добавления: 2018-08-06; просмотров: 803; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!