stringtranslate.com

Группа процессов

В операционной системе , соответствующей POSIX , группа процессов обозначает совокупность одного или нескольких процессов . [1] Помимо прочего, группа процессов используется для управления распределением сигнала ; когда сигнал направляется в группу процессов, сигнал доставляется каждому процессу, являющемуся членом группы. [2]

Аналогично, сеанс обозначает совокупность одной или нескольких групп процессов. [3] Процесс не может создать группу процессов, принадлежащую другому сеансу; кроме того, процессу не разрешено присоединяться к группе процессов, которая является членом другого сеанса, то есть процессу не разрешено мигрировать из одного сеанса в другой.

Когда процесс заменяет свое изображение новым изображением (вызывая одну из функций exec) , новое изображение подчиняется той же группе процессов (и, следовательно, сеансу), что и старое изображение.

Приложения

Распределение сигналов по группам процессов формирует основу управления заданиями , используемого программами оболочки . Драйвер устройства TTY включает в себя понятие группы процессов переднего плана , в которую он отправляет сигналы, генерируемые прерываниями клавиатуры , в частности SIGINT ("interrupt", Control+ C), SIGTSTP ("terminal stop", + ) и SIGQUIT ("quit", + ). Он также отправляет сигналы SIGTTIN и SIGTTOU любым процессам, которые пытаются читать с терминала или записывать на него и которые не находятся в группе процессов переднего плана. Оболочка, в свою очередь, разделяет конвейеры команд , которые она создает, на группы процессов и контролирует, какая группа процессов является группой процессов переднего плана своего управляющего терминала , таким образом определяя, какие процессы (и, следовательно, какие конвейеры команд) могут выполнять ввод-вывод на терминал и с него в любой момент времени.ControlZControl\

Когда shell forkявляется новым дочерним процессом для конвейера команд, как родительский процесс shell, так и дочерний процесс немедленно делают дочерний процесс лидером группы процессов для конвейера команд. Таким образом, гарантируется, что дочерний процесс является лидером группы процессов, прежде чем родитель или дочерний процесс начнут полагаться на это.

Если в Unix-подобной системе используется текстовый пользовательский интерфейс , сеансы используются для реализации сеансов входа в систему . Один процесс, лидер сеанса , взаимодействует с управляющим терминалом, чтобы гарантировать завершение всех программ, когда пользователь «завершает» терминальное соединение. (Если лидер сеанса отсутствует, ожидается, что процессы в группе процессов переднего плана терминала будут обрабатывать зависания.)

При использовании графического пользовательского интерфейса концепция сеанса в значительной степени теряется, а понятие сеанса ядра в значительной степени игнорируется. Графические пользовательские интерфейсы, например, где используется X display manager , используют другой механизм для реализации сеансов входа.

Подробности

Системный вызов setsid используется для создания нового сеанса, содержащего одну (новую) группу процессов, при этом текущий процесс является как лидером сеанса, так и лидером группы процессов этой единственной группы процессов. [4] Группы процессов идентифицируются положительным целым числом, идентификатором группы процессов , который является (или был) лидером группы процессов. Группы процессов не обязательно должны иметь лидеров, хотя они всегда начинаются с одного. Сеансы идентифицируются идентификатором группы процессов лидера сеанса. POSIX запрещает изменение идентификатора группы процессов лидера сеанса.

Системный вызов setpgidиспользуется для установки идентификатора группы процессов процесса, тем самым либо присоединяя процесс к существующей группе процессов, либо создавая новую группу процессов в сеансе процесса, при этом процесс становится лидером группы процессов вновь созданной группы. [5] POSIX запрещает повторное использование идентификатора процесса, если группа процессов с этим идентификатором все еще существует (т. е. если лидер группы процессов вышел, но другие процессы в группе все еще существуют). Тем самым он гарантирует, что процессы не могут случайно стать лидерами группы процессов.

Системный вызовkill способен направлять сигналы как отдельным процессам, так и группам процессов. [2]

Смотрите также

Ссылки

  1. ^ IEEE и The Open Group (2018). "3. Определения". The Open Group Base Specifications Issue 7. § 296. Получено 2020-08-30 . Набор процессов, который позволяет сигнализировать о связанных процессах.
  2. ^ ab kill – Справочник по системным интерфейсам, Единая спецификация UNIX , версия 4 от The Open Group
  3. ^ IEEE и The Open Group (2018). "3. Определения". The Open Group Base Specifications Issue 7. § 343. Получено 2020-08-30 . Коллекция групп процессов [...]. Каждая группа процессов является членом сеанса.
  4. ^ setsid  – Справочник по системным интерфейсам, Единая спецификация UNIX , версия 4 от The Open Group
  5. ^ setpgid  – Справочник по системным интерфейсам, Единая спецификация UNIX , версия 4 от The Open Group
  6. ^ Karl-Bridge-Microsoft. "Job Objects - Win32 apps". docs.microsoft.com . Получено 28.08.2022 .

Дальнейшее чтение