Архитектура современных операционных систем

76 Группы процессов Каждый процесс, за исключением init и swapper принадлежит к какой- либо группе процессов. В простейшем случае для пользовательских процессов существует 2 группы: оперативная и фоновая. Оперативную группу составляют процессы, которые в процессе своей работы взаимодействуют с консолью (тер- миналом), а фоновые – выполняются в отсоединенном режиме. В каждой из существующих групп имеется лидер группы. Это процесс, который был запущен в данной группе первым. Для идентификации группы используется идентификатор PGID (Process Group ID). Все процессы одной группы имеют одинаковые PGID. Как правило, PGID= PID процесса, который является лидером группы. Для установки этого идентификатора shell используется специальный си- стемный вызов setpgid. В каждый конкретный момент времени процессы только одной (опера- тивной) группы могут взаимодействовать с терминалом. Если процесс какой-то другой группы попробует осуществить вызов функции ввода или вывода с терминала, ему будет направлен сигнал SIGTTIN или SIGTTOUT, обработчик которого блокирует выполнение такого процесса до тех пор, пока его группа не станет оперативной или процесс не будет уни- чтожен. Помимо программной группы процессы могут принадлежать тому или иному сеансу. Обычно сеанс связывается с входом пользователя в систему, то есть login. Поскольку первым процессом каждого входа является shell, он и яв- ляется лидером сеанса и SID (идентификатор сеанса), как правило, совпадает с PID shell. Соответственно, все процессы, работают в данном сеансе, имеют один SID. Для его установки shell используется специальный системный вызов setsid. С каждым процессом связываются две пары UID и GID:  реальные UID и GID – это UID и GID пользователя, запустившего процесс;

RkJQdWJsaXNoZXIy MTY0OTYy