Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Лекция № 10 Драйверы устройств в MS Windows.ppt
Скачиваний:
11
Добавлен:
07.08.2024
Размер:
425.98 Кб
Скачать

Системное программное обеспечение

Лекция № 10 «Драйверы устройств в MS Windows»

Структура Windows NT

Внутренний мир Windows NT (здесь и далее под Windows NT имеется в виду вся линейка - NT4, 2000, XP, 2003 и т.д.) разделен на две части с четко обозначенными границами, как в плане адресного пространства, так и в плане прав и обязанностей кода в этом адресном пространстве выполняющегося.

Сразделением адресного пространства все на удивление просто. Все четыре, доступных в 32-х разрядной архитектуре, гигабайта виртуальной памяти разделены на две равные части. Нижняя половина отдана процессам пользовательского режима, верхняя принадлежит ядру.

Сразделением прав и обязанностей немного сложнее.

Структура Windows NT

К пользовательским относятся следующие процессы:

Процессы поддержки системы (System Support Processes) - например, процесс входа в систему Winlogon (реализован в \%SystemRoot%\ System32\Winlogon.exe);

Процессы сервисов (Service Processes) - например, спулер печати (реализован в \%SystemRoot%\System32\spoolsv.exe);

Пользовательские приложения (User Applications) - бывают пяти типов: Win32, Windows 3.1, MS-DOS, POSIX (обеспечивает совместимость UNIX-программ) и OS/2;

Подсистемы окружения (Environment Subsystems) - поддерживается три подсистемы окружения: Win32 (реализована в \%SystemRoot%\ System32\Csrss.exe), POSIX (реализована в \%SystemRoot%\System32\ Psxss.exe), OS/2 (реализована в \%SystemRoot%\System32\os2ss.exe).

Начиная с Windows XP поддержка POSIX и OS/2 прекращена.

Структура Windows NT

Ядро состоит из следующих компонентов:

Исполнительная система (Executive) - управление памятью, процессами и потоками и др.;

Ядро (Kernel) - планирование потоков, диспетчеризация прерываний и исключений и др. (реализовано в \%SystemRoot%\System32\Ntoskrnl.exe);

Драйверы устройств (Device Drivers) - драйверы аппаратных устройств, сетевые драйверы, драйверы файловых систем;

Уровень абстрагирования от оборудования (Hardware Abstraction Layer, HAL) - изолирует три вышеперечисленных компонента от различий между аппаратными архитектурами (реализован в \ %SystemRoot%\System32\Hal.dll);

Структура Windows NT

Подсистема поддержки окон и графики (Windowing And Graphics System) - функции графического пользовательского интерфейса (Graphic User Interface, GUI) (реализована в \%SystemRoot%\ System32\Win32k.sys).

Структура Windows NT

Хотя процессоры семейства Intel x86 поддерживают четыре уровня привилегий (называемых кольцами защиты), в Windows используются только два:

0-ой для режима ядра

3-ий для режима пользователя.

Это связано с поддержкой других RISC (Reduced Instruction Set Computing — вычисления с сокращённым набором команд) процессоров (alpha, mips – RISC процессоры фирм DEC и MIPS Technologies), в которых реализовано только два уровня привилегий.

Windows NT4.0 поддерживала эти архитектуры, но начиная с Windows 2000 осталась поддержка только x86.

Структура Windows NT

Процессы пользовательского режима:

имеют свои защищенные адресные пространства,

потоки этих процессов выполняются в непривилегированном режиме процессора (называемом пользовательским или третьим кольцом защиты),

не могут выполнять привилегированные команды процессора,

имеют ограниченный и опосредованный доступ к системным данным и к системному адресному пространству,

не имеют прямого доступа к оборудованию.

Процессы пользовательского режима рассматриваются как потенциально опасные с точки зрения стабильности системы. Их права ограничиваются. И всяческие попытки выйти за пределы этих ограничений жестко пресекаются.

Структура Windows NT

Правда, в процессе своей работы, потоки этих процессов, вызывая системные сервисы, переходят в режим ядра, но в этом случае полностью теряют контроль над своим выполнением до возвращения обратно в режим пользователя.

Компоненты ядра:

разделяют единое адресное пространство (верхние два гигабайта),

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

могут выполнять все, в том числе и привилегированные команды процессора,

имеют неограниченный и прямой доступ к системным данным и коду,

имеют прямой, или через HAL, доступ к оборудованию.

Структура Windows NT

Код ядра (собственно это и есть сама система) рассматривается как полностью доверяемый (т.е. этому коду доверено делать все, что он пожелает). Поэтому, будучи загруженным в системное адресное пространство, драйвер становится частью системы и на него не накладываются какие-либо ограничения.

Таким образом пользовательские приложения отделены от собственно операционной системы.

Если поставить целью написать сколь-нибудь серьезное приложение, для работы которого необходим доступ к внутренним функциям или структурам данных системы, то возникнет множество ограничений, преодолеть которые можно только разместив свой код в системном адресном пространстве.

Драйверы устройств в Windows NT

Из документированных возможностей существует только один способ это сделать - установить драйвер устройства. Способ этот относительно прост, надежен, а главное, полностью обеспечен поддержкой со стороны самой операционной системы.

С момента своего появления до сегодняшнего дня концепция драйвера беспрерывно эволюционировала и процесс этот до сих пор не закончился.

Один из моментов­ эволюции концепции драйвера — это эволюция драйвера как легко­ заменяемой части операционной системы.

Как отдельный и довольно независимый модуль драйвер сформировался не сразу. Да и сейчас многие­ драйверы практически неотделимы от операционной системы.