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

Архитектура Windows

Как вы уже знаете в операционной системе Windows есть 2 режима работы: пользовательский и режим ядра. При этом сама операционная система состоит из подсистем. В настоящее время Windows поддерживает две подсистемы: подсистему для Windows приложений и подсистему для Linux приложений. В будущем возможно появление и других подсистем, так как разработчики Mikrosoft разработали технологию, которая облегчает им добавлять различные подсистемы.

Чтобы лучше понять архитектуру Windows я подготовил такой рисунок:

архитектура Windows

При запуске Windows приложения идет обращение к «Подсистеме Windows«, а уже от туда идет обращение к «Исполнительной системе«, которая запустит процесс для этого приложения.

Microsoft также разработали «Подсистему для Linux» (WSL). Для этого в режим ядра поместили два драйвера: Lxss.sys и Lxcore.sys. Эти драйвера эмулируют ядро Linux. А также, в пользовательском режиме работает специальный менеджер — LX Manager. Этот менеджер обрабатывает приложения для Linux.

Когда вы запускаете Linux приложение, например bash.exe, то идет обращение через LX Manager к драйверам эмулирующим ядро Linux. И уже это ядро запускает и обслуживает данный процесс.

То-есть для Windows приложений существует «Подсистема Windows» в пользовательском режиме и «Исполнительная система» в режиме ядра. А для Linux приложений существует LX Manager в пользовательском режиме и специальные драйвера в режиме ядра.

Помимо «Исполнительной системы» и драйверов эмулирующих работу ядра Linux в режиме ядра работают:

  • драйвера устройств или приложений, которые являются исполняемыми файлами с расширением .sys;
  • ядро операционной системы;
  • HAL — прослойка между ядром (или драйверами) и оборудованием (системной платой).

Ядро

В системе Windows ядро не выполняет все задачи, которые выполняются в режиме ядра. Ядру помогает «Исполнительная система«. Подробнее про неё будет написано в следующей статье. А пока посмотрим чем занимается само ядро.

Ядро состоит из набора функций Ntoskrnl.exe, которые являются фундаментальными в операционной системе. Эти функции используются компонентами исполнительной системы.

А также ядро поддерживает работу с оборудованием, например работу с прерываниями и процессором. И ещё ядро следит за синхронизацией процессоров в многопроцессорной системе.

С другим оборудованием ядро работает через HAL.

HAL

HAL — слой абстрагирования от оборудования. Он представляет собой загружаемый модуль режима ядра hal.dll, и является прослойкой между ядром и оборудованием. Под оборудованием я подразумеваю системную плату или платы расширения, а не периферию. Так драйвера принтеров работают напрямую с принтерами, а не через HAL.

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

Для Windows x86 включена пара библиотек HAL, но загружается одна в зависимости от типа системной платы:

  • halacpi.dll — платы с поддержкой acpi, но без поддержки apic;
  • halmacpi.dll — платы с поддержкой acpi и apic.

Для Windows x64 существует только один образ hal:

  • hal.dll — платы с поддержкой x64 всегда поддерживают acpi и apic.

Windows поддерживает расширения hal — это дополнительные библиотеки, которые могут загружаться при наличии конкретного оборудования, запрашивающего эти библиотеки. Например:

  • HalExtPL080.dll — расширение для контроллера DMA PL080;
  • HalExtIntcLpioDMA.dll — для некоторых платформ intel с пониженным энергопотреблением.

Создание расширений HAL требует сотрудничества с компанией MicroSoft. В связи с этим расширения снабжаются цифровой подписью.


Вернуться к оглавлению

Сводка
Общая архитектура Windows
Имя статьи
Общая архитектура Windows
Описание
В этой статье рассматривается архитектура Windows в общих чертах. В следующих уроках рассмотрим каждый элемент архитектуры более подробно

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *