Современные операционные системы

Современные операционные системы
Процессы и потоки / Новые процессы

Новые процессы




Вдобавок к процессам, созданным во время загрузки, новые процессы могут быть также созданы и после нее. Часто бывает так, что работающий процесс осуществляет системный вызов для создания одного или более новых вспомогательных процессов. Создание новых процессов особенно полезно, когда выполняемая работа может быть легко выражена в понятиях нескольких связанных друг с другом, но в остальном независимых друг от друга взаимодействующих процессов. Например, если для последующей обработки из сети выбирается большой объем данных, наверное, будет удобно создать один процесс для выборки данных и помещения их в общий буфер, чтобы в то же самое время второй процесс забирал элементы данных и проводил их обработку. Также можно ускорить выполнение работы, если на многопроцессорной системе разрешить каждому процессу работать на разных центральных процессорах.

В интерактивных системах пользователи могут запустить программу вводом команды или щелчком (двойным щелчком) на значке. Любое из этих действий дает начало новому процессу и запускает в нем выбранную программу. В основанных на применении команд UNIX-системах с работающей Х-оболочкой новый процесс получает окно, в котором он был запущен. При запуске в Microsoft Windows процесс не имеет окна, но он может создать одно или несколько окон, и в большинстве случаев так и происходит. В обеих системах пользователи могут иметь одновременно открытыми несколько окон, в каждом из которых запущен какой-нибудь процесс. Используя мышь, пользователь может выбрать окно и взаимодействовать с процессом: например, если потребуется, вводить данные.

Последнее событие, приводящее к созданию процесса, применимо только к системам пакетной обработки данных, имеющимся на больших универсальных машинах. Здесь пользователи могут отправлять системе пакетные задания (возможно, с помощью удаленного доступа). Когда операционная система решает, что у нее достаточно ресурсов для запуска еще одного задания, она создает новый процесс и запускает новое задание из имеющейся у нее очереди входящих заданий.

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

В UNIX существует только один системный вызов для создания нового процесса — fork. Этот вызов создает точную копию вызывающего процесса. После выполнения системного вызова fork два процесса, родительский и дочерний, имеют единый образ памяти, единые строки описания конфигурации и одни и те же открытые файлы. И больше ничего. Обычно после этого дочерний процесс изменяет образ памяти и запускает новую программу, выполняя системный вызов execve или ему подобный. Например, когда пользователь набирает в оболочке команду sort, оболочка создает ответвляющийся дочерний процесс, в котором и выполняется команда sort. Смысл этого двухступенчатого процесса заключается в том, чтобы позволить дочернему процессу управлять его файловыми дескрипторами после разветвления, но перед выполнением execve с целью выполнения перенаправления стандартного ввода, стандартного вывода и стандартного вывода сообщений об ошибках.



Полное описание: Новые процессы




С этим описанием рассматриваются следующие темы:


Системные вызовы для управления процессами
Первая группа вызовов в табл. 1.1 предназначена для управления процессами. Начнем рассмотрение системного вызова fork. Вызов fork является единственным существующим в POSIX способом создания нового процесса. Он создает точную копию исходного процесса, включая все дескрипторы файлов, регистры и т. п. После выполнения вызова fork исходный процесс и его копия (родительский и дочерний процессы) выполняются независимо друг от друга. На момент разветвления все их соответствующие переменные имеют одина ... Читать

Завершение процесса
После создания процесс начинает работать и выполняет свою задачу. Но ничто не длится вечно, даже процессы. Рано или поздно новые процессы будут завершены, обычно в силу следующих обстоятельств: 1) обычного выхода (добровольно);. 2) выхода при возникновении ошибки (добровольно); 3) возникновения фатальной ошибки (принудительно); 4) уничтожения другим процессом (принудительно).

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

Иерархии процессов
В некоторых системах, когда процесс порождает другой процесс, родительский и дочерний процессы продолжают быть определенным образом связанными друг с другом. Дочерний процесс может и сам создать какие-нибудь процессы, о)юрмируя иерархию процессов. Следует заметить, что в отличие от растений и животных, использующих половую репродукцию, у процесса есть только один родитель (но нуль, один, два или более детей). В UNIX процесс, все его дочерние процессы и более отдаленные потомки образуют группу пр ... Читать

Оболочка
Операционная система представляет собой программу, выполняющую системные вызовы. Редакторы, компиляторы, ассемблеры, компоновщики и интерпретаторы команд по определению не являются частью операционной системы при всей своей важности и приносимой пользе. Рискуя внести некоторую путаницу, в этом разделе мы коротко рассмотрим и командный интерпретатор UNIX, называемый оболочкой — shell. Не являясь частью операционной системы, оболочка нашла широкое применение как средство доступа ко многим ее функц ... Читать