10.6.4. Висячие группы процессов

10.6.4. Висячие группы процессов

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

Когда лидер сеанса (оболочка) завершается, ее группы процессов оказываются в сложной ситуации. Если они активно работают, то лишаются возможности использовать стандартные потоки stdin и stdout, поскольку терминал закрыт. Если они приостановлены, то вероятно, никогда не будут запущены снова, поскольку пользователь терминала не имеет возможности перезапустить их, к тому же то, что они не могут быть запущены, означает также, что они не могут быть и прерваны.

В этой ситуации каждая такая группа процессов получает название висячей (orphaned). Стандарт POSIX определяет ее как группу процессов, чей родитель является также членом этой группы либо не является членом сеанса этой группы. Другими словами, группа процессов не является висячей до тех пор, пока у нее есть родительский процесс, принадлежащий тому же сеансу, но другой группе.

Хотя оба определения выглядят сложными, концепция достаточно проста. Если группа процессов приостановлена, и не существует процесса, который бы принудил ее возобновиться, то эта группа становится висячей[33].

Когда завершает работу командная оболочка, все ее дочерние процессы становятся дочерними по отношению к процессу init, оставаясь при этом в своих исходных сеансах. Предполагая, что все программы в сеансе являются потомками оболочки, все группы процессов этого сеанса становятся висячими[34]. Когда группа процессов превращается в висячую, каждый процесс этой группы получает сигнал SIGHUP, что обычно прерывает программу.

Программы, которые не прерываются по сигналу SIGHUP, получают сигнал SIGCONT, который продолжает выполнение приостановленных процессов. Такая последовательность прерывает большинство процессов и обеспечивает оставшимся возможность работать (то есть гарантирует, что они не будет в приостановленном состоянии)[35].

Как только процесс становится висячим, он принудительно отключается от своего управляющего терминала (позволяя новому пользователю при необходимости применять этот терминал). Если продолжающие работать программы пытаются получить доступ к терминалу, эти попытки вызывают ошибки, устанавливающие errno в значение EIO. Процессы остаются в том же сеансе, и идентификатор сеанса не используется для новых идентификаторов процессов до тех пор, пока не завершатся все процессы данного сеанса.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

3.3. Группы ключевых процессов

Из книги Модель зрелости процессов разработки программного обеспечения автора Паулк Марк

3.3. Группы ключевых процессов Каждый уровень зрелости, кроме первого, состоит из нескольких групп ключевых процессов, указывающих на области концентрации усилий по совершенствованию производственного процесса организации. Группы ключевых процессов определяют круг


ЦЕЛИ КАЖДОЙ ГРУППЫ КЛЮЧЕВЫХ ПРОЦЕССОВ

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

ЦЕЛИ КАЖДОЙ ГРУППЫ КЛЮЧЕВЫХ ПРОЦЕССОВ Ниже перечислены цели всех групп ключевых процессов по уровням


1. Группы ключевых процессов для уровня 2: повторяемый уровень Управление требованиями

Из книги Практика и проблематика моделирования бизнес-процессов автора Всяких Е И

1. Группы ключевых процессов для уровня 2: повторяемый уровень Управление требованиями Цель 1. Установление контроля над системными требованиями к ПО в целях формирования базовой линии, используемой разработчиками ПО и руководством проекта.Цель 2. Поддержка


2. Группы ключевых процессов для уровня 3: определенный уровень Координация производственного процесса организации

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

2. Группы ключевых процессов для уровня 3: определенный уровень Координация производственного процесса организации Цель 1. Координация мероприятий по разработке и усовершенствованию производственного процесса в рамках всей организации.Цель 2. Выявление преимуществ и


3. Группы ключевых процессов для уровня 4: управляемый уровень Количественное управление процессом

Из книги Linux программирование в примерах автора Роббинс Арнольд

3. Группы ключевых процессов для уровня 4: управляемый уровень Количественное управление процессом Цель 1. Планирование работ по количественному управлению процессом.Цель 2. Установление количественного контроля над выполнением производственного процесса проекта.Цель


4. Группы ключевых процессов для уровня 5: оптимизирующий уровень Предотвращение дефектов

Из книги Операционная система UNIX автора Робачевский Андрей М.

4. Группы ключевых процессов для уровня 5: оптимизирующий уровень Предотвращение дефектов Цель 1. Планирование работ по предотвращению дефектов.Цель 2. Поиск и выявление общих причин возникновения дефектов.Цель 3. Определение приоритетов для общих причин возникновения


10.6. Сеансы и группы процессов

Из книги автора

10.6. Сеансы и группы процессов В Linux, как и в других системах Unix, пользователи обычно взаимодействуют с группами взаимосвязанных процессов. Хотя изначально они входят через единственный терминал и используют единственный процесс (а именно — оболочку, предоставляющую


10.6.3. Группы процессов

Из книги автора

10.6.3. Группы процессов Одной из главных целей Unix было создание набора простых инструментов, которые могут быть использованы вместе сложными способами (с помощью механизмов, подобных программным каналам). Большинство пользователей Linux делали нечто вроде следующего


9.2. Группы процессов

Из книги автора

9.2. Группы процессов Группа процесса является группой связанных процессов, которые в целях управления заданием (job) рассматриваются вместе. Процессы с одним и тем же ID группы процессов являются членами группы процессов, а процесс, PID которого равен ID группы процессов,


Текущие и фоновые группы процессов

Из книги автора

Текущие и фоновые группы процессов Как было показано, для каждого управляющего терминала существует сеанс, включающий одну или несколько групп процессов. Одна из этих групп является текущей (foreground group), а остальные фоновыми (background group).[27] Сигналы SIGINT и SIGQUIT, которые


Группы

Из книги автора

Группы С группами мы уже знакомы: они имеются в любой уважающей себя «социалке», например, в тех же Контактах. Фактически это самый обычный форум, болтальная тусовка, где близкие по духу слои общественности могут вволю обсасывать любую тему, словоблудствуя в рамках оной в