Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по ОС мои.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.82 Mб
Скачать
  1. Процессы Win32. Идентификатор процесса и дескриптор процесса. Объект ядра процесс в Win32. Функции для работы с процессами Таблица дескрипторов процесса.

Процесс – есть субъект владения. Процесс владеет памятью, то есть своим ВАП. Владеет дескрипторами файлов, которые прикладная программа может использовать для чтения записи, владеет потоками, списками модулей, dll, которые необходимы процессу для работы. Процесс не представляет исполнение программного кода. За выполнение программного кода отвечают потоки. Каждый процесс связан с файлом на диске. Но файл становится процессом тогда, когда загружен в память на выполнение.

Для работы с процессом ОС создаёт структуру базы данных процесса. Эта база данных PDB. EPROCESS – управляющая структура (идентификатор).

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

TD

PDB

0

1

2

Идентификатор процесса является указателем на базу данных процесса. Функции Win32 для работы с процессами.

CreateProcess(…) – создаёт новый процесс.

ExitProcess(…) – завершает процесс с уведомлением всех подключенных dll.

TerminateProcess(…) – завершает процесс без уведомления подключенных dll.

GetProcessTimes(…) – получает временные параметры процесса. Определяет сколько времени в режиме ядра, а сколько в пользовательском режиме. В Windows 95, 98 функция не поддерживается.

GetCurrentProcess(…) – можно получить дескриптор текущего процесса.

GetCurrentProcessId(…) – можно получить идентификатор текущего процесса.

GetExitCodeProcess(…) – возвращает код завершения процесса.

GetCommandLine(…) – возвращает указатель на командную строку, переданную текущему процессу, то есть можно получить входные параметры с помощью неё.

GetEnvironmentString(…) – возвращает адрес блока переменных окружения.

PEB

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

TEB

Адресное пространство

процесса

PDB

Блок процесса Win32

Системное адресное

пространство

Таблица дискрипторов

TDB

EB – Environment Block. PEB – блок окружения процесса. TEB – блок окр. потока. TDB – база данных потока. PDB – бд процесса.

PDB или EProcess содержат данные, необходимые ОС для управления процессом и указатели на некоторые доп. структуры.

Блок PDB. Дескрипторы виртуальных адресов – это структуры, описывающие распределение ВАП. Указатель на цепочку потоков данного процесса. Указатель на таблицу дескрипторов. Указатель на блок переменных окружения PEB.

Блок KPROCESS. Содержит доп. информацию: указатель на каталог страниц процесса, базовый приоритет по умолчанию.

Блок переменных окружения (PEB). Расположен в пользовательском адресном пространстве. В Windows 2000 находится по адресу 7FFDF000h. Содержит следующую информацию: Адрес кучи процесса по умолчанию. Указатель на структуры, описывающий загруженные модули. IMTE – описывает все загруженные модули всеми процессами. MODREF – содержит список всех модулей, используемых данным процессом. Содержит указатель на список файлов, которые используются данным процессом. Указатель на базу данных среды, которая содержит текущий каталог, область окружения процесса, командную строку. Указатель на заголовок списка свободного пространства в куче по умолчанию. Указатель на заголовок связанного списка куч процесса.

Таблица дескрипторов.

Таблица дескрипторов содержит не только дескрипторы файлов, но и объектов ядра. Структу-ра таблицы дескрипторов:

Количество записей

4байта

Флаг 1

8 байт

Объект 1

Флаг N

8 байт

Объект N

Первые 4 байта определяют количество записей в таблице дескрипторов (30h). Если таблица заполнена, то Windows создаёт кучу, делая прибавление 10h и так далее, то есть для Windows ограничения в 255 дескрипторов не существует. После количества записей идёт массив 8 байтных структур. Каждая структура состоит из двух полей.

1 поле. Флаг управления доступом к объекту. Назначение флагов различно для различных типов объекта. Например объект – процесс. Флаг – процесс завершён. Следующее DWORD – указатель базы данных соответствующего объекта.

Переменная ядра, связанная с процессами. PsActiveProcessHead. Заголовок списка блоков PDB. CreateProcess(…) открывет ехе файл, который будет выполняться в процессе, то есть PDB. Создаёт первичный поток, то есть стек потока, контекст потока (содержимое всех регистров) и объект поток, то есть TDB.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]