В POSIX -conformant операционной системы , A группа процессов обозначает коллекцию из одного или нескольких процессов . [1] Среди прочего, группа процессов используется для управления распределением сигнала ; когда сигнал направляется группе процессов, сигнал доставляется каждому процессу, который является членом группы. [2]
Точно так же сеанс обозначает набор из одной или нескольких групп процессов. [3] Процесс не может создавать группу процессов, принадлежащую другому сеансу; кроме того, процессу не разрешается присоединяться к группе процессов, которая является членом другого сеанса, то есть процессу не разрешается мигрировать из одного сеанса в другой.
Когда процесс заменяет свое изображение новым (путем вызова одной из exec
функций ), новое изображение подвергается тому же членству в группе процессов (и, следовательно, сеансу), что и старое изображение.
Приложения
Распределение сигналов по группам процессов формирует основу управления заданиями, используемую программами оболочки . Телетайп устройство драйвера включает в себя понятие процесса переднего плана группы , к которой он посылает сигналы , генерируемые прерывания клавиатуры , в частности SIGINT ( «прерывание», Control+ C), SIGTSTP ( «конечной остановке», Control+ Z), и SIGQUIT ( «бросить курить», Control+ \). Он также отправляет сигналы SIGTTIN и SIGTTOU всем процессам, которые пытаются читать или записывать на терминал и которые не входят в группу процессов переднего плана. Оболочка, в свою очередь, разделяет создаваемые командные конвейеры на группы процессов и контролирует, какая группа процессов является основной группой процессов своего управляющего терминала , таким образом определяя, какие процессы (и, следовательно, какие командные конвейеры) могут выполнять ввод-вывод и с терминала в любой момент времени.
Когда оболочка fork
S нового дочерний процесса для командного конвейера, как процесс оболочки родителя и дочерний процесс немедленно сделать процесс ребенка в лидер группы процессов для командного конвейера. Таким образом, гарантируется, что дочерний элемент является лидером группы процессов до того, как родитель или дочерний элемент будут полагаться на это.
Если текстовый пользовательский интерфейс используется в Unix-подобной системе, сеансы используются для реализации сеансов входа в систему . Единственный процесс, лидер сеанса , взаимодействует с управляющим терминалом, чтобы гарантировать завершение работы всех программ, когда пользователь «вешает» терминальное соединение. (Если лидер сеанса отсутствует, ожидается, что процессы в группе процессов переднего плана терминала будут обрабатывать зависания.)
При использовании графического пользовательского интерфейса концепция сеанса в значительной степени теряется, а понятие сеанса в ядре игнорируется. В графических пользовательских интерфейсах, таких как диспетчер отображения X , используется другой механизм для реализации сеансов входа в систему.
Подробности
Системный вызов setsid
используется для создания нового сеанса , содержащего единственную (новая) группой процессов, с текущим процессом в качестве как лидера сеанса и лидера группы процессов этой одной группы процессов. [4] Группы процессов идентифицируются положительным целым числом, идентификатором группы процессов , который является идентификатором процесса, который является (или был) лидером группы процессов. Группы процессов не обязательно должны иметь лидеров, хотя они всегда начинают с одного. Сеансы идентифицируются идентификатором группы процессов лидера сеанса. POSIX запрещает изменение идентификатора группы процессов лидера сеанса.
Системный вызов setpgid
используется для установки идентификатора группы процессов процесса, тем самым либо присоединяя процесс к существующей группе процессов, либо создавая новую группу процессов в рамках сеанса процесса, при этом процесс становится лидером группы процессов вновь созданной группа. [5] POSIX запрещает повторное использование идентификатора процесса, если группа процессов с этим идентификатором все еще существует (т. Е. Когда лидер группы процессов вышел, но другие процессы в группе все еще существуют). Таким образом, это гарантирует, что процессы не могут случайно стать лидерами группы процессов.
Системный вызовkill
способен направлять сигналы либо в отдельные процессы или группы процессов. [2]
Смотрите также
Рекомендации
- Единая спецификация UNIX , выпуск 6
- ^ IEEE и Открытая группа (2018). «3. Определения» . Базовые спецификации Open Group Выпуск 7 . § 296 . Проверено 30 августа 2020 .
Набор процессов, который позволяет сигнализировать о связанных процессах.
- ^ a b спецификация Single UNIX , выпуск 7 от The Open Group - Справочник по системным интерфейсам,
- ^ IEEE и The Open Group (2018). «3. Определения» . Базовые спецификации Open Group Выпуск 7 . Статья 343 . Проверено 30 августа 2020 .
Набор групп процессов […]. Каждая группа процессов является членом сеанса.
- ^ Единая спецификация UNIX , выпуск 7 от The Open Group - Справочник по системным интерфейсам,
- ^ Единая спецификация UNIX , выпуск 7 от The Open Group - Справочник по системным интерфейсам,
дальнейшее чтение
- МакКузик, Маршалл Кирк; Невилл-Нил, Джордж В. (2004-08-02). «Управление процессами FreeBSD: группы процессов и сеансы» . Дизайн и реализация операционной системы FreeBSD . Эддисон Уэсли. ISBN 0-201-70245-2.
- Сигналы и группы процессов UNIX