3.6 жизненный цикл процесса в ос unix.Подведем короткие итоги. Итак, процесс в UNIX представляет собой исполняемую программу вместе с необходимым ей окружением. Окружение состоит из информации о процессе, которая содержится в различных системных структурах данных, информации о содержимом регистров, программ операционной системы, стеке процесса, информации об открытых файлах, обработке сигналов и так далее. Процесс представляет собой изменяющийся во времени динамический объект. Программа представляет собой часть процесса. Процесс может создавать процессы-потомки посредством системного вызова fork(), может изменять свою программу через системный вызов exec(). Процесс может приостановить свое исполнение, используя вызов wait(), а также завершить свое исполнение посредством функции exit(). С учетом вышеизложенного, рассмотрим подробнее состояния, в которых может находится процесс: Процесс только что создан посредством вызова fork(). Процесс находится в очереди готовых на выполнение процессов. Процесс выполняется в режиме задачи, т.е. реализуется алгоритм, заложенный в программу. Выход из этого состояния может произойти через системный вызов, прерывание или завершение процесса. Процесс может выполняться в режиме ядра ОС, когда по требованию процесса через системный вызов выполняются определенные инструкции ядра ОС или произошло прерывание. Процесс в ходе выполнения не имеет возможность получить требуемый ресурс и переходит в состояние блокирования. Процесс осуществил вызов _exit() или получил сигнал на завершение. Ядро освобождает ресурсы, связанные с процессом, кроме кода возврата и статистики выполнения. Далее процесс переходит в состоянии зомби, а затем уничтожается. Рис. 12 Жизненный цикл процесса в ОС UNIX. |
|