Так же как наборы связанных процессов собираются в группу процессов, наборы групп процессов собираются в сеансы. Сеанс является набором одной или более групп процессов и может быть связан с устройством терминала. Основным использованием для сеансов является соединение в одно целое оболочки регистрации пользователя и заданий, которые он запускает, и создание изолированного окружения для процесса демона и его потомков. Любой процесс, не являющийся уже лидером группы процессов, может создать сеанс, используя системный вызов setsid и становясь лидером сеанса и единственным членом сеанса. Создание сеанса создает также новую группу процессов, ID группы процессов которой является PID процесса, создающего сеанс, а процесс является лидером группы процессов. По определению все члены группы процессов являются членами одного сеанса.

У сеанса может быть связанный с ним управляющий терминал, который используется по умолчанию для взаимодействия с пользователем. Только лидер сеанса может выделять для сеанса управляющий терминал, становясь управляющим процессом, когда он это делает. Устройство в одно и то же время может быть управляющим терминалом лишь для одного сеанса. Система ввода/вывода терминала синхронизирует доступ к терминалу, разрешая в любой данный момент времени лишь одной группе процессов быть приоритетной (foreground) группой процессов для управляющего терминала. Некоторые операции терминала ограничены участниками сеанса. Сеанс может иметь самое большее один управляющий терминал. При создании сеанса лидер сеанса отделяется от своего управляющего терминала, если он у него был.
Сеанс регистрации создается программой, подготавливающей терминал для регистрации пользователя в системе. Этот процесс обычно запускает для пользователя оболочку, и соответственно оболочка создается в качестве управляющего процесса. Пример типичного сеанса регистрации показан на рисунке выше.
Структуры данных, использованные для поддержки сеансов и групп процессов в FreeBSD, показаны на рисунке ниже. Поле pgjnembers структуры группы процессов озаглавливает список процессов-членов; эти процессы соединены вместе через элемент списка p_pglist в структуре процесса. Кроме того, у каждого процесса есть ссылка на свою структуру группы процессов в поле ppgrp структуры процесса. У каждой структуры группы процессов есть указатель на содержащий его сеанс. Структура сеанса отслеживает сведения о регистрации, включая процесс, создавший и управляющий сеансом, управляющий терминал сеанса и регистрационное имя, связанное с сеансом. Два процесса, желающие определить, находятся ли они в одном сеансе, могут проследить свои указатели p_pgrp, чтобы обнаружить свои структуры групп процессов, а затем сравнить, имеют ли указатели pg_session одно и то же значение.

- 22/10/2010 20:29 - Ограничения тюрьмы
- 22/10/2010 16:02 - Реализация тюрьмы
- 22/10/2010 11:30 - Семантика тюрьмы
- 19/10/2010 04:06 - Тюрьмы
- 17/10/2010 19:25 - Управление заданиями
- 12/10/2010 02:42 - Доставка сигнала
- 11/10/2010 07:30 - Отправка сигнала
- 10/10/2010 22:11 - История сигналов
- 10/10/2010 01:09 - Процедуры вычисления приоритета потока
- 09/10/2010 12:36 - Сигналы