6.Объекты ядра. Процессы, потоки и модули в Win32.
Объекты kernel32.dll.
Объекты kernel32 являются ключевыми структурами данных ОС и находятся в куче, которой владеет kernel32. Например, в Windows 95,98 около 17 объектов, в Windows 2000 около 26 объектов. Примеры объектов: объект-процесс, объект-поток, объект-файл, объект-файл проецируемый в память, объект-семафор, объект-событие, объект-mutex, объект-почтовый слот, объект-сокет, объект-именованный программный канал.
Такая структура как модули не является объектом ядра. Каждый объект ядра начинается с заголовка. Он состоит из нескольких полей.
Тип объекта. Заносится постоянная, характеризующая тип объекта. В зависимости от типа объекта интерпретируются другие поля.
Счётчик ссылок на объект. Определяет, сколько раз программный код обращается к объекту. Когда оно станет равно 0, то ОС удаляет объект.
Модули Win32.
Модули – это версия в памяти кода данных и ресурсов исполняемого файла или dll. В каждом процессе имеется модуль для ехе файла, каждая dll – это модуль.
Если два или более процесса обращаются к одной dll они используют один и тот же модуль. Точно также, когда запущены 2 копии процесса, они используют один и тот же модуль.
Информация о модулях хранится в базе данных модуля. В Windows 95, 98, NT база данных модуля фактически представляет собой заголовок исполняемого файла.
При работе с модулями Win32 использует дескриптор модуля HMODULE.
GetModuleHandle(…) – получает дескриптор модуля, виртуальный адрес с которого загружается ехе или dll. Например для всех процессов, работающих под Windows 95, 98 это 00400000h.
База данных модуля находится в адресном пространстве процесса, кроме того, для оперативной работы с модулем W32 создаёт копию базы данных своей системной кучи.
При работе с модулями возникают две проблемы:
Проблема защиты информации, то есть создание закрытого адресного пространства для каждого процесса.
Для оперативной работы ОС надо знать список всех загруженных модулей.
Эти проблемы решаются с помощью двух структур IMTE (Internal Module Table Entry) и MODREF – она поддерживает собственный список модулей для каждого процесса. И та и другая структуры находятся в системной куче ядра.
Рассмотрим структуру IMTE.
таблица модулей IMTE
pModuleTableArray
Начало таблицы модулей хранится в pModuleTableArray. Как только новый процесс или dll создаются, то kernel32 создаёт структуру IMTE, ищет свободный элемент в таблице модулей и записывает в него указатель на структуру IMTE. ОС сама следит за тем, чтобы не произошло заполнение таблицы модулей.
- Средства аппаратной поддержки управления памятью в микропроцессорах Intel.
- 0000 Смещение
- Стек потока под управлением Windows nt (2000).
- Кучи. Кучи в Windows nt (2000).
- 5. Файлы, проецируемые в память.
- 6.Объекты ядра. Процессы, потоки и модули в Win32.
- Структура modref.
- Основные функции для работы с потоками.
- 7. Распределение времени между потоками. Классы приоритета. Уровни приоритета. Относительный уровень приоритета потока.
- Классы и уровни приоритета.
- Функции Win32 связанные с планированием.
- 8. Учет квантов времени в Windows. Управление величиной кванта. Сценарии планирования процессорного времени.
- Сценарий планирования.
- Поток простоя.
- 9. Динамическое повышение приоритета потока.
- 10 Синхронизация потоков.
- 11. Динамически подключаемые библиотеки (dll). Явная и неявная загрузка dll.
- 12. Обработка сообщения в ос Window.
- 13. Системная очередь аппаратного ввода сообщений.
- 14. Работа с окнами в ос Windows. Классы окон. Z-порядок окон. Описание окон в ос Windows.
- 15. Существующие форматы исполняемых файлов. Формат pe-файла.
- Особенности ре формата:
- Заголовок ре файла.
- Основные секции исполняемого файла.
- Прикладная программа
- 16. Методы отслеживания изменений файловой системы
- 17. Файловая система fat. Структура системной области и области данных в fat.
- Загрузочный сектор.
- 18. Файловая система ntfs. Структура главной файловой таблицы (mft). Атрибуты файла ntfs. Резидентные и нерезидентные атрибуты.
- Особенности ntfs.
- Структура ntfs на диске.
- Атрибуты файла.
- 19. Структура больших файлов и каталогов в ntfs. Индексация файлов в ntfs.
- 20. Восстанавливаемость ntfs. Протоколирование транзакций. Журнал транзакций. Восстановление данных в ntfs.
- Журнал транзакций.
- Восстановление данных в ntfs.