Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга 1 ОС.doc
Скачиваний:
94
Добавлен:
11.11.2018
Размер:
2.44 Mб
Скачать

3.5 Создание и завершение процессов и потоков

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

3.5.1 Создание процессов

Базовые принципы создания процессов

Процессы могут создаваться ядром системы во время ее инициализации. Например, в UNIX-совместимых системах таким процессом может быть процесс инициализации системы init, в Windows ХР - процессы подсистем среды (Win32 или POSIX). Такое создание процессов, однако, является исключением, а не правилом.

Чаще всего процессы создаются во время выполнения других процессов. В этом случае процесс, который создает другой процесс, называют предком, а созданный им процесс - потомком.

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

Интерактивные и фоновые процессы

Различают два типа процессов с точки зрения их взаимодействия с пользователем.

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

  • Фоновые процессы с пользователем не взаимодействуют непосредственно. Обычно они запускаются во время старта системы и ждут запросы от других приложений. Некоторые из них (системные процессы) поддерживают функционирование системы (реализуют фоновое печатание, сетевые средства и т.п.), другие выполняют специализированные задачи (реализуют веб-сервери, серверы баз данных и т.п.). Фоновые процессы также называют службами (services, в системах линии Windows ХР) или демонами (daemons, в UNIX).

3.5.2. Иерархия процессов

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

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

Таким образом формируется иерархия (дерево) процессов, поскольку потомки могут в свою очередь создавать новых потомков и т.д. В таких системах существует специальный исходный процесс (в UNIX-системах его называют init), с которого начинается построение дерева процессов (его запускает ядро системы). Если предок завершит выполнение процесса перед своим потомком, функции предка берет на себя исходный процесс.

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

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