![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Внутреннее устройство процессов. Структуры данных⇐ ПредыдущаяСтр 29 из 29
Каждый процесс в 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.
|