Процессы организованы в группы процессов. Группы процессов используются для управления доступом к терминалам и предоставления средств распределения сигналов по совокупностям связанных процессов. Процесс наследует свою группу процесса от своего родительского процесса. Ядром предоставляются механизмы для изменения процессами своих групп процессов или групп процессов своих потомков. Создание новой группы процессов просто; значением новой группы процессов обычно является идентификатор создающего процесса.
Группу процессов иногда называют заданием (job) и управляют с помощью высокоуровневого системного программного обеспечения, такого, как оболочка. Обычной разновидностью задания, созданного оболочкой, является конвейер (pipeline) из нескольких процессов, соединенных каналами таким образом, что выход первого процесса является входом второго, выход второго является входом третьего и т. д. Оболочка создает такое задание, создавая с помощью fork процесс для каждой ступени конвейера, помещая затем все эти процессы в отдельную группу процессов.
Пользовательский процесс может послать сигнал каждому процессу в группе так же, как отдельному процессу. Процесс в определенной группе может получить программные прерывания, влияющие на группу, заставляющие ее приостанавливать или возобновлять исполнение или прерываться или завершаться.
У терминала (или чаще программной эмуляции терминала, называемой псевдотерминалом) есть присвоенный ему идентификатор группы процесса. Обычно в качестве этого идентификатора берется идентификатор группы процессов, связанной с терминалом. Управляющая заданиями оболочка может создать несколько групп процессов, связанных с одним и тем же терминалом; терминал является управляющим терминалом для каждого процесса в этих группах. Процесс может читать из дескриптора своего управляющего терминала, только если идентификатор группы процессов терминала совпадает с идентификатором группы этого процесса. Если идентификаторы не совпадают, процесс будет заблокирован, если он попытается прочесть с терминала. Изменяя идентификатор группы процессов терминала, оболочка может разделять (arbitrate) терминал между несколькими различными заданиями. Это разделение называется управлением заданиями (job control).
Так же как набор связанных процессов может быть собран в группу процессов, набор групп процессов может быть собран в сеанс (session). Главным применением для сеансов является создание изолированной среды для процессов демонов и их потомков и связывание воедино оболочки регистрации пользователя и заданий, которые эта оболочка порождает.
- 11/05/2010 10:33 - Система ввода/вывода
- 11/05/2010 06:08 - Управление памятью внутри ядра
- 10/05/2010 20:06 - Отдельные отображения файла
- 10/05/2010 11:56 - Проектные решения по управлению памятью BSD
- 10/05/2010 05:46 - Управление памятью
- 09/05/2010 13:03 - Сигналы
- 09/05/2010 05:44 - Управление процессами
- 08/05/2010 19:43 - Службы ядра
- 08/05/2010 13:45 - Организация ядра
- 08/05/2010 03:47 - Ядро