Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsii_OS_pervaya_tret.docx
Скачиваний:
4
Добавлен:
15.04.2019
Размер:
3.1 Mб
Скачать

Тема 14. Реализация некоторых подсистем ос Windows

Структура ОС Windows

Пространство ядра ОС Windows семейства NT

  • Уровеньабстрагированияоборудования (Hardware Abstraction Layer, hal.dll)

  • Драйверы

  • Графический интерфейс пользователя (win32k.sys)

  • Ядро NTOS (ntoskrnl.exe)

Уровень абстрагирования оборудования

  • Позволяет абстрагироваться от физических устройств, упростить перенос ОС на другие платформы, собрать платформо-зависимый код в одном месте

  • Реализует службу идентификации устройств

  • Управляет устройствами и DMA

  • Предоставляет службы времени

  • Предоставляет низкоуровневые примитивы синхронизации

Уровень ядра

  • Планирование и синхронизация потоков

  • Предоставление объекта управления — структуры данных для управления процессом

  • Предоставление диспетчерского объекта — структуры данных для диспетчеризации

Исполнительный уровень

  • В основном переносимый

  • Реализует «диспетчеры»:

    • Диспетчер объектов

    • Диспетчер ввода-вывода

    • Диспетчер процессов

    • Диспетчер памяти

    • Диспетчер кэширования

    • Монитор безопасности

    • Диспетчер конфигурации

Драйверы

  • Являются динамически связываемыми библиотеками

  • Диспетчер I/O формирует маршрут потока данных — стек устройства

  • Драйвер-фильтр — драйвер, не управляющий устройством, а только преобразующий передаваемые данные

  • Драйвер мини-порта — драйвер, организующий работу с псевдо-устройством, реализующим общую функциональность набора устройств

Модель работы

Модель работы — процесс

  • Процесс содержит виртуальное адресное пространство, описатели объектов ядра, потоки, общие для потоков ресурсы

  • Процесс имеет ProcessEnvironmentBlock (PEB): список загруженных модулей, область памяти, рабочий каталог, данные для управления «кучами», …

Модель работы — поток

  • Поток — абстракция ядра для планирования

  • Поток имеет приоритет, привязку к процессору (affinity) и ThreadEnvironmentBlock (TEB): данные пользовательского режима, ThreadLocalStorage, ...

Системные вызовы для управления процессами

  • CreateProcess()

  • CreateThread()

  • CreateFiber()

  • ExitProcess()

  • ExitThread()

  • ExitFiber()

  • SwitchToFiber()

Создание нового процесса CreateProcess():

  • Преобразование имени файла из строки Win32 в строку WinNT и поиск файла

  • Все параметры передаются функции NtCreateUserProcess() в режиме ядра

  • NtCreateUserProcess() обрабатывает параметры, открывает образ программы, и создаёт объект сегмента

Создание нового процесса

  • Диспетчер процессов создаёт объект процесса

  • Диспетчер памяти создаёт адресное пространство (инициализация каталогов страниц и дескрипторов виртуальных адресов)

  • Создаётся таблица описателей, в которую копируются наследуемые описатели родителя

  • Диспетчер памяти инициализирует структуры данных рабочего набора

  • Представленные объектом сегмента части образа программы отображаются на адресное пространство

  • Исполнительные уровень инициализирует PEB

  • В созданном процессе выделяется виртуальная память для передачи параметров

  • В таблице описателей процессов выделяется новый идентификатор

  • Создаётся объект потока, его стек и TEB, инициализируется контекст

  • Объект процесса добавляется в список процессов

  • NtCreateUserProcess() возвращает управление в пространство пользователя с новым процессом, содержащим один поток в состоянии «приостановлен»

  • Если NtCreateUserProcess() возвращает ошибку, то проверяется, не принадлежит ли процесс к другой подсистеме или предназначен для работы под отладчиком

  • В случае успеха NtCreateUserProcess(), процесс регистрируется в csrss.exe

  • Применяются ограничения безопасности процесса

  • Вызывается NtResumeThread() для запуска потока

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]