Windows Seven

Основная структура, которая описывает процесс в винде - это блок управления процессом (PCB, Process control block). В состав PCB обычно включают:

- состояние, в котором находится процесс;

- программный счетчик процесса или, другими словами, адрес команды, которая должна быть выполнена для него следующей;

- содержимое регистров процессора;

- данные, необходимые для планирования использования процессора и управления памятью (приоритет процесса, размер и расположение адресного пространства и т. д.);

- учетные данные (идентификационный номер процесса, какой пользователь инициировал его работу, общее время использования процессора данным процессом и т. д.);

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

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

Подобно процессам потоки (нити, threads) в системе описываются структурой данных, которую обычно называют блоком управления потоком (thread control block, TCB).

Блок управления процессом (PCB) реализован в виде набора связанных структур, главная из которых называется блоком процесса EPROCESS. Соответственно, каждый поток также представлен набором структур во главе с блоком потока ETHREAD.

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

Этапы создания процесса.

1. На диске отыскивается нужный файл-образ, после чего создается объект "раздел" памяти для его проецирования на адресное пространство нового процесса.

2. Выполняется обращение к системному сервису NtCreateProcess для создания объекта "процесс". Формируются блоки EPROCESS, KPROCESS и блок переменных окружения PEB. Менеджер процессов инициализирует в блоке процесса маркер доступа (копируя аналогичный маркер родительского процесса), идентификатор и другие поля.

3. В уже полностью проинициализированном объекте "процесс" необходимо создать первичный поток. Это, посредством системного сервиса NtCreateThread, делает библиотека kernel32.dll.

Затем kernel32.dll посылает подсистеме Win32 сообщение, которое содержит информацию, необходимую для выполнения нового процесса. Данные о процессе и потоке помещаются, соответственно, в список процессов и список потоков данного процесса, затем устанавливается приоритет процесса, создается структура, используемая той частью подсистемы Win32, которая работает в режиме ядра, и т.д.

Наконец, запускается первичный поток, для чего формируются его начальный контекст и стек, и выполняется запуск стартовой процедуры потока режима ядра KiThreadStartup. После этого стартовый код из библиотеки C/C++ передает управление функции main() запускаемой программы.

Вывод.

Система управления процессами с Windows Seven и Linux Ubuntu 10.04 во многом похожи. В частности, они оба имеют поддержку механизма легковесных процессов (light-weight processes), или нитей. Они также отвечают за создание и удаление процессов, межпроцессорное взаимодействие, синхронизацию процессов, отслеживают их состояние и т.д. Но у них также есть ряд различий, так например, в системе управления процессами Seven присутствует функция, которая отслеживает информацию об устройствах ввода/вывода, а в Linux такой функции не предусмотрено.

На основание сравнения, которая было сделано в данной курсовой работе, можно сделать вывод, что для конечного пользователя, систем управления процессами в Windows Seven, подходит больше. Она представляет более больший набор функции, чем в Linux, и само управления процессами осуществляется достаточно просто и понятно, что достигается применением диспетчера задач.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: