У POSIX-сумісній операційній системі група процесів позначає сукупність одного або більше процесів. Серед іншого, група процесів використовується для керування розподілом сигналу; коли сигнал спрямовується до групи процесів, сигнал доставляється кожному процесу, який є членом групи.

Подібним чином, сеанс позначає сукупність однієї або більше груп процесів. Процес не може створити групу процесів, що належить до іншого сеансу; крім того, процесу не дозволяється приєднуватися до групи процесів, яка є членом іншого сеансу—тобто процес не може мігрувати з одного сеансу до іншого.

Коли процес замінює свій образ новим образом (викликаючи одну з exec функцій), новий образ отримує те саме членство в групі процесів (і, таким чином, у сеансі), що й старий образ.

Застосування

Розподіл сигналів між групами процесів утворює основу керування завданнями, яке використовується програмами оболонки. Драйвер пристрою TTY містить поняття групи процесів переднього плану, до якої він надсилає сигнали, згенеровані перериваннями клавіатури, зокрема SIGINT («переривання», ), SIGTSTP («зупинка термінала», ) та SIGQUIT («вихід», ). Він також надсилає сигнали SIGTTIN і SIGTTOU будь-яким процесам, які намагаються читати з термінала або записувати до нього та які не належать до групи процесів переднього плану. Оболонка, своєю чергою, розподіляє створені нею конвеєри команд між групами процесів і керує тим, яка група процесів є групою процесів переднього плану її управляючого термінала, визначаючи таким чином, які процеси (а отже, які конвеєри команд) можуть у будь-який момент часу виконувати введення-виведення з термінала та до нього.

Коли оболонка виконує fork нового дочірнього процесу для конвеєра команд, і батьківський процес оболонки, і дочірній процес негайно роблять дочірній процес лідером групи процесів для конвеєра команд. Це гарантує, що дочірній процес стане лідером групи процесів до того, як батьківський або дочірній процес покладатиметься на те, що це вже сталося.

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

Коли використовується графічний інтерфейс користувача, поняття сеансу значною мірою втрачається, а поняття сеансів у ядрі значною мірою ігнорується. Графічні інтерфейси користувача, наприклад у випадку використання дисплейного менеджера X, застосовують інший механізм реалізації сеансів входу.

Деталі

Системний виклик setsid використовується для створення нового сеансу, що містить одну (нову) групу процесів, причому поточний процес є одночасно лідером сеансу та лідером групи процесів цієї єдиної групи процесів. Групи процесів ідентифікуються додатним цілим числом — ідентифікатором групи процесів, який є ідентифікатором процесу процесу, що є (або був) лідером групи процесів. Групи процесів не обов'язково повинні мати лідерів, хоча завжди починають своє існування з лідером. Сеанси ідентифікуються ідентифікатором групи процесів лідера сеансу. POSIX забороняє змінювати ідентифікатор групи процесів лідера сеансу.

Системний виклик setpgid використовується для встановлення ідентифікатора групи процесів процесу, таким чином або приєднуючи процес до наявної групи процесів, або створюючи нову групу процесів у сеансі процесу, причому сам процес стає лідером новоствореної групи. POSIX забороняє повторне використання ідентифікатора процесу, якщо група процесів із цим ідентифікатором усе ще існує (тобто коли лідер групи процесів завершив роботу, але інші процеси в групі все ще існують). Таким чином гарантується, що процеси не можуть випадково стати лідерами груп процесів.

Системний виклик kill здатний спрямовувати сигнали або до окремих процесів, або до груп процесів.

Див. також cgroups Диспетчер об'єктів Windows

Примітки Single UNIX Specification, Issue 6