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

Исполнительная система

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

Схематично я представляю работу исполнительной системы таким образом:

Исполнительная система

Исполнительная система работает с вводом/выводом, менеджером объектов, управляет процессами и безопасностью. А также она неофициально делится на компоненты, которые отвечают за различные задачи. Теперь давайте пробежимся по основным компонентам этой системы.

Диспетчер Объектов (Object Manager)

Диспетчер Объектов управляет всеми известными объектами в системе. В Windows всё считается объектами: устройства, процессы, потоки, файлы, каталоги, ключи реестра и так далее. У каждого объекта есть заголовок, содержащий информацию об объекте, например имя и тип. Этот диспетчер управляет созданием и удалением объектов. А ещё он обслуживает базу данных объектов и следит за тем, чтобы все объекты имели разные имена. И чтобы в системе не было дублей объектов.

Диспетчер Ввода/Вывода (I/O Manager)

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

Этот диспетчер в режиме ядра управляет обменом данными между приложениями и драйверами. Связь между системой и драйверами в основном осуществляется через пакеты запросов (IRP). Эти пакеты похожи на сетевые и они передаются от операционной системы к драйверам, или от одного драйвера к другому.

Система ввода/вывода Windows состоит из стеков драйверов. Например, драйвер джойстика взаимодействует с USB-концентратором, который взаимодействует с контроллером USB, а уже тот через шину PCI общается с остальным оборудованием. И каждый драйвер в стеке отправляет и получает пакеты IRP.

В диспетчере ввода/вывода есть два под-компонента: диспетчер Plug and Play и диспетчер питания. Они выполняют следующие задачи:

  • Диспетчер Plug-and-Play определяет, какие драйвера необходимы для поддержки конкретного устройства и загружает их. Для некоторых устройств проверка выполняется при загрузке системы, а для других в произвольное время.
  • Диспетчер питания управляет энергопотреблением процессора и остальных устройств. Например он может перевести компьютер в спящий режим или отключить монитор, или сетевую карту и так далее.

Диспетчер процессов и потоков (Process and Thread Manager)

Этот диспетчер управляет процессами и потоками. Он отвечает за создание и завершение процессов и потоков. Он посылает процессам и потокам служебные сигналы. Но он не занимается выделениями ресурсов для процессов и потоков. Также он следит за синхронизацией потоков, так как если потоки из разных процессов попытаются использовать один и тот же ресурс одновременно, могут возникнуть проблемы.

Диспетчер памяти (Memory Manager)

Он управляет памятью, предоставляя её операционной системе. В основном это оперативная память. Этот диспетчер распределяет физическую память и соотносит её с виртуальной. Затем виртуальную память предоставляет процессам. А также поддерживает технологию общей памяти и мапинга файлов в память. И ещё позволяет работать с файлами подкачки. В общем все что связано с памятью выполняет этот компонент.

Монитор безопасности (Security Reference Monitor)

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

Монитор безопасности использует идентификаторы (SID) и списки контроля доступа (DACL), для обеспечения безопасности системы. Следит за соблюдением политик безопасности на локальном компьютере.

Диспетчер Конфигурации (Configuration Manager)

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

Диспетчер транзакций ядра (Kernel Transaction Manager)

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

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

Диспетчер транзакций реализует обработку транзакций в режиме ядра. Он позволяет компонентам режима ядра, например драйверам, выполнять транзакции.


Информация по каждому компоненту на английском языке доступна на официальном сайте.

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

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

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

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