
- •Введение
- •Эволюция ос.
- •Классификация ос.
- •Краткий обзор архитектуры Windows.
- •Основные системные файлы Windows 95, nt, 2000.
- •Средства аппаратной поддержки управления памятью.
- •Сегментная организация памяти.
- •Страничная или сегментно-страничная организация памяти.
- •Механизмы управления памятью Windows.
- •Раздел 4. В него загружаются ядро Windows nt и драйверы устройств. Этот раздел полностью защищен и по чтению, и по записи. Регионы в адресном пространстве.
- •Системные переменные и операционные системы.
- •Передача физической памяти региону.
- •Механизм выделения страниц физической памяти.
- •Выделение физической памяти под программный код.
- •Атрибуты защиты страниц.
- •Стек потока.
- •Стек потока под Windows 95, 98.
- •Функции компилятора для контроля стека.
- •Кучи (Heaps).
- •Особенности кучи в Windows 95, Windows nt.
- •Структура арены.
- •Рассмотрим функции работы с кучей.
- •Удаление кучи.
- •Выделение блока памяти в определённой куче.
- •Освобождение блока кучи.
- •Дополнительные кучи Win32 процесса.
- •Создание дополнительных куч для эффективного управления памятью.
- •Локальный доступ. Создание дополнительных куч для локализации доступа.
- •Файлы проецируемые в память (фпвп).
- •Проецирование в память exe и dll файлов.
- •Совместное использование статических данных несколькими экземплярами exe и dll модулей.
- •Иерархия функций работы с памятью.
- •Объекты kernel32.Dll.
- •Процессы.
- •Структуры данных процесса.
- •Структура блока pdb.
- •Блок kprocess.
- •Блок переменных окружения (peb).
- •Переменная ядра, связанная с процессами.
- •Последовательность действий, выполняемых функцией CreateProcess.
- •Потоки.
- •Основные функции для работы с потоками.
- •Управляющие структуры ос для работы с потоками.
- •Описание структур управления потоками.
- •Управление потоками.
- •Лекция № 11
- •Функции Win32 связанные с планированием.
- •Учёт квантов времени.
- •Сценарий планирования.
- •Поток простоя.
- •Динамическое повышение приоритета потока.
- •Планирование потоков в системах с симметричной мультипроцессорной системой (smp).
- •Синхронизация.
- •Синхронизация потоков без использования объектов синхронизации.
- •Синхронизация потоков.
- •Критические секции.
- •Работа потока с несколькими критическими секциями.
- •Синхронизация объектов.
- •События со сбросом вручную.
- •События с автоматическим сбросом.
- •Модули.
- •Структура imte.
- •Структура modref.
- •Файлы. Формат pe файла.
- •Особенности ре формата:
- •Заголовок ре файла.
- •Основные секции исполняемого файла.
- •.Idata bfc0847d .Text jmp dword ptr [00040042 … call 00014408 (Вызов GetMessage) Прикладная программа
- •Импортирование ре файлов.
- •Эскпорт ре файлов.
- •Лекция № 15
- •Ресурсы ре файла.
- •Базовые поправки ре файла.
- •Файловые системы.
- •Загрузочный сектор.
- •Особенности ntfs.
- •Новые возможности ntfs.
- •Структура ntfs на диске.
- •Кластеры.
- •Главная таблица файлов.
- •Структура файловых ссылок.
- •Записи о файлах.
- •Индексация имён файлов.
- •Битовая карта.
- •Восстанавливаемость ntfs.
- •Журнал транзакций.
- •Записи контрольной точки.
- •Восстановление данных в ntfs.
- •Проход повтора.
- •Проход отмены.
- •Отказоустойчивость ntfs.
- •Словарь терминов.
Объекты kernel32.Dll.
Объекты kernel32 являются ключевыми структурами данных ОС и находятся в куче, которой владеет kernel32. Например, в Windows 95,98 около 17 объектов, в Windows 2000 около 26 объектов. Примеры объектов:
объект-процесс
объект-поток
объект-файл
объект-файл проецируемый в память
объект-семафор
объект-событие
объект-mutex
объект-почтовый слот
объект-сокет
объект-именованный программный канал
Такая структура как модули не является объектом ядра. Каждый объект ядра начинается с заго-ловка. Он состоит из нескольких полей.
Тип объекта. Заносится постоянная, характеризующая тип объекта. В зависимости от типа объекта интерпретируются другие поля.
Счётчик ссылок на объект. Определяет сколько раз программный код обращается к объекту. Когда оно станет равно 0, то ОС удаляет объект.
Процессы.
Процесс – есть субъект владения. Процесс владеет памятью, то есть своим ВАП. Владеет дескрипторами файлов, которые прикладная программа может использовать для чтения записи, владеет потоками, списками модулей, dll, которые необходимы процессу для работы. Процесс не представляет исполнение программного кода. За выполнение программного кода отвечают потоки. Каждый процесс связан с файлом на диске. Но файл становится процессом только тогда, когда загружен в память на выполнение.
Для работы с процессом ОС создаёт структуру базы данных процесса. Эта база данных PDB. EPROCESS – управляющая структура (идентификатор).
Однозначно сослаться на него можно с помощью дескриптора процесса и идентификатора процесса. Дескриптор – это индекс в таблице дескрипторов процесса, а указателем на процесс является сожержимое таблицы процесса.
TD
PDB
1
2
Идентификатор процесса является указателем на базу данных процесса. Функции Win32 для работы с процессами.
CreateProcess(…) – создаёт новый процесс.
ExitProcess(…) – завершает процесс с уведомлением всех подключенных dll.
TerminateProcess(…) – завершает процесс без уведомления подключенных dll.
GetProcessTimes(…) – получает временные параметры процесса. Определяет сколько времени в режиме ядра, а сколько в пользовательском режиме. В Windows 95, 98 функция не поддерживается.
GetCurrentProcess(…) – можно получить дескриптор текущего процесса.
GetCurrentProcessId(…) – можно получить идентификатор текущего процесса.
GetExitCodeProcess(…) – возвращает код завершения процесса.
GetCommandLine(…) – возвращает указатель на командную строку, переданную текущему процессу, то есть можно получить входные параметры с помощью неё.
GetEnvironmentString(…) – возвращает адрес блока переменных окружения.
и так далее.
Также смотри MSDN.
Структуры данных процесса.
EB – Environment Block
PEB
TEB
Адресное
пространство
процесса
PDB
Блок процесса
Win32
пространство
Таблица дискрипторов
TDB
PEB – блок укружения процесса.
TEB – блок окружения потока.
TDB – база данных потока.
PDB – база данных процесса.
PDB или EProcess содержат данные, необходимые ОС для управления процессом и указатели на некоторые дополнительные структуры.
Например, каждый процесс состоит из одного или нескольких потоков, поэтому PDB имеет ссылку на TDB, которое имеет ссылку на базу данных второго потока. Для каждого процесса, выполняющего Win32 приложения процесс подсистемы среды Win32.
Файл csrss.
В дополнение к PDB создаётся параллельно аналогичная структура данных. В PDB имеется указатель на блок данных, который необходим исполнительной системе, работающего в режиме ядра, то есть в Win32k.sys. Кроме того информация, которая активно используется не только ОС, но и конкрентным приложением вынесена в блок PEB (адресное пространство пользователя).
Лекция № 9