Виды организации взаимосвязи процессов

С точки зрения видов взаимосвязи родительского и дочернего процессов, процессы подразделяются на независимые, подчиненныеи сопроцессы.

Подчиненный процесс– процесс, зависящий от процесса-родителя. Подчиненный процесс уничтожается при уничтожении родительского процесса, как в системах UNIX и ОС "Эльбрус". Процесс-родитель перед своим завершением должен ожидать завершения всех своих подчиненных процессов.

Независимыйпроцесс – дочерний процесс, выполняемый независимо от процесса-родителя. Типичные примеры: процессы-демоныв UNIX, запускаемые начальным процессом init. Например, cron –процесс-демон, организующий вызов заданных в специальной таблице crontabдействий с заданной периодичностью (автоматическое резервное копирование всех файловых систем на ленту в полночь); smbd –процесс-демон, управляющий серверным программным обеспечением SAMBA для сетевого доступа с Windows-машин к файлам UNIX-машины.

Сопроцесс (coprocess, coroutine)– процесс, равноправно взаимодействующий с другими такими же процессами; хранит свое текущее локальное управление(program counter); взаимодействует с другим сопроцессом Qс помощью операций resume (Q).Взаимодействие нескольких сопроцессов друг с другом операторами resume полностью равноправно. Данный механизм взаимодействия принципиально отличается от вызова процедуры. Операция detach(открепить) переводит сопроцесс в пассивное состояние, в котором могут быть доступны только его глобальные данные, но его программа уже завершена и не подлежит повторному запуску. Сопрограммное взаимодействие реализовано в языке СИМУЛА-67, который, как известно, стал родоначальником и объектно-ориентированного подхода.

Классификация процессов, близкая к приведенной в данном разделе, реализована в ОС "Эльбрус".