Операционные системы (ОС)

advertisement
Построение практикума по операционным
системам на основе 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
Первые версии Windows имели микроядерный дизайн,
основанный на микроядре Mach
Схема ОС с микроядерной архитектурой.
Архитектура более поздних версий системы микроядерной уже не является.
Различные маршруты выполнения вызовов
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
Связь пространства имен объектов и пространства имен
файловой системы.
Реализация процеcсов и потоков
1. Отличие процесса от программы
2. Процесс базируется на двух независимых концепциях:
• Владение ресурсами (память, файлы, семафоры, порты …)
• Поток (thread) исполняемых команд или просто поток. Понятие
потока определяется текстом программы и текущим состоянием,
которое отражает динамику исполнения и подлежит сохранению при
переключении потоков.
Реализация процеcсов
Блок управления процессом (PCB) реализован в виде набора связанных
структур, главная из которых называется блоком процесса EPROCESS.
Создание процессов в ОС Windows
Обычно процесс создается другим процессом вызовом
Win32-функции CreateProcess (см. рис.).
Реализация потоков
Контекст потока. Переключение контекстов
В типичном случае переключение контекста требует
сохранения и восстановления следующих данных:
• счетчика программы (program counter);
• регистра состояния процессора;
• содержимого остальных регистров процессора;
• указателей на стек ядра и пользовательский стек;
• указателя на адресное пространство, в котором
выполняется поток (каталог таблиц страниц процесса).
Структура CONTEXT (определена в файле WinNT.h).
Функции GetThreadContext и SetThreadContext.
Выполнение кода
пользователя
Восстановление
контекста
Работа hardware
Выполнение кода ОС
Поток 1
Работа hardware
Исполнение
Готовность
Выполнение кода
пользователя
Поток 2
Ожидание
Готовность
Исполнение
Выполнение кода ОС
Прерывание
Сохранение
контекста
Обработка Планирование
прерывания
Пример цепочки операций при переключении контекстов
Реализация потоков
Подобно процессам, каждый поток имеет свой блок
управления, реализованный в виде набора структур, главная
из которых ETHREAD показана на рис.
Реализация потоков
Создание потока инициируется Win32-функцией
CreateThread, которая находится в библиотеке Kernel32.dll.
Этапы создания потока
Состояния потоков
Каждый новый процесс содержит по крайней мере один
поток, остальные потоки создаются динамически. Потоки
составляют основу планирования и могут находиться в
одном из состояний (см. рис.).
Состояния потоков
Переход потоков из одного состояния в другое можно
«увидеть» с помощью консоли «производительность»
Рис. Переход потока из состояния ожидания (5) в
состояние готовности (1)
Синхронизация
Race conditions, взаимоисключение, критические секции
Использование переменной-замка в сочетании со
спинблокировкой
while(lock);
lock = 1;
Команда Test-and-Set (проверить и установить)
while(lock);
lock = 1;
While(Test_and_Set(lock));
Семейство Interlocked-функций.
InterlockedCompareExchange, InterlockedExchangeAdd …
Адаптивные семафоры и мьютексы и их реализация
Синхронизация в ядре
• запрет прерываний (повышение IRQL уровня),
• захват спинблокировки,
• проблема тупиков,
• синхронизация при «высоких» IRQL
Планирование
Вытесняющая (preemptive) многозадачность, вытеснение
ядра системы
Алгоритмы планирования
• приоритетное планирование в сочетании с алгоритмом
RR …
• слой абстрагирования приоритетов динамическое
повышение приоритетов …
• поощрение интерактивных потоков
Планирование реального времени
Диспетчеризация, переключение контекстов
Планирование в условиях многопроцессорности
Управление памятью
Наличие двух адресных пространств и трансляция
(связывание) адреса
Управление памятью
Наличие двух адресных пространств и трансляция
(связывание) адреса
Рис. Трансляция адреса с использованием ассоциативной памяти и
двухуровневой таблицы страниц.
Управление памятью
Виртуальная память
Управление памятью
Рабочие наборы и обработка страничных нарушений
(page faults)
Рис. Наблюдение за размером рабочего набора процесса
и количеством страничных ошибок.
Управление памятью
Отдельные аспекты функционирования менеджера памяти
• Локализация страниц в памяти
• Копирование при записи (Сopy-On-Write )
• Контроль процессом памяти другого процесса.
Файловая система
Файлы и объекты, имеющие файловый интерфейс
Синхронный и асинхронный ввод-вывод
Методы выделения дискового пространства
Поиск в каталоге
Файловая система
Файлы и объекты, имеющие файловый интерфейс
Синхронный и асинхронный ввод-вывод
Методы выделения дискового пространства
Поиск в каталоге
Монтирование и связывание … образование циклов
Файловая система
Совместный доступ к файлам
… синхронизация доступа
Файловая система
Производительность
Особенности кэширования в ОC Windows
Рис. Поведение счетчика «сбросов данных» кэша.
Файловая система
Целостность файловой системы
Журналирование
Поддержка нескольких файловых систем
Безопасность
Система управления доступом
Модели защищенности
Дискреционный и ролевой доступ
Пример графа
доступа
Пример матрицы
доступа
Безопасность
Система управления доступом
Пример проверки прав доступа к
защищенному объекту
Безопасность
Политика безопасности
Аутентификация пользователя
Аудит системы защиты
Недопустимость повторного использования объектов
Защита от внешнего навязывания
Сложные сценарии настройки контекста пользователя
Благодарю за внимание
Коньков Константин Алексеевич (K_Konkov@mail.ru)
к.ф.-м.н., доцент
Московский физико-технический институт, г. Москва
Материал выступления базируется на книге
Коньков К.А. Устройство и функционирование ОС
Windows. Практикум к курсу «Операционные системы».
Издательство "Интуит.ру". 2008 г.
Download