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

В этой статье рассматривается архитектура 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. В связи с этим расширения снабжаются цифровой подписью.








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



2021-09-16T09:37:35
Администрирование Windows