Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Управление процессами в Windows ХР

Поиск

Понятие процесса и потока в Windows ХР четко разграничены. Процессы в данной системе определяют «поле деятельности» для потоков, которые выполняются в их адресном пространстве. Среди ресурсов, с которыми процесс может работать прямо, отсутствует процессор - он доступный только потокам этого процесса. Процесс, тем не менее, может задать начальные характеристики для своих потоков и тем самым повлиять на их выполнение.

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

Рассмотрим базовые составные элементы процесса.

♦ Адресное пространство процесса состоит из набора адресов виртуальной памяти, которые он может использовать. Эти адреса могут быть связаны с оперативной памятью, а могут - с отображенными в память ресурсами. Адресное пространство конкретного процесса недоступное другим процессам.

Процесс владеет системными ресурсами, такими как файлы, сетевые соединения, устройства ввода-вывода, объекты синхронизации и т.п..

♦ Процесс содержит некоторую стартовую информацию для потоков, которые в нем будут создаваться. Например, это информация о базовом приоритете и привязывании к процессору.

♦ Процесс должен содержать хотя бы один поток, который система направляет на выполнение. Без потоков в Windows ХР наличие процессов невозможное.

Структуры данных процесса

Рассмотрим структуры данных, связанные с процессом в Windows ХР. Укажем, что в работе с этими структурами система использует объектную модель. Для исполнительной системы Windows ХР каждый процесс изображает объектом-процессом исполнительной системы (executive process object); его также называют управляющим блоком процеса (ехесutive process block, EPROCESS). Для ядра системы процесс изображают объектом-процессом ядра (kernel process object), который называют блоком процеса ядра (process kernel block, KPROCESS).

В режиме пользователя доступным является блок окружения процеса (process environment block, PEB), который находится в адресном пространстве этого процесса.

Рассмотрим структуры данных процесса подробнее. Укажем, что EPROCESS и KPROCESS, в отличие от РЕВ, доступные только из привилегированного режима.

Управляющий блок процесса содержит такие основные элементы:

♦ блок процесса ядра (КРROCESS);

♦ идентификационную информацию;

♦ информацию об адресном пространстве процесса;

♦ информацию о ресурсах, доступных процессу, и ограничение на использование этих ресурсов;

♦ блок окружения процесса (РЕВ);

♦ информацию для подсистемы безопасности.

К идентификационной информации принадлежат:

♦ идентификатор процесса (ріd);

♦ идентификатор процесса, который создал этот процесс (несмотря на то, что Windows ХР не поддерживает отношения «предок-потомок» автоматически, они могут быть заданы программным путем, т.е. потомок может сам назначить себе предка, задав этот идентификатор);

♦ имя загруженного программного файла.

Блок процесса ядра содержит всю информацию, которая принадлежит к потокам этого процесса:

♦ указатель на цепочку блоков потоков ядра, где каждый блок отвечает потоку;

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

Блок окружение процесса содержит информацию о процессе, которая предназначена для доступа из режима пользователя:

♦ начальный адрес участка памяти, куда загрузился программный файл;

♦ указатель на динамический участок памяти, доступный процессу.

Эту информацию может использовать загрузчик программ или процесс подсистемы Win32.

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

В Win32 АРI принята модель запуска приложения с помощью одного вызова, который создает адресное пространство процесса и загружает у него выполняемый файл.

Отдельно функциональность exec() и fork() в этом АРI не реализована.

Такой вызов реализует функция CreateProcess(). Она не является системным вызовом ОС - это библиотечная функция Win32 АРI, реализованная во всех Win32-совместных системах.

Укажем, что системные вызовы UNIX/POSIX нуждаются в меньшем количестве параметров (как уже отмечалось, folk() не использует ни одного параметра, а exec() - использует три параметра).

Приведем основные шаги создания нового процесса с использованием функции CreateProcess().

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

2. Создают объект-процесс в исполнительной системе Windows ХР. При этом выполняют такие действия:

а) создают и инициализируют структуры данных процесса (блоки EPROCESS, KPROCESS, РЕВ);

б) создают начальное адресное пространство процесса;

в) блок процесса помещают в конец списка активных процессов, которые поддерживает система.

3. Создают начальный поток процесса.

4. После создания начального потока подсистеме Win32 сообщают о новом процессе и его начальном потоке. Это сообщение содержит их дескрипторы (handles) - уникальные числовые значения, которые идентифицируют процесс и поток для средств режима пользователя. Подсистема Win32 выполняет ряд действий после получения этого сообщения (например, задает приоритет по умолчанию) и помещает дескрипторы в свои собственные таблицы процессов и потоков.

5. После посылки сообщения начинают выполнение начального потока (если он не был задан с флажком отложенного выполнения).

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

Завершение процессов

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

Процессы и ресурсы. Таблица объектов процесса

Каждый процесс, как было показано в разделе 2, может пользоваться ресурсами через дескрипторы соответствующих объектов. Открытые дескрипторы объектов есть индексами в таблице объектов (object table), что сохраняется в управляющем блоке процесса. Эта таблица содержит указатели на все объекты, дескрипторы которых открыты процессом. Процесс может получить дескриптор объекта несколькими способами:

♦ создав новый объект;

♦ открыв дескриптор имеющегося объекта;

♦ унаследовав дескриптор от другого процесса;

♦ получив дубликат дескриптора из другого процесса.

Каждый элемент таблицы объектов содержит права доступа соответствующего дескриптора и его режим наследования, который определяет, получат ли процессы, созданные рассматриваемым процессом, копию дескриптора соответствующего объекта. Режим наследования задают во время создания объекта.

Объект может одновременно быть использован несколькими процессами, при этом каждый из них получает уникальный дескриптор, который отвечает этому объекту.



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 169; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.93.61 (0.007 с.)