
- •Введение
- •Эволюция ос.
- •Классификация ос.
- •Краткий обзор архитектуры 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.
- •Словарь терминов.
Механизмы управления памятью Windows.
1) Виртуальная память
2) Работа со стеками
3) Кучи (Heaps)
4) Файлы, проецируемые в память
1) Виртуальное адресное пространство Windows.
Виртуальная память – это совокупность программно-аппаратных средств, позволяющая пользователю составлять программы, размер которых превосходит имеющийся размер ОЗУ.
Для этого виртуальная память решает следующие задачи:
Размещает данные в запоминающих устройствах разного типа, например, часть в ОЗУ, часть на жестком диске.
Перемещает по мере необходимости данные между устройствами разного типа. Например, подгружает нужную часть программы с диска в ОЗУ.
Преобразует виртуальный (линейный) адрес в физический.
Все эти действия используются без участия программиста.
ОЗУ
В Windows NT, 95 каждому процессу предоставляется адресное пространство 4 Гб. Адресное пространство каждого процесса скрыто от других процессов. Каждый процесс получает доступ только к той памяти, которая принадлежит ему. Память других процессов скрыта.
1234567816 – А
1234567816 – В
И А, и В обращаются к ячейкам, которые находятся по различным физическим адресам. С помощью страничной организации одинаковые линейные адреса преобразуются в различные физические. Это достигается за счёт того, что у них разная таблица страниц и отображение страниц.
ОЗУ в виртуальном адресном пространстве выделяется разделами. Выделения разделов различны для различных разделов. Например, в Windows из 4 Гб: 2 Гб программе, а 2 Гб ОС. В Windows 2000 advanced server теоретически можно выделить до 3 Гб. С чем связано такое расположение? Это связано с тем, что Windows NT создавалась под различные платформы, например, в MIPS 4000 так надо. Для работы с ОЗУ.
kernel32.dll
Win32API
пользовательский
ядра
В кольце 0. ntoskrnl.exe - Win NT
vmm.vxd - Win 95, 98
Документированные функции в kernel32.dll. Разбиение адресного пространства на разделы в Windows 95, 98.
FFFF:FFFF
С000:0000
5 Драйверы виртуальных устройств
BFFF:FFFF
8000:0000
4 Win32 модули системные DLL
7FFF:FFFF
0040:0000
3 Win32 процессы
003F:FFFF
0000:1000
2 MS-DOS и 16-битная Windows
0000:0FFF
0000:0000
1 MS-DOS и 16-битная Windows
Разделы 1 и 2 предназначены для совместимости с MS-DOS и 16-битной Windows. Разница в том, что 1 не доступен. При попытке доступа возникает нарушение доступа. Раздел 2 доступен по чтению/записи. Раздел 3 имеет размер 2 Гб - 4 Мб. В нем находится личное адресное пространство процесса. В Win32 никакой другой процесс не имеет доступа к этому разделу. Основной объем данных принадлежащий процессу хранится именно в этом разделе, то есть, если посмотреть заголовок, то адрес любого exe файла для Win 95, 98 будет 0040:0000. В разделе 4 размером 1 Гб Windows 95, 98 хранит данные, доступные всем Win32 процессам. Сюда загружаются kernel32.dll, gdi32.dll, user32.dll. Линейные адреса этого раздела отображаются на одни и те же страницы физической памяти, если сюда записать что-нибудь, то Windows зависнет. В разделе 5, размер которого 1 Гб, находится код ОС, то есть тот код, который находится в кольце 0. Это виртуальные драйверы, низкоуровневые процедуры управления файлами. Этот раздел также доступен всем процессам. Искажение информации в этом разделе грозит краху ОС.
Деление на разделы в Windows NT, 2000.
FFFF:FFFF
8000:0000
7FFF:FFFF
7FFF:0000
0000:FFFF
0000:0000
7FFE:FFFF
0001:0000
4 ОС
3 Для выявления указателей с неправильным значением
2 Адресное пространство процесса
1 Для выявления указателей с неправильным значением
Разделы 1 и 3 предназначены для выявления указателей с неправильным значением. При выявлении неправильного значения ОС генерирует нарушение доступа. Эти разделы "охраняют" разделы 2 и 4.
Раздел 2 - это область размером 2 Гб-128 Кб. Это личное адресное пространство конкретного процесса, причем эта область доступна данному процессу. В этой же области находятся все системные библиотеки пользовательского режима kernel32.dll и user32.dll. Если какой-либо процесс искажает системную dll, то эта ошибка скажется только на этом процессе. Если посмотреть любое exe приложение под Windows NT, Windows 2000, то начальный адрес будет 0001:0000.