Системное программное обеспечение - Учебное пособие (Терехин А.Н.)

3.6      жизненный цикл процесса в ос unix.

Подведем короткие итоги. Итак, процесс в UNIX представляет собой исполняемую программу вместе с необходимым ей окружением. Окружение состоит из информации  о процессе, которая содержится в различных системных структурах данных, информации о содержимом регистров, программ операционной системы, стеке процесса, информации об открытых файлах, обработке сигналов и так далее. Процесс представляет собой изменяющийся во времени динамический объект. Программа представляет собой часть процесса. Процесс может создавать процессы-потомки посредством системного вызова fork(), может изменять свою программу через системный вызов exec(). Процесс может приостановить свое исполнение, используя вызов wait(), а также завершить свое исполнение посредством функции exit().

С учетом вышеизложенного, рассмотрим подробнее состояния, в которых может находится процесс:

Процесс только что создан посредством вызова fork().

Процесс находится в очереди готовых на выполнение процессов.

Процесс выполняется в режиме задачи, т.е. реализуется алгоритм, заложенный в программу. Выход из этого состояния может произойти через системный вызов, прерывание или завершение процесса.

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

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

Процесс осуществил вызов _exit() или получил  сигнал на завершение. Ядро освобождает ресурсы, связанные с процессом, кроме кода возврата и статистики  выполнения.  Далее процесс переходит в состоянии зомби, а затем уничтожается.

      

Рис. 12 Жизненный цикл процесса в ОС UNIX.