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