Архитектура Windows, драйвера, локальная сеть, защита

Информатика
Общая архитектура Windows
Сетевая архитектура Windows
Компьютерная сеть
Передача дискретных данных по линиям связи
Общая характеристика протоколов локальных сетей
Построение локальных сетей на базе коммутаторов
Маршрутизация в локальных сетях
Глобальные сети
Глобальные сети с коммутацией пакетов
Структура ЛС
Накопители на магнитной ленте
Компьютерная алгебра
Электротехника
Расчет электрических цепей
Лабораторные работы
Физика
Решение контрольной
Энергетика
Ядерная энергетика
Математика
Линейная алгебра
Компьютерная алгебра
Математический анализ
Линии второй степени
Пределы
Неопределенный интеграл
Определенный интеграл
Основные правила интегрирования
Множества и отображения
Геометрические преобразования
Тройные интегралы примеры решений
Двойные интегралы примеры решений
Теоретическая механика
Решение задач
Техническое черчение
Примеры выполнения заданий

Понять, что такое драйвер, мы попробуем на типовом примере взаимодействия прикладной программы с драйвером. В NT существует два типа драйверов: драйверы пользовательского режима и драйверы режима ядра. В этом разделе мы рассмотрим, какое программное обеспечение необходимо для разработки и отладки драйверов, а также его установку и настройку Для построения драйверов и связанных с ними прикладных программ используется утилита BUILD, входящая в состав DDK. Необходимо особо отметить, что драйверы предполагается писать на С, а не на C++. Microsoft не поддерживает использование C++ для компонентов ядра.

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

В этой главе рассматриваются ключевые архитектурные особенности и характеристики ОС Windows NT. Эти сведения необходимы для получения представления о назначении различных компонентов ОС, их взаимодействии друг с другом, а также для ознакомления с терминологией При обсуждении архитектуры ОС Windows NT постоянно используются понятия «режим пользователя» и «режим ядра», поэтому стоит определить, что это значит. Защищенный режим является основным и наиболее естественным режимом работы 32-разрядных процессоров. Этот режим был в полной мере реализован в процессорах серии i386 и с тех пор существенных изменений не претерпел. Основные характеристики Windows NT На NT иногда ссылаются как на операционную систему на основе микроядра (microkernel-based operating system). Идея, лежащая в основе концепции микроядра, состоит в том, что все компоненты ОС за исключением небольшой основы (собственно, микроядра) исполняются как процессы пользовательского режима. Базовые компоненты в микроядре исполняются в привилегированном режиме.

Подсистемы окружения операционной системы NT реализованы как системы типа клиент/сервер. Микроядро и Слой Абстрагирования от Оборудования (HAL) изолируют подсистемы Исполнительной Системы от конкретной архитектуры процессора. В исполнительной системе объект (object) - это отдельный образец статически определенного типа объектов, существующий во время выполнения. Поток (thread) - единица исполнения в NT. Поток - это сущность внутри процесса, которую ядро направляет на исполнение, он может принадлежать только одному процессу. NT позволяет нескольким единицам исполнения - потокам - выполняться одновременно, быстро переключаясь между ними. Такое поведение называется многозадачностью (multitasking).

Виртуальное адресное пространство (virtual address space) процесса - это набор адресов, которые могут использовать потоки процесса, оно равно четырем гигабайтам (232 байт), два из которых предназначены для использования программой, а другие два зарезервированы для ОС. NT поддерживает только архитектуру с симметричной мультипроцессорной обработкой - SMP Windows NT разработана со встроенной сетевой поддержкой и включает широкую поддержку сети, интегрированную с системой ввода/вывода и интерфейсом Win32 API. Структура Windows NT Серверы Windows NT называются защищенными подсистемами, так как каждый из них - это отдельный процесс, память которого защищена от других процессов системой виртуальной памяти исполнительной системы NT.

Подсистема среды - это сервер пользовательского режима, реализующий API некоторой ОС Другой тип защищенных подсистем - неотъемлемые подсистемы - это серверы, выполняющие важные функции ОС. Надо отметить, что в разных источниках понятие исполнительной системы интерпретируется по-разному Диспетчер Объектов (object manager), который является вероятно наименее известной из подсистем Исполнительной Системы NT, является также одним из наиболее важных. Система ввода/вывода исполнительной системы - это часть кода ОС, получающая запросы ввода/вывода от процессов пользовательского режима и передающая их, в преобразованном виде, устройствам ввода/вывода. История развития компьютерной графики

Ядро ОС Windows NT реагирует на прерывания и исключения, занимается планированием потоков, сохранением и восстановлением контекстов потоков, направляет потоки на выполнение, выполняет межпроцессорную синхронизацию, предоставляет набор сервисов, элементарных объектов и интерфейсов, используемых компонентами исполнительной системы Слой абстрагирования от оборудования (Hardware Abstraction Layer, HAL) является относительно тонким слоем кода, взаимодействующим напрямую с процессором, шинами и другим оборудованием, и отвечает за обеспечение стандартного интерфейса к платформенно-зависимым ресурсам для ядра, диспетчера ввода/вывода и драйверов устройств. Windows NT имеет двухуровневую модель приоритетов В любое время исполняющийся код будет иметь определенный уровень IRQL. Этот уровень определяет, что позволено делать коду, применяется ли к коду механизм квантования времени планировщика и каковы его взаимосвязи с другими потоками исполнения. Динамические приоритеты и приоритеты реального времени

NT управляет прерываниями путем отображения уровней прерывания контроллера прерываний в собственную аппаратно-независимую таблицу уровней прерываний. Сведения об IRQL показывают, что уровень Dispatch Level связан с операциями планирования Текущий уровень IRQL свой у каждого CPU. Код режима ядра может определить IRQL, в котором он выполняется, посредством вызова функции KeGetCurrentlrql Организация памяти в защищенном режиме работы процессора Как уже отмечалось, системное адресное пространство сильно отличается от пользовательского

Как мы уже отмечали, линейный и виртуальный адреса в NT совпадают Эта возможность позволяет приложениям совместно использовать одну и ту же физическую память (обращаясь при этом к различным виртуальным адресам) Диспетчер Памяти в NT экспортирует единственную структуру для контроля данных - Объект-Секцию Диспетчер памяти использует структуру MDL для описания набора страниц физической памяти, составляющих буфер виртуальной памяти в контексте памяти некоторого процесса. Функции работы с памятью

В исполнительной системе драйвер устройства и файловая система строятся и выглядят для остальной части ОС одинаково Итак, файловый объект - это объект, видимый из режима пользователя, который представляет всевозможные открытые источники или приемники ввода/вывода: файл на диске или устройство (физическое, логическое, виртуальное). Драйверы скрыты от программ пользовательского режима. Устройства (физические, логические и виртуальные), создаваемые и управляемые драйверами, видны программам пользовательского режима как именованные файловые объекты Диспетчер ввода/вывода определяет тип объекта - объект-устройство, используемый для представления физического, логического или виртуального устройства, чей драйвер был загружен в систему. Что происходит при успешном открытии объекта-устройства (неважно, с помощью какой функции: CreateFile() или NtCreateFile()?

Сейчас мы коротко рассмотрим операции установки и управления драйверами Точки входа драйвера Драйвер режима ядра не может использовать API пользовательского уровня или стандартные библиотеки времени исполнения языка С. Можно использовать только функции ядра. Диспетчер ввода/вывода вызывает точку входа DriverEntry при загрузке драйвера Код пользовательского уровня не может напрямую вызвать код режима ядра

Характеристики подсистемы ввода/вывода При осуществлении операции ввода/вывода диспетчер ввода/вывода создает специальный пакет, описывающий эту операцию - пакет запроса ввода/вывода (I/O Request Packet, IRP). Описатель для буфера данных инициатора запроса находится в фиксированной части IRP. NT использует коды функции ввода/вывода для определения конкретной операции ввода/вывода, которая будет иметь место для конкретного объекта-файла. Информация, требуемая для выполнения запроса ввода/вывода, содержится в различных элементах как фиксированной части IRP, так и стека размещения ввода/вывода.

Ранее в качестве одной из характеристик подсистемы ввода/вывода упоминалась ее многоуровневость Стек драйверов обычно создается самими драйверами Подключение фильтра к устройству Сериализация - это процесс выполнения различных операций в нужной последовательности Когда немедленное завершение запроса ввода/вывода в диспетчерской функции невозможно, драйвер должен указать Диспетчеру ввода/вывода, что обработка запроса продолжается.

Всякий раз, когда запрос ввода/вывода удерживается драйвером в течение продолжительного отрезка времени, драйвер должен быть готов к отмене данного запроса. Механизмы синхронизации Спин-блокировка - простейший механизм синхронизации Спин-блокировки абсолютно необходимы в случаях, когда требуется синхронизация кода, работающего на повышенных уровнях IRQL. Ресурсы являются вариантом быстрого мьютекса

Обобщенная таблица механизмов синхронизации Любой исполняемый код, как и код драйвера, работает в контексте некоторого потока. В процессе системной инициализации NT создает несколько потоков в процессе System В случае, когда использование системных рабочих потоков невозможно, драйвер должен создать свой собственный поток. Как говорилось в разделе, посвященном механизмам синхронизации, поток является диспетчерским объектом, который переходит в сигнальное состояние при своем завершении. Одной из основных обязанностей NT является сопряжение компьютера с его периферийными устройствами Драйверам устройств необходим способ сообщения NT, что они хотят, чтобы исполнялась определенная функция, когда процессор получает прерывание, относящееся к их устройствам. Вдобавок к использованию для работы Диспетчера (планировщика) NT, IRQL dispatch_level также используется для обработки Отложенных Вызовов Процедур (DPC)

Сетевая архитектура Windows