
- •Введение
- •Эволюция ос.
- •Классификация ос.
- •Краткий обзор архитектуры 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.
- •Словарь терминов.
Раздел 4. В него загружаются ядро Windows nt и драйверы устройств. Этот раздел полностью защищен и по чтению, и по записи. Регионы в адресном пространстве.
4 Гб адресное пространство выделяется процессу в момент создания и является практически свободным, незарезервированным. Для того, чтобы воспользоваться адресным пространством нужно выделить регион, обратившись к функции VirtualAlloc(...). Эта функция выделяет регион в адресном пространстве. Надо указать начальный адрес выделяемого региона и его размер. Для чего нужны регионы в адресном пространстве?
- чтобы разместить программный код
- чтобы разместить различные системные структуры
- чтобы разместить структуры данных загружаемого процесса и так далее.
При выделении регионов в ОС учитываются гранулярность выделения ресурсов, другими словами, начало региона должно быть выделено по определенной границе (64 Кб). При выделении региона размер региона всегда кратен размеру страницы. Например, мы запросили 10 Кб, но реально будет 12 Кб. Когда зарезервированный регион становится не нужем, его следует вернуть в общие ресурсы системы с помощью VirtualFree(...). Иногда ОС сама резервирует некоторые регионы адресного пространства в интересах конкретного процесса. Например, для хранения блока окружения процесса.
Лекция № 4
Блоки окружения присутствуют в DOS и Windows.
переменная1 = значение1 \0
.
.
.
переменнаяN = значениеN \0
\0 1\0\ полное имя файла.
PATH=C:\
FILES=
COMSPEC=C:\command.com
Системные переменные и операционные системы.
PSP
Программа
Каждый
блок занимает два блока памяти.
Блок окружения
Кроме того для каждого потока создается блок окружения процесса и потока.
Передача физической памяти региону.
Чтобы получить возможность практического использования зарезервированного региона адресного пространства, необходимо выделить физическую область, а затем увязать ее с регионом. Физическая память всегда выделяется в страничном файле, а не в оперативной памяти, то есть загрузка страниц в ОЗУ - это функции ОС.
VirtualAlloc(..., Mem_Commit) - для выделения региона - это ключ. При передаче физической памяти региону, не обязательно отводить её целому региону. Например, регион 64 Кб можно зарезервировать, а память передать только 2 и 4 странице. Например:
128
200
250
200250128=...
Физическая память выделяется только тем клеткам, которые будут использоваться. Экономия реальной физической памяти.
Механизм выделения страниц физической памяти.
Генерируется
нарушение доступа
Данные загружаются
из СФ в ОЗУ
Поиск выгружаемой
страницы
Запись страницы
в СФ
нет
да
нет
да
нет
да
нет
да
СФ – страничный файл.
Если данные в страничном файле есть. LIFO.
LRU - менеджер виртуальной памяти отмечает и выгружается та страница, к которой наиболее длительное время не было обращения. В основном используется именно этот алгоритм. Каждый процесс может заблокировать страницу в оперативной памяти. Для блокирования страниц используется функция VirtualLock(...). Причем, для того, чтобы какой-либо процесс не приобрел приоритет количество страниц ограничивается тридцати двумя. Блокировка действует только на время работы данного процесса.