- •Введение
- •Эволюция ос.
- •Классификация ос.
- •Краткий обзор архитектуры 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.
Процессы поддержки системы
Процессы сервисов
Юзерские приложения
Подсистемы окружения
DLL-подсистемы
Win32
Пользовательский
режим
Исполнительная
система
Ядро Драйверы устройств
Уровень
абстрагирования от оборудования HAL
Поддержка окон и
графики
Все ОС делятся на два режима: пользовательский и режим защиты. Часть ОС находится в пользовательском режиме (кольцо 3), а часть в режиме ядра (кольцо 0). В основном, в режиме защиты, в ОС существует процесс обработки входа в систему:
идентификация пользователя – определение имени пользователя;
аунтификация пользователя – определение пароля пользователя;
авторизация пользователя – определение действий, которые пользователь может выполнить в системе.
Например, Windows 3.х, 9х является вырожденной ОС, так как в ней предусмотрена только идентификация.
Процессы сервиса – сервисные функции: менеджер задач, SQL-сервер. Пользовательские приложения бывают пяти типов: Win32, Win 3.x, MS-DOS, POSIX, OS/2.
Подсистема окружения – это окружения ОС, позволяющие на компьютерах с ОС запускать приложения разных типов. Например, в Windows NT есть три подсистемы: Win32, POSIX, OS/2.
DLL-подсистемы Win32. Назначение: транслировать документированные функции в соответ-ствующие недокументированные функции исполнительной системы и ядра.
Исполнительная система – управляет памятью, процессами и потоками, обеспечивает защиту и взаимодействие между процессами.
Ядро. Ядро содержит низкоуровневые функции ОС: планирование потоков, диспетчеризацию прерываний и исключений. Обеспечивает синхронизацию работы процессов.
Драйверы устройств. Драйверы аппаратных устройств, сетевые драйверы, драйверы файловой системы.
Уровень абстрагирования от оборудования HAL. Изолирует ядро, драйверы и исполнительную систему от специфики оборудования на данной аппаратной платформе.
Поддержка окон и графики. Реализация графического пользовательского интерфейса.
Основные системные файлы Windows 95, nt, 2000.
ntoskrnl.exe - исполнительная система и ядро
hal.dll - уровень абстрагирования от оборудования
win32k.sys - часть подсистемы win32, работающий в режиме ядра.
kernel32.dll, user32.dll, gdi32.dll - основные dll системы win32.
Средства аппаратной поддержки управления памятью.
Основная задача – преобразование логического (линейного) адреса в физический.
1. DOS. Логический адрес состоит из двух составляющих: из 16-разрядного сегмента и 16-разрядного смещения.
сегмент
смещение
:
Например. 5720 : 1А3В
В процессоре 8086 20-разрядный адрес. Получение физического адреса: сегментная составляющая сдвигается на 4 разряда влево (это равносильно умножению на 16). К смещению слева добавляется 0000 и затем числа складываются.
сегмент 0000
0000 смещение
Например. 57200
+ 01A3B
58C3B
Таким образом, можно адресовать в DOS FFFF:FFFF или 1Мб + 64Кб – 16.
Только с появлением 80286 появилась возможность работы с верхней памятью (HMA). В DOS вся память делится на смежные блоки:
0
М
////// SD
M
////////
Z
B
D
MCB (Memory Control Block). Каждый блок начинается с 16-байтного заголовка. MZ
M - занято
Z - свободно
В заголовке указывается размер каждого блока в параграфах и имя программы, которая является владельцем этого блока. Если в качестве имени указана SC значит это системный код, если SD, то системные данные. Как правило SD является первым блоком в MCB. Первый байт каждого заголовка подблока начинается с символа, который определяет тип системных данных:
B - буферы ввода/вывода (в config.sys это BUFFERS= )
D - драйверы
F - системная таблица файлов (FILES= )
S - системные стеки прерываний (STACKS= )
L - структура последнего диска в системе (LASTDRIVE= )
PSP (размер блока в параграфах)
