Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС / 1.docx
Скачиваний:
185
Добавлен:
03.06.2014
Размер:
5.4 Mб
Скачать

Вопрос 8

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

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

Разделение ресурсов. Возможны следующие подходы:

Процесс-родитель и дочерние процессы разделяют все ресурсы;

Дочерние процессы разделяют подмножество ресурсов процесса-родителя;

Процесс-родитель и дочерний процесс не имеют общих ресурсов.

Исполнение. Возможны следующие подходы:

Процесс-родитель и дочерние процессы исполняются совместно;

Процесс-родитель ожидает завершения дочерних процессов.

Адресация и использование памяти.Возможны следующие подходы:

Адресное пространство дочернего процесса копирует адресное пространство процесса-родителя; у дочернего процесса имеется программа, загруженная в него;

Дочерний процесс исполняется в том же пространстве памяти, что и процесс-родитель (облегченный процесс).

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

На рис. 8.7 изображено дерево процессов в системе UNIX.Рис. 8.7. Дерево процессов в системе UNIX.

При запуске системы создается корневой процесс root.Он, в свою очередь, создает три дочерних процесса: init – инициализация системы; pagedaemon – процесс-демон (процесс, постоянно находящийся в системе до ее перезапуска), управляющей страничной организацией памяти; swapper – процесс, управляющий откачкой и подкачкой. Процесс init после инициализации системы запускает пользовательские процессы. Последние, в свою очередь, могут запускать новые и т.д.

Уничтожение процесса

Это также одна из основных операций над процессами. Как правило, процесс уничтожается (завершается), когда он исполняет заключительный оператор и обращается к ОС для своей ликвидации с помощью системного вызова exit. При этом возможна передача данных от дочернего процесса процессу-родителю – например, через файлы, созданные дочерним процессом. Ресурсы процесса освобождаются операционной системой.

При своей работе процесс-родитель может уничтожить дочерние процессы системным вызовом abort (UNIX). Это возможно в следующих случаях:

Дочерний процесс превысил выделенные ему ресурсы;

Решения задачи, порученной дочернему процессу, больше не требуется;

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

Виды процессов

По их поведению процессы можно классифицировать как ориентированные на ввод-вывод и ориентированные на вычисления (использование процессора).

Ориентированный на ввод-вывод (I/O-bound) – процесс, который тратит больше времени на ввод-вывод, чем на вычисления.

Ориентированный на использование процессора (CPU-bound) – процесс, который тратит основное время на вычисления.

Соседние файлы в папке ОС