В POSIX -соответствующей операционной системе, группа процессов обозначает набор из одного или нескольких процессов. Среди прочего, группа процессов используется для управления распределением сигнала ; когда сигнал направляется группе процессов, сигнал доставляется каждому процессу, который является членом группы.
Аналогично, сеанс обозначает набор из одной или нескольких групп процессов. Процесс не может создавать группу процессов, принадлежащую другому сеансу; более того, процессу не разрешается присоединяться к группе процессов, которая является членом другого сеанса, то есть процессу не разрешается мигрировать из одного сеанса в другой.
Когда процесс заменяет свое изображение новым изображением (путем вызова одной из функций exec
), новое изображение подвергается той же группе процессов (и таким образом сессия) членство как старое изображение.
Распределение сигналов по группам процессов формирует основа управления заданиями, используемая программами оболочки. Драйвер устройства TTY включает понятие группы процессов переднего плана, которой он отправляет сигналы, генерируемые прерываниями клавиатуры, в частности SIGINT ( «Прерывание», Управление+C), SIGTSTP («конечная остановка», Управление+Z) и SIGQUIT («выход», Контроль+\). Он также отправляет сигналы SIGTTIN и SIGTTOU всем процессам, которые пытаются читать или записывать на терминал и которые не входят в группу процессов переднего плана. Оболочка, в свою очередь, разделяет создаваемые ею команды конвейеры на группы процессов и контролирует, какая группа процессов является ее основной группой процессов, таким образом определяя, какие процессы (и, следовательно, какие конвейеры команд) могут выполнять. / O к терминалу и обратно в любой момент времени.
Когда оболочка разветвляет
s новый дочерний процесс для командного конвейера, как родительский процесс оболочки, так и дочерний процесс немедленно создают дочерний процесс в лидера группы процессов для конвейера команд. Таким образом, гарантируется, что дочерний элемент является лидером группы процессов до того, как родитель или дочерний элемент будут полагаться на это.
Там, где текстовый интерфейс пользователя используется в Unix-подобной системе, сеансы используются для реализации сеансов входа в систему. Единственный процесс, лидер сеанса, взаимодействует с управляющим терминалом, чтобы гарантировать, что все программы будут завершены, когда пользователь «повесит трубку» терминального соединения. (Если лидер сеанса отсутствует, ожидается, что процессы в группе процессов переднего плана терминала будут обрабатывать зависания.)
Если используется графический пользовательский интерфейс, концепция сеанса в значительной степени утрачена., а понятие сеансов в ядре в основном игнорируется. В графических пользовательских интерфейсах, таких как диспетчер отображения X, используется другой механизм для реализации сеансов входа в систему.
Системный вызов setsid
используется для создания нового сеанса, содержащего одну (новую) группу процессов с текущим процессом как как лидер сеанса, так и лидер группы процессов этой единственной группы процессов. Группы процессов идентифицируются положительным целым числом, идентификатором группы процессов, который является идентификатором процесса процесса, который является (или был) лидером группы процессов. Группы процессов не обязательно должны иметь лидеров, хотя они всегда начинают с одного. Сеансы идентифицируются идентификатором группы процессов лидера сеанса. POSIX запрещает изменение идентификатора группы процессов лидера сеанса.
Системный вызов setpgid
используется для установки идентификатора группы процессов для процесса, тем самым либо присоединяя процесс к существующей группе процессов, либо создавая новую группу процессов в рамках сеанса Процесс становится лидером группы процессов вновь созданной группы. POSIX запрещает повторное использование идентификатора процесса, если группа процессов с этим идентификатором все еще существует (т. Е. Когда лидер группы процессов вышел, но другие процессы в группе все еще существуют). Таким образом, это гарантирует, что процессы не могут случайно стать лидерами группы процессов.
Системный вызов kill
может направлять сигналы либо отдельным процессам, либо группам процессов.
Набор процессов, которые разрешают передачу сигналов о связанных процессах.
kill
- Справочник по системным интерфейсам, Единая спецификация UNIX, выпуск 7 из Открытая группа Набор групп процессов […]. Каждая группа процессов является членом сеанса.
setsid
- Справочник по системным интерфейсам, Единая спецификация UNIX, Выпуск 7 из Открытая группа setpgid
- Справочник по системным интерфейсам, Единая спецификация UNIX, выпуск 7 из The Open Group