Иллюстрированный самоучитель по программированию систем защиты

Общая архитектура Windows NT

  • Понятия "пользовательский режим" и "режим ядра"

    В этой главе рассматриваются ключевые архитектурные особенности и характеристики ОС Windows NT. Эти сведения необходимы для получения представления о назначении различных компонентов ОС, их взаимодействии друг с другом, а также для ознакомления с терминологией, используемой в данной книге.
  • Некоторые понятия защищенного режима

    Защищенный режим является основным и наиболее естественным режимом работы 32-разрядных процессоров. Этот режим был в полной мере реализован в процессорах серии i386 и с тех пор существенных изменений не претерпел. | Защищенный режим 32-разрядных процессоров реализует поддержку следующих механизмов:
  • Основные характеристики Windows NT

    ОС NT характеризуется поддержкой следующих механизмов: | модель модифицированного микроядра; | эмуляция нескольких ОС; | независимость от архитектуры процессора; | объектная модель; | многопоточность; | вытесняющая многозадачность; | виртуальная память с подкачкой страниц по требованию;
  • Структура Windows NT

    Всю операционную систему Windows NT можно разделить на следующие части (см. рис. 2): | защищенные подсистемы (protected subsysterns), работающие в пользовательском режиме, тогда как остальная часть ОС исполняется в режиме ядра; | исполнительная система (executive); | ядро (kernel);
  • Защищенные подсистемы

    Серверы Windows NT называются защищенными подсистемами, так как каждый из них – это отдельный процесс, память которого защищена от других процессов системой виртуальной памяти исполнительной системы NT.
  • Исполнительная система (The Executive)

    Надо отметить, что в разных источниках понятие исполнительной системы интерпретируется по-разному. Например, в документации DDK исполнительная система – это совокупность компонентов, исполняющихся в привилегированном режиме – режиме ядра, и формирующих законченную ОС за исключением пользовательского интерфейса.
  • Система приоритетов

    Windows NT имеет двухуровневую модель приоритетов (см. рис. 4). | Приоритеты высшего уровня (уровни запросов прерываний – Interrupt ReQuest Level – IRQL) управляются аппаратными и программными прерываниями. | Приоритеты низшего уровня (приоритеты планирования) управляются планировщиком. | Рис. 4.
  • Архитектура памяти

    Организация памяти в защищенном режиме работы процессора | Ранее мы кратко рассмотрели работу процессоров серии 1386 и выше в защищенном режиме, использующем организацию памяти, при которой используются два механизма преобразования памяти: | сегментация; | разбиение на страницы.
  • Унифицированная модель драйвера

    В исполнительной системе драйвер устройства и файловая система строятся и выглядят для остальной части ОС одинаково. Более того, именованные каналы и сетевые редиректоры рассматриваются, как файловые системы, и реализованы в виде соответствующих драйверов.
  • Установка, удаление, запуск и установка драйвера

    Сейчас мы коротко рассмотрим операции установки и управления драйверами. Драйверы в NT поддерживают динамическую загрузку и выгрузку. Информация о драйвере, такая, как его имя, тип, местонахождение, способ загрузки и др.
  • Структура драйвера. Ограничения, налагаемые на драйвер.

    Точки входа драйвера | При написании любого драйвера необходимо помнить четыре основных момента: | возможные точки, входа драйвера; | контекст, в котором могут быть вызваны точки входа драйвера; | последовательность обработки типичных запросов;
  • Точка входа DriverEntry

    Диспетчер ввода/вывода вызывает точку входа DriverEntry при загрузке драйвера. В NT может существовать только один экземпляр драйвера, вне зависимости от числа физических устройств, контролируемых им.
  • Передача данных от приложения к драйверу. Асинхронная обработка.

    Код пользовательского уровня не может напрямую вызвать код режима ядра. Для этого существуют специальные прерывания. Одним из них является прерывание 2Е – вызов системного сервиса. Диспетчер ввода/вывода обрабатывает вызовы системных сервисов специальным образом (см. рис. 9).
  • Пакет запроса ввода/вывода (IRP)

    Характеристики подсистемы ввода/вывода | В предыдущем разделе мы рассмотрели схему использования системных сервисов, то есть прохождение запроса ввода/вывода от приложения к драйверу и обратно. Компонентом ОС, отвечающим за реализацию этой схемы, является Диспетчер ввода/ вывода.
  • Диспетчерские точки входа драйвера

    Информация, требуемая для выполнения запроса ввода/вывода, содержится в различных элементах как фиксированной части IRP, так и стека размещения ввода/вывода. Рассмотрим эти элементы. Структура поля Parameters в стеке размещения ввода/ вывода зависит от кода главной и второстепенной функции ввода/вывода.
  • Многоуровневая модель драйверов

    Ранее в качестве одной из характеристик подсистемы ввода/вывода упоминалась ее многоуровневость. Что это такое? | NT позволяет выстраивать драйверы в соответствии с некоторой функциональной иерархией. При этом, например, одни драйверы имеют своей единственной целью обмен данными с некоторым физическим устройством. Что это за данные и что с ними делать, такие драйвера не знают.
  • Сериализация

    Сериализация – это процесс выполнения различных операций в нужной последовательности. | Функция драйвера для обработки запроса ввода/вывода может быть вызвана из различных потоков различных процессов. Неэксклюзивное устройство может быть одновременно открыто несколькими прикладными программами, каждая из которых может послать один и тот же запрос в одно и то же время.
  • Рабочие потоки

    Необходимость в создании рабочих потоков | Любой исполняемый код, как и код драйвера, работает в контексте некоторого потока. Мы пока не обсуждали способы, с помощью которых драйвер может создать собственный поток, поэтому предполагается, что поток, в котором выполняется код драйвера, принадлежит некоторой прикладной программе.
  • Введение в обработку прерываний

    Одной из основных обязанностей NT является сопряжение компьютера с его периферийными устройствами. Подобно почти всем современным операционным системам, NT может динамически объединять программы драйверов устройств для управления устройствами.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.