410 likes | 559 Views
Построение практикума по операционным системам на основе MS Windows. Коньков Константин Алексеевич ( K_Konkov@mail.ru ) к.ф.-м.н., доцент Московский физико-технический институт, г. Москва. Аннотация
E N D
Построение практикума по операционным системам на основе MS Windows Коньков Константин Алексеевич (K_Konkov@mail.ru)к.ф.-м.н., доцентМосковский физико-технический институт, г. Москва Аннотация Основные положения учебного курса по операционным системам проиллюстрированы на примере изучения ОС MS Windows. Информация о поведении системы основана на активном использовались ее API, применении разнообразных инструментальных средств, изучении исходных текстов и трассировке ядра.
Методика обучения Практическое освоение ОС MS Windows основано на: • Изучении специализированной и справочной литературы • Разработке небольших модельных консольных приложений • Применении разнообразных инструментальных средств • Изучении исходных текстов ядра • Трассировке ядра системы
Введениев курс ОС – виртуальная, абстрактная машина ОС – менеджер ресурсов История MS-DOS и Windows 3.1, Windows 95, Windows NT … понятие реентерабельности
Упрощенная структура системы ОС Windows
Структура ОС Windows • Основные компоненты ОС Windows реализованы в следующих системных файлах, находящихся в каталоге system32: • hal.dll- уровень абстрагирования от оборудования, • ntoskrnl.exe- исполнительная система и ядро, • ntdll.dll - внутренние функции поддержки и интерфейсы диспетчера системных сервисов с функциями исполнительной системы • win32k.sys - часть подсистемы Win32, работающая в режиме ядра • kernel32.dll, advapi32.dll, user32.dll, gdi32.dll - основные dll подсистемы Win32 • … анализ состава отдельных модулей
Первые версии Windows имели микроядерный дизайн, основанный на микроядре Mach Архитектурные особенности ОС Windows Схема ОС с микроядерной архитектурой. Архитектура более поздних версий системы микроядерной уже не является.
Различные маршруты выполнения вызовов Win32 API
Техника разработки Win32 приложений • Среда Visual C, Win32 API, MSDN • Типы данных, используемые в Win32 приложениях • Unicode • Обработка ошибок
Прерывания, системные вызовы, исключения • Единообразная обработка: фрейм ловушки, сохранение контекста, обобщенный вектор прерываний (Interrupt Dispatch Table) Базовые механизмы
Прерывания, системные вызовы, исключения • Единообразная обработка: фрейм ловушки, сохранение контекста, обобщенный вектор прерываний (Interrupt Dispatch Table) Базовые механизмы
Прерывания, системные вызовы, исключения • Единообразная обработка: фрейм ловушки, сохранение контекста, обобщенный вектор прерываний (Interrupt Dispatch Table) • Синхронность и асинхронность • Приоритеты IRQL, отложенная обработка Базовые механизмы
Объекты – абстрактная концепция, которая активно используется в ОС Windows для регулирования доступа к системным ресурсам. Описатели объектов hSemaphore = CreateSemaphore(NULL, 0, MaxCount, "MySemaphore"); Объекты ядра
Утилита WinObj Именование объектов Связь пространства имен объектов и пространства имен файловой системы.
1. Отличие процесса от программы • 2. Процесс базируется на двух независимых концепциях: • Владение ресурсами (память, файлы, семафоры, порты …) • Поток (thread) исполняемых команд или просто поток. Понятие потока определяется текстом программы и текущим состоянием, которое отражает динамику исполнения и подлежит сохранению при переключении потоков. Реализация процеcсов и потоков
Блок управления процессом (PCB) реализован в виде набора связанных структур, главная из которых называется блоком процесса EPROCESS. Реализация процеcсов
Обычно процесс создается другим процессом вызовом Win32-функции CreateProcess (см. рис.). Создание процессов в ОС Windows
Реализация потоковКонтекст потока. Переключение контекстов • В типичном случае переключение контекста требует сохранения и восстановления следующих данных: • счетчика программы (program counter); • регистра состояния процессора; • содержимого остальных регистров процессора; • указателей на стек ядра и пользовательский стек; • указателя на адресное пространство, в котором выполняется поток (каталог таблиц страниц процесса). • Структура CONTEXT (определена в файле WinNT.h). • Функции GetThreadContext и SetThreadContext.
Восстановление контекста Выполнение кода пользователя Работа hardware Поток 1 Выполнение кода ОС Работа hardware Исполнение Готовность Выполнение кода пользователя Поток 2 Готовность Исполнение Ожидание Выполнение кода ОС Прерывание Сохранение контекста Обработка прерывания Планирование Пример цепочки операций при переключении контекстов
Подобно процессам, каждый поток имеет свой блок управления, реализованный в виде набора структур, главная из которых ETHREAD показана на рис. Реализация потоков
Создание потока инициируется Win32-функцией CreateThread, которая находится в библиотеке Kernel32.dll. Этапы создания потока Реализация потоков
Каждый новый процесс содержит по крайней мере один поток, остальные потоки создаются динамически. Потоки составляют основу планирования и могут находиться в одном из состояний (см. рис.). Состояния потоков
Переход потоков из одного состояния в другое можно «увидеть» с помощью консоли «производительность» Состояния потоков Рис. Переход потока из состояния ожидания (5) в состояние готовности (1)
while(lock); lock = 1; While(Test_and_Set(lock)); Race conditions, взаимоисключение, критические секции Использование переменной-замка в сочетании со спинблокировкой while(lock); lock = 1; Команда Test-and-Set (проверить и установить) Синхронизация Семейство Interlocked-функций. InterlockedCompareExchange, InterlockedExchangeAdd … Адаптивные семафоры и мьютексы и их реализация
запрет прерываний (повышение IRQL уровня), • захват спинблокировки, • проблема тупиков, • синхронизация при «высоких» IRQL Синхронизация в ядре
Планирование • Вытесняющая (preemptive) многозадачность, вытеснение ядра системы • Алгоритмы планирования • приоритетное планирование в сочетании с алгоритмом RR … • слой абстрагирования приоритетов динамическое повышение приоритетов … • поощрение интерактивных потоков • Планирование реального времени • Диспетчеризация, переключение контекстов • Планирование в условиях многопроцессорности
Управление памятью Наличие двух адресных пространств и трансляция (связывание) адреса
Наличие двух адресных пространств и трансляция (связывание) адреса Управление памятью Рис. Трансляция адреса с использованием ассоциативной памяти и двухуровневой таблицы страниц.
Виртуальная память Управление памятью
Рабочие наборы и обработка страничных нарушений (page faults) Управление памятью Рис. Наблюдение за размером рабочего набора процесса и количеством страничных ошибок.
Отдельные аспекты функционирования менеджера памяти Управление памятью • Локализация страниц в памяти • Копирование при записи (Сopy-On-Write ) • Контроль процессом памяти другого процесса.
Файлы и объекты, имеющие файловый интерфейс Синхронный и асинхронный ввод-вывод Методы выделения дискового пространства Поиск в каталоге Файловая система
Файлы и объекты, имеющие файловый интерфейс Синхронный и асинхронный ввод-вывод Методы выделения дискового пространства Поиск в каталоге Монтирование и связывание … образование циклов Файловая система
Совместный доступ к файлам Файловая система … синхронизация доступа
Производительность Особенности кэширования в ОCWindows Файловая система Рис. Поведение счетчика «сбросов данных» кэша.
Целостность файловой системы Журналирование Поддержка нескольких файловых систем Файловая система
Система управления доступом Модели защищенности Дискреционный и ролевой доступ Безопасность Пример графа доступа Пример матрицы доступа
Система управления доступом Безопасность Пример проверки прав доступа к защищенному объекту
Политика безопасности Аутентификация пользователя Аудит системы защиты Недопустимость повторного использования объектов Защита от внешнего навязывания Сложные сценарии настройки контекста пользователя Безопасность
Благодарю за внимание Коньков Константин Алексеевич (K_Konkov@mail.ru)к.ф.-м.н., доцентМосковский физико-технический институт, г. Москва Материал выступления базируется на книге Коньков К.А. Устройство и функционирование ОС Windows. Практикум к курсу «Операционные системы». Издательство "Интуит.ру". 2008 г.