- •34)Функции операционной системы по управлению оперативной памятью
- •35)Функции операционной системы по управлению файлами
- •36)Функции операционной системы по управлению внешней памятью и распределенными системами.
- •37)Система защиты и система поддержки командного интерпретатора операционной системы.
- •38)Сервисы и дополнительные функции операционной системы.
- •39)Системные вызовы, их основные виды.
- •40)Понятие процесса.
- •41)Состояния процесса.
- •42)Диспетчеризация процессов. Планировщики процессов.
- •43) Создание и уничтожение процесса.
- •44)Управление процессами.
- •45)Методы взаимодействия процессов.
- •46)Коммуникация процессов.
- •47)Клиент-серверная взаимосвязь как один из видов коммуникации процессов.
- •48)Потоки и многопоточное выполнение программ.
- •49)Тупики, методы их обнаружения и предотвращения. Граф распределения ресурсов.
43) Создание и уничтожение процесса.
Создание процесса – одна из основных операций над процессами
Процесс-родитель создает дочерние процессы, которые, в свою очередь, создают другие процессы, тем самым формируя дерево процессов.
Возможны различные подходы к созданию процессов, с точки зрения возможности совместного использования (разделения) ресурсов процессом-родителем и дочерним процессом, с точки зрения возможности их параллельного выполнения и с точки зрения адресации и использования памяти.
Разделение ресурсов. Возможны следующие подходы:
-
Процесс-родитель и дочерние процессы разделяют все ресурсы;
-
Дочерние процессы разделяют подмножество ресурсов процесса-родителя;
-
Процесс-родитель и дочерний процесс не имеют общих ресурсов.
Исполнение. Возможны следующие подходы:
-
Процесс-родитель и дочерние процессы исполняются совместно;
-
Процесс-родитель ожидает завершения дочерних процессов.
Адресация и использование памяти. .Возможны следующие подходы:
-
Адресное пространство дочернего процесса копирует адресное пространство процесса-родителя; у дочернего процесса имеется программа, загруженная в него;
-
Дочерний процесс исполняется в том же пространстве памяти, что и процесс-родитель (облегченный процесс).
В системе UNIX сформулированные вопросы решены следующим образом. fork – системный вызов, создающий новый процесс. Он клонирует память процесса-родителя и создает для дочернего процесса новое виртуальное адресное пространство. После этого выполняется еще один системный вызов - exec (execve) – системный вызов, с целью замены пространства памяти процесса новой программой. Дочерний процесс продолжает выполняться вместо процесса родителя.
При запуске системы создается корневой процесс root.Он, в свою очередь, создает три дочерних процесса: init – инициализация системы; pagedaemon – процесс-демон (процесс, постоянно находящийся в системе до ее перезапуска), управляющей страничной организацией памяти; swapper – процесс, управляющий откачкой и подкачкой. Процесс init после инициализации системы запускает пользовательские процессы. Последние, в свою очередь, могут запускать новые и т.д.
Уничтожение процесса
Это также одна из основных операций над процессами. Как правило, процесс уничтожается (завершается), когда он исполняет заключительный оператор и обращается к ОС для своей ликвидации с помощью системного вызова exit. При этом возможна передача данных от дочернего процесса процессу-родителю – например, через файлы, созданные дочерним процессом. Ресурсы процесса освобождаются операционной системой.
При своей работе процесс-родитель может уничтожить дочерние процессы системным вызовом abort (UNIX). Это возможно в следующих случаях:
-
Дочерний процесс превысил выделенные ему ресурсы;
-
Решения задачи, порученной дочернему процессу, больше не требуется;
-
Происходит выход из процесса-родителя, поэтому дочерние процессы также должны бать завершены. ОС не допускает продолжения исполнения дочернего процесса, если его процесс-родитель уничтожается. Последний феномен носит название каскадное уничтожение процессов.