Порожденный процесс - Большая Энциклопедия Нефти и Газа, статья, страница 2
Параноики тоже люди, и у них свои проблемы. Легко критиковать, но если бы все вокруг тебя ненавидели, ты бы тоже стал параноиком. Законы Мерфи (еще...)

Порожденный процесс

Cтраница 2


Для выполнения команды shell порождает процесс, который вызывает выполняемый файл с помощью системного вызова exec. Порожденный процесс, как обычно, наследует некоторые характеристики породившего процесса, в частности открытые файлы и текущий каталог. После завершения выполнения команды этот процесс уничтожается.  [16]

Итак, исходный процесс порождает два процесса, каждый из которых готовит исходные данные для обработки их основным процессом. Эти данные готовит сначала один порожденный процесс, затем - другой. Второй процесс начинает обработку после того, как получит сигнал от первого порожденного процесса. Основной процесс ожидает завершения работы двух порожденных процессов и после этого начинает обработку данных.  [17]

При создании процесса строится образ порожденного процесса, являющийся точной копией образа породившего процесса. Сегмент данных и стек отца действительно копируются на новое место, образуя сегмент данных и стек сына. Процедурный сегмент копируется только тогда, когда не является разделяемым. В противном случае сын становится еще одним процессом, разделяющим данный процедурный сегмент.  [18]

Существует единственная операция, порождающая процесс - системный вызов fork. Выполняющий ее процесс становится отцом порожденного процесса, а тот, в свою очередь, его сыном.  [19]

Системный вызов wait позволяет задержать выполнение текущего процесса до завершения одного из порожденных им процессов. При этом, если wait выдается после завершения порожденного процесса, производится немедленный возврат управления. Нормальное завершение системного вызова wait возвращает номер завершившегося процесса. Таким образом, если необходимо обработать завершение всех порожденных процессов, wait должен быть выдан соответствующее число раз.  [20]

При порождении дочернего процесса функцией CreateProcess в ряде случаев родительский процесс должен взаимодействовать с порожденным. Однако, взаимодействие возможно только после того, как закончена инициализация порожденного процесса. Функция WaitForlnputldle позволяет приостановить выполнение родительского процесса до того момента, когда порожденный процесс завершит инициализацию и начнет ждать ввода со стороны пользователя.  [21]

22 Взаимодействие процессов. [22]

В этом случае параллельный процесс работает как бы наложенным на основной и может по-своему обрабатывать прерывания. При этом целесообразно, чтобы порождающий процесс был нечувствителен к действиям оператора до завершения порожденного процесса.  [23]

В некоторых случаях выполнение родительского процесса должно быть приостановлено до завершения дочернего процесса, порожденного функцией CreateProcess. Это необходимо, например, если родительский процесс должен использовать какие-то результаты, полученные порожденным процессом. Функция WaitForSingleObject позволяет организовать ожидание завершения порожденного процесса.  [24]

Часто порожденный процесс определенным образом дезориентирует дескрипторы файлов, а затем выполняет системный вызов exec, который замещает его программу и данные программой и данными из выполняемого файла, определенного в качестве параметра к вызову exec. Например, если пользователь печатает команду xyz, то интерпретатор команд ( оболочка) выполняет операцию fork, создавая таким образом порожденный процесс.  [25]

С каждым процессом связаны два идентификатора: идентификатор пользователя и идентификатор группы пользователей. Порожденный процесс наследует эти идентификаторы от породившего процесса. В частности, процесс, порожденный интерпретатором команд для выполнения введенной команды, получает в итоге эти идентификаторы от пользователя, работающего за терминалом.  [26]

В некоторых случаях выполнение родительского процесса должно быть приостановлено до завершения дочернего процесса, порожденного функцией CreateProcess. Это необходимо, например, если родительский процесс должен использовать какие-то результаты, полученные порожденным процессом. Функция WaitForSingleObject позволяет организовать ожидание завершения порожденного процесса.  [27]

28 Параллельная обработка с несколькими процессорами ( а. моделирование. [28]

В одних случаях исходный процесс сохраняет частичный или даже полный контроль над порожденным процессом. Виртуальные команды позволяют исходному процессу останавливать и снова запускать, проверять и завершать подчиненные процессы. В других случаях исходный процесс никак не контролирует порожденный процесс: после того как новый процесс сформирован, исходный процесс не может его остановить, запустить заново, проверить или завершить. Таким образом, эти два процесса работают независимо друг от друга.  [29]

В любой момент процесс в системе UNIX может создать подпроцесс, который является его точной копией. Для этого выполняется системный вызов fork. Изначальный процесс называется порождающим процессом, а новый - порожденным процессом. Два процесса, полученные в результате выполнения операции fork, абсолютно идентичны и даже разделяют одни и те же файловые дескрипторы. Каждый из этих двух процессов выполняет свою работу независимо от другого.  [30]



Страницы:      1    2    3    4