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

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

Cтраница 3


Функция CreateProcess возвращается, не ожидая окончания инициализации порождаемого процесса. Но в ряде случаев родительский процесс должен взаимодействовать с порожденным. Такое взаимодействие возможно только после того, как закончена инициализация порожденного процесса.  [31]

Объясним, почему локальная куча SRO распределяется для стеков SRO при использовании порожденных процессов. При выполнении в одном частном контексте родитель может породить более одного процесса. Более того, порядок создания и завершения в этом контексте порожденных процессов не может быть определен во время компиляции. Следовательно, слежение за стеками SRO, связанными с активизированными порожденными процессами, требует особой стратегии управления кучей. Таблица объектов в стеке SRO процесса-родителя не может использоваться для отслеживания этих процессов.  [32]

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

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

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

При образовании нового процесса текущий процесс продолжается непосредственно за оператором ветвления, а новый, параллельный ему, начинается с оператора, определяемого заданной меткой. Процесс, в котором встречается оператор ( DVRG), назовем порождающим, а процесс, начинаемый с метки т, - порожденным. Любой процесс, в том числе и порожденный, может образовывать любое количество параллельных ему процессов. Все порожденные процессы ( для отличия одного от другого) обозначим соответствующей начальной меткой процесса.  [36]

Если обобщить возможности, предоставляемые системными вызовами fork, exec, wait и exit, можно охарактеризовать тип задач, которые решаются с их помощью. Именно этот механизм использует интерпретатор команд sh при построении конвейера для последовательной обработки данных. Для передачи данных между порожденными процессами в этом случае используется программный канал, создаваемый при помощи системного вызова pipe.  [37]

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

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

Деревья процессов обычно формируются при выполнении программ на языке Ада и программ, написанных на других языках, в которых имеется семантика, ориентированная на работу с многими задачами. Следовательно, модель, построенная в гл. Программа на языке Ада начинает выполнение как один процесс. Запуск новой задачи представляется на нижнем уровне как создание порожденного процесса. Так как любая задача на языке Ада может породить одну или несколько других задач ( либо может не породить ни одной), результатом этих действий является дерево процессов. Задача на языке Ада не может завершиться до тех пор, пока не будут завершены ( или удалены) все порожденные ею задачи. Следовательно, когда программа на языке Ада завершает выполнение, мы уверены, что завершены все процессы, включая корневой процесс. Заметим, что, если мы проходим путь от корневого узла этого дерева до любого узла листа, мы встречаем на своем пути процессы, имеющие все более короткое время жизни.  [40]

Объясним, почему локальная куча SRO распределяется для стеков SRO при использовании порожденных процессов. При выполнении в одном частном контексте родитель может породить более одного процесса. Более того, порядок создания и завершения в этом контексте порожденных процессов не может быть определен во время компиляции. Следовательно, слежение за стеками SRO, связанными с активизированными порожденными процессами, требует особой стратегии управления кучей. Таблица объектов в стеке SRO процесса-родителя не может использоваться для отслеживания этих процессов.  [41]

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

43 Структура и состав компонентов системы ИНМОС. [43]

Компиляторы в ИНМОС создают образ процесса таким образом, что он делится на процедурный сегмент, сегмент данных и стек, что позволяет создавать реентерабельные программы. Поэтому несколько процессов в системе могут одновременно выполнять одну копию программы. Изначально процесс создается при запуске системы, затем порождение процессов происходит по системному вызову FORK. Процесс, выполняющий вызов FORK, называется порождающим, а созданный процесс - порожденным. Порожденное множество процессов имеет древовидную структуру, при этом используются понятия отец, сын, брат. Порожденный процесс наследует все файлы, открытые его отцом, Сын будет иметь отцовский текущий каталог и управляющий терминал. Работа процесса заключается в выполнении некоторой программы - выполняемого файла. Процесс может сменить выполняемый им файл.  [44]

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



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