
- •Введение
- •Эволюция ос.
- •Классификация ос.
- •Краткий обзор архитектуры 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.
- •Словарь терминов.
Структура блока pdb.
PDB (EPROCESS). Начинается со стандартного заголовка. Состоит из идентификатора объекта и счётчика ссылок на этот объект. Далее идёт ссылка на адрес блока KPROCESS, или ссылка на блок процесса ядра.
Блок процесса ядра содержит информацию необходимую для управления процессом для тех компонентов ОС, которые работают в кольце 0, например, диспетчеру процессов. В блоке PDB затем содержится идентификатор родительского процесса.
Для обычных прикладных программ родительским процессом является explorer.exe. В PDB содержится блок квот – это информация об использовании страничного файла процессом.
Количество страниц данного процесса, которые заблокированы в памяти.
Дескрипторы виртуальных адресов – это структуры, описывающие распределение ВАП.
Указатель на цепочку потоков данного процесса.
Указатель на таблицу дескрипторов.
Указатель на блок переменных окружения PEB.
Ссылка на блок процесса подсистемы Win32PROCESS – содержит дополнительную информацию о процессе, которая необходима подсистеме Win32.
Блок kprocess.
Содержит дополнительную информацию, которая необходима Windows для потоков, а именно:
указатель на каталог страниц процесса.
базовый приоритет по умолчанию: в ОС Windows имеются четыре класса приоритета.
IDLE
NORMAL
HIGH
REAL_TIME
В Windows 95 всем процессам выделяется квант времени процессора 20 мс. В этом блоке ука-зывается суммарное время работы потока в режиме ядра и пользовательского времени.
Блок переменных окружения (peb).
Расположен в пользовательском адресном пространстве.
В Windows 2000 находится по адресу 7FFDF000h. Содержит следующую информацию, необходимую для работы:
Адрес кучи процесса по умолчанию.
Указатель на структуры, описывающий загруженные модули.
IMTE – описывает все загруженные модули всеми процессами.
MODREF – содержит список всех модулей, используемых данным процессом.
Содержит указатель на список файлов, отображённых в памяти, которые используются данным процессом.
Указатель на базу данных среды, которая содержит текущий каталог, область окружения процесса, командную строку.
Указатель на заголовок списка свободного пространства в куче по умолчанию.
Указатель на заголовок связанного списка куч процесса.
Таблицы дескрипторов.
В DOS List OF List – это основная управляющая структура, адрес которой можно получить с помощью соотвествующих прерываний.
Int 52h
Int 21h
MCB
LOL
LastDrive
SFT
PDB
Информация о всех открытых файлах содержится в системной таблице файлов. В простейшем случае системная таблица файлов состоит из пяти записей. В этой таблице содержится информация об устройствах:
CON
AUX
PRN
FILES
В общем случае SFT имеет следующую структуру.
Адрес следующего
блока
Количество
записей
CON
AUX
PRN
FFFFh
Количество
записей
…
SFT содержит список всех открытых файлов.
PSP
JFT
Программный
код и данные
0 0
0
1
1 2
2
строки в таблице SFT
Job
File Table
SFT
CON
AUX
PRN
набор однобайтных
записей
В SFT нельзя создавать больше 255 файлов. Структура записей меняется 53h – 58h.
Таблица дескрипторов.
Таблица дескрипторов содержит не только дескрипторы файлов, но и объектов ядра. Структу-ра таблицы дескрипторов имеет следующий вид.
-
Количество записей
4байта
Флаг 1
8 байт
Объект 1
…
Флаг N
8 байт
Объект N
Первые 4 байта определяют количество записей в таблице дескрипторов (30h). Если таблица заполнена, то Windows создаёт кучу, делая прибавление 10h и так далее, то есть для Windows ограничения в 255 дескрипторов не существует. После количества записей идёт массив 8 байтных структур. Каждая структура состоит из двух полей.
1 поле. Флаг управления доступом к объекту. Назначение флагов различно для различных типов объекта. Например объект – процесс. Флаг – процесс завершён. Следующее DWORD – указатель базы данных соответствующего объекта.