Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

3.1.4. Иерархии процессов

Некоторые системы при создании новых процессов сохраняют связь между родительским и дочерним процессами. Дочерний процесс также может выполнить системный вызов функции создания нового процесса, таким образом формируя некую иерархию процессов.

В UNIX-подобных системах процесс, созданные им дочерние процессы а также более отдаленные потомки составляют группу процессов. Обычно каждый участник такой группы процессов, связанных с определенным устройством ввода, получает сигнал от данного устройства. Каждый процесс отдельно от других в группе может захватить сигнал, проигнорировать его или выполнить некоторое действие по умолчанию.

В качестве другого примера, демонстрирующего ключевую роль иерархии процессов, может послужить то, как UNIX-подобные системы инициализируют сами себя при запуске непосредственно после начальной загрузки компьютера. В загрузочном образе есть специальный процесс, который называется init. Первым действием данного процесса является считывание файла, сообщающего о количестве терминалов в вычислительной сети. После этого он разветвляется, создавая по одному процессу для каждого терминала. Порожденные init –процессы ожидают, пока кто-нибудь не зарегистрируется в системе. После успешной регистрации ее процесс порождает оболочку для получения команд. Данные команды могут создать другие процессы и т.д. Таким образом, все процессы, которые выполняются в системе, относятся к единому дереву, корневым элементом которого является процесс init.

В операционной системе Windows в отличие от UNIX-подобных систем нет понятия иерархии процессов, и все процессы в системе являются равнозначными. Единственным признаком, намекающим на иерархию процессов, можно считать присвоение родительскому процессу специального маркера — дескриптора, который используется родительским процессом для управления дочерним процессом. Также родительский процесс может передавать данный маркер другому процессу, тем самым нарушая иерархию. В UNIX-подобных системах процессы не лишаются наследственной связи со своими дочерними процессами.

Предыдущий раздел Оглавление Следующий раздел