Книга: Операционная система UNIX
Завершение выполнения процесса
Завершение выполнения процесса
Процесс завершает свое выполнение с помощью функции exit()
. Эта функция может быть вызвана системным вызовом exit(2), а если завершение процесса вызвано получением сигнала, функцию exit()
вызывает само ядро. Функция exit()
выполняет следующие действия:
? Отключает все сигналы.
? Закрывает все открытые файлы.
? Сохраняет статистику использования вычислительных ресурсов и код возврата в записи proc
таблицы процессов.
? Изменяет состояние процесса на "зомби".
? Делает процесс init(1M) родительским для всех потомков данного процесса.
? Освобождает адресное пространство процесса, u-area, карты отображения и области свопинга, связанные с процессом.
? Отправляет сигнал SIGCHLD
родительскому процессу, уведомляя его о "смерти" потомка.
? Пробуждает родительский процесс, если тот ожидает завершения потомка.
? Запускает функцию переключения контекста, в результате чего высокоприоритетный процесс получает доступ к вычислительным ресурсам.
После завершения выполнения функции exit()
процесс находится в состоянии "зомби". При этом от процесса остается запись proc
в таблице процессов, содержащая статистику использования вычислительных ресурсов и код возврата. Эта информация может потребоваться родительскому процессу, поэтому освобождение структуры proc производит родитель с помощью системного вызова wait(2) возвращающего статистику и код возврата потомка. Если родительский процесс заканчивает свое выполнение раньше потомка, "родительские права" переходят к процессу init(1M). В этом случае после смерти потомка init(1M) делает системный вызов wait(2) и освобождает структуру proc
.
Другая ситуация возникает, если потомок заканчивает свое выполнение раньше родителя, а родительский процесс не производит вызова wait(2). В этом случае структура proc
потомка не освобождается и процесс продолжает находиться в состоянии "зомби" до перезапуска операционной системы. Хотя такой процесс (которого, вообще говоря, не существует) не потребляет ресурсов системы, он занимает место в таблице процессов, тем самым уменьшая максимальное число активных задач.
- Глава 3 Подсистема управления процессами
- Завершение C-программы
- ГЛАВА 6 Управление процессами
- Аварийное завершение
- Завершение и прекращение выполнения процесса
- Ожидание завершения процесса
- Создание, завершение и просмотр учетной записи процесса
- 7.3 ЗАВЕРШЕНИЕ ВЫПОЛНЕНИЯ ПРОЦЕССА
- Права для выполнения резервного копирования
- Сущность процесса миграции
- V Совершенствование процесса
- Что делать, если при установке принтера появляется сообщение Невозможно завершение операции. Подсистема печати недоступн...