Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора димана.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.84 Mб
Скачать

28. Структура процессов

Процессы — это динамические сущности, создаваемые и уничтожаемые при работе ОС. Один процесс создает другой, который, в свою очередь, также может создавать процессы. Структура процессов (process structure) определя­ет, каким образом ОС создает, использует и уничтожает процессы и потоки и какие отношения существуют между данным процессом и другими процессами.

Программисты, пишущие приложения Win32, MS-DOS, OS/2 или POSIX, никогда не имеют дела с базовыми процессами и потоками NT. Win32 и другие подсистемы изолируют программиста от них, создавая собственные среды, в которых программист Win32 видит только процессы Win32, программист POSIX — только процессы POSIX и т. д. Однако, в первую очередь благодаря нижележащим средствам структуры процессов исполнительной системы NT, эти непохожие среды и могут сосуществовать в одной ОС.

Требования подсистем среды

Одной из основных задач подсистемы среды Windows NT является эмуляция API, для которого написаны ее клиентские приложения (например, API Win32 или POSIX). Другая ее основная функция — реализация структуры процессов, требуемой этими клиентами. Ниже приводятся (относящиеся к процессам) сред­ства, необходимые для типичной среды:

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

• Протоколирование и поддержка взаимоотношений между процессами.

• Выполнение операций (как локальных, так и сетевых) от имени клиент­ского процесса.

• Чтение и запись и другие манипуляции с адресным пространством клиентского процесса.

• Остановка клиентского потока, возможно, изменение его контекста и запуск вновь.

• Перехват и обработка исключений, генерируемых клиентскими процессами.

Создание процесса, стоящее первым пунктом в списке, — это самая обыч­ная операция для подсистемы, и она хорошо иллюстрирует использование подсистемами среды базовых сервисов процесса для выполнения своих задач. На рис. 4-11 показано, как соотносятся создание процесса из прикладной программы и создание процесса исполнительной системы NT.

Клиентское приложение, в данном примере приложение Win32, POSIX или OS/2, создает процесс с помощью соответствующих API своей среды. За­прос на создание процесса передается через средство передачи сообщений исполнительной системы NT соответствующему серверу, который обращается к диспетчеру процес­сов NT для создания базового процесса.

После создания базового процесса NT диспетчер процессов возвращает описатель объекта-процесса. Подсистемы среды принимают этот описатель и создают подходящие возвращаемые значения для клиентских приложений. На рис. 4-12 показано, что именно возвращают различные подсистемы.

Между получением описателя от диспетчера процессов и возвратом результата клиентскому приложению подсистема сре­ды должна проделать некоторую дополнительную работу. В частности, подси­стемы снова обращаются к диспетчеру процессов, чтобы создать поток для нового процесса.

Рис. 4-11. Создание процесса.

Как показано на рис. 4—12, разные среды ОС возвращают при создании процесса разные результаты. Кроме того, ОС различаются принятыми в них правилами и соглашениями по управлению процессами. Одно из фундамен­тальных различий между поддерживаемыми в Windows NT средами ОС связано с тем, поддерживают ли они многопоточные процессы. Win32 и OS/2, напри­мер, допускают многопоточные процессы, тогда как POSIX, MS-DOS и 16-раз­рядная Windows — нет.

Подсистемы среды различаются и тем, какие существуют в них отношения между процессами. Например, POSIX и OS/2 объединяют свои процессы в иерар­хии, или деревья процессов (process trees). И та и другая создают начальный про­цесс, который порождает так называемые дочерние процессы, (child process). До­черний процесс, в свою очередь, может создать собственные дочерние процессы. Все процессы, кроме начального, имеют родителя, от которого наследуют неко­торые ресурсы и характеристики.

Как POSIX, так и OS/2 используют соотношения между клиентскими про­цессами для управления последними. Например, при завершении процесса POSIX или OS/2 система завершает все его дочерние процессы. Более того, совместимая с POSIX ОС поддерживает другие типы соотношений между про­цессами, включая группы процессов (process groups) — объединения взаимосвя­занных процессов и сессии (sessions) — объединения групп процессов. Для сес­сий и групп процессов системы POSIX обеспечивается детализированная се-

Рис. 4-12. Возврат после создания процесса.

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

Помимо различий в группировании процессов и в поддержке многопоточности, подсистемы среды различаются правилами создания новых процес­сов. В табл. 4-4 показаны некоторые различия между структурами процессов для трех сред ОС, поддерживаемых Windows NT.

Таблица 4-4. Семантика создания процессов

Windows (32-разрядная)

POSIX

OS/2

Функция API

CreateProcess()

Fork()

DosExecPgm()-

Иерархия

Не поддерживает

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

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

процессов

формального соотно­

создается как по­

здается как пото­

шения родитель-по­

томок вызываю­

мок вызывающего

томок

щего процесса

процесса

Наследование

Копирует для дочер­

Копирует для по­

Копирует для по­

него процесса все опи­

томка файловые

томка все описате­

сатели объектов,от­

дескрипторы

ли файлов, каналов

крытые с атрибутом

родителя

и семафоров роди­

наследования

теля, которые были

открыты с правами

наследования

Инициализация

Инициализирует

Инициализирует

Инициализирует

адресного

адресное простран­

адресное простран­

адресное простран­

пространства

ство процесса испол­

ство потомка, копи­

ство потомка

няемой программой

руя адресное прост­

исполняемой

ранство родителя

программой

Идентифика­

Возвращает описатель

Возвращает иденти­

Возвращает иденти­

ция процесса

нового процесса

фикатор процесса

фикатор процесса

нового потомка

нового потомка

(если потомок

выполняется

асинхронно)

Потоки

Создает один поток

Создает один поток,

Создает один поток

и поддерживает

но не поддерживает

и поддерживает

многопоточность

многопоточность

многопоточность

Иерархии процессов, инициализация адресного про­странства и идентификация процессов различны в разных средах. Хотя неко­торые различия кажутся небольшими, диспетчер процессов должен поддержи­вать все среды одинаково хорошо и обеспечить существование различных структур процессов без конфликтов между ними.