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