Читайте также:
|
|
Каждый процесс в Windows представлен блоком процесса, создаваемого исполнительной системой, который называется EProcess. В этом блоке содержатся указателя на некоторые другие структуры данных.
Так, у каждого процесса есть один или более обязательных потоков, которые представлены также блоками описания EThread.
Для каждого процесса, выполняющегося в Windows, процесс CSRSS.exe поддерживает в дополнение к блоку EProcess другие параллельные структуры данных, необходимые для подготовки процесса на выполнение.
На слайде 22 показаны основные структуры процесса и соответственно потока, относящегося к процессу.
Содержимое блока EProcess следующее:
1) блок процесса ядра (KProcess) является указателем на список блоков потока ядра KThread, принадлежащих процессу;
2) идентификатор процесса – уникальный идентификатор для данного образа процесса;
3) блок Cloud(???) – ограничение на использование виртуальной памяти – наборы структур данных, которые существуют в процессе для описания частей виртуального пространства;
4) информация о виртуальной памяти – текущий и максимальный размер виртуальной памяти, а также информация о использовании страничного файла, а также каталога страниц процесса и т.д.
5) LPC порт исключений – служит для канала межпроцессной связи;
6) маркер доступа – объект, описывающий профиль защиты данного процесса;
7) таблица описателей (адрес таблицы описателей, принадлежащий процессу);
8) блок переменных окружения процесса – содержит информацию об образе исполняемого файла и информацию о динамически выделяемой памяти – куче процесса;
9) блок процесса подсистемы Windows – содержит информацию о процессе для той части подсистемы Windows, которая работает в ходе выполнения процесса в режиме ядра.
Блок EProcess интересен, его можно посмотреть в Windows Debugger.
В общем случае процесс Windows включает компоненты:
1) закрытое виртуальное адресное пространство – диапазон адресов виртуальной памяти, которыми может пользоваться процесс;
2) исполняемую программу – начальный код и данные, которые проецируются на виртуальное адресное пространство процесса;
3) список открытых описателей различных системных ресурсов – семафоров, коммуникационных портов и других объектов;
4) контекст защиты – маркер доступа, идентифицирующий пользователя и группы безопасности, сопоставляемые с процессом;
5) минимум один поток;
6) идентификатор.
Порядок создания процесса на основе функции CreateProcess. Создание процесса осуществляется в Windows вызовом таких функций, как CreateProcess, CreateProcessUser и т.д. и проходит в течение нескольких этапов с использованием следующих компонент ОС: kernel32.dll, исполнительной системы и процесса подсистемы окружения Windows. Поскольку Windows теоретически включает несколько подсистем окружения, поэтому CreateProcess в зависимости от подсистемы окружения выполняется по-разному.
Укрупненно порядок создания процесса следующий:
1) открывается файл образа процесса (.exe), который будет выполняться в процессе;
2) исполнительная система ОС создает объект «процесс»;
3) создается так называемый первичный поток, который будет выполняться в процессе, включающий контекст – код и данные, стек и описатель объекта «поток»
4) подсистема Windows уведомляется о создании нового процесса с потоком в нем;
5) Windows начинает осуществлять выполнение потока;
6) инициализируется адресное пространство виртуальной ОП, туда загружаются необходимые компоненты для выполнения процесса;
7) сообщение планировщику процессов Windows о готовности процесса к выполнению.
Прежде, чем открыть образ для выполнения, ОС выполняет следующие действия:
1) задается класс приоритета процесса;
2) формируется необходимая информация для взаимодействия с компонентой графического интерфейса. В дальнейшем процесс запускается тогда, когда в зависимости от приоритета до него дойдет очередь.
Более подробно этапы создания процесса показаны на слайде 33.
Дата добавления: 2015-07-07; просмотров: 277 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Создание процессов | | | Сущность менеджмента |