Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по конспектам 2011.docx
Скачиваний:
13
Добавлен:
21.04.2019
Размер:
967.53 Кб
Скачать

55. Базовая структура процесса, создание процесса в WinNt

На основе базового процесса строятся множественные прикладные среды.

Модель – клиент-серверная.

Структура процесса

В каждой эмуляции необходимо реализовать процедуры, обслуживающие:

1) создание и завершение каждого из процессов;

2) протоколирование и поддержка взаимодействия процессов; 3)выполнение операций локальных и сетевых от имени клиентского процесса;

4) чтение и запись в АП клиентского процесса;

5) остановка клиентского потока, изменение его контекста и запуск вновь;

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

Любая подсистема выполняет 2 функции: 1) эмуляция среды; 2) поддержание структуры процесса.

Диспетчер процессов обращается к диспетчеру объектов. Диспетчер объектов выдает описатель в API POSIX, который преобразуется в id процесса.

Приложение обращается к средствам API конкретной подсистемы, после чего формируется соответствующий запрос сервера/подсистемы на создание процесса. Средство передачи сообщений используемой системы ОС передает запрос в диспетчер процессов, после взаимодействия диспетчера процессов с диспетчером объектов создается базовый процесс и уже полученный описатель преобразуется в идентификатор.

Cоздание процесса в WinNT

Реализация за пределами исполнительной системы процессами сред.

Базовый набор механизмов, которые могут использовать среды.

В NT – создание процесса == создание объекта.

NT CreateProcess() – семантика создание базового процесса.

1) Создаёт новый процесс (независимый), возвращает описатель объекта.

2) Вызывающий задаёт родителя, от которого новый процесс наследует те параметры, который открыты для …

3) Инициализируется АП нового процесса исполнительной программой или как копия АП родителя.

4) Возвращается описатель объекта NT для нового процесса.

5) не создаётся поток в новом процессе, но поддерживается многопоточность.

Диспетчер процессов NT не запоминает, каким процессом был создан новый процесс.

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

Подсистемы POSIX – от лица клиентского приложения посылает запрос в исполнительную систему NT на создание базового процесса с наследованием от клиента, а не подсистемы. Для этого есть специальный сервис процесса, который позволяет назначать родителя от имени подсистемы.

56. Основные различия управления процессами в различных средах

1. Поддержка многонитиевости (многопоточности). Win32, OS/2 – поддерживает многонитиевость. POSIX – не поддерживает (как и MS-DOS, Win16). Речь идет о семантике управления. В одном случае это интегрируется в систему, в другом привносится.

2. Отношения между процессами:

- механизм наследования в POSIX, OS/2 – поддерживается, в NT – не поддерживается.

- объединение процессов в группы, сессии (объединение групп) – вполне определенная семантика управления.

3. Правила создания новых процессов:

Функция

Win32

POSIX

OS/2

Функция API

CreateProcess()

fork()

DosExecpgm()

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

Нет форм соотношения родитель-потомок

Новый процесс как потомок вызвавшего

Аналогично POSIX

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

Копирует все описатели объекта, открытые с атрибутом наследования

Аналог fork()

Копируются для потомков все описателя каналов, файлов, семафоров и т.д., открытых с атрибутом наследования

Инициализация адресного пространства

Инициализируется исполняемой программой

Наследуется АП родителя

Исполняемая программа

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

Описателем объекта

Идентификатор

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

Потоки

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

Создается один поток, но не поддерживается многопоточность

Создает поток и поддерживает многопоточность