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

редактировать
архитектура семейства операционных систем Windows NT состоит из двух уровней (пользовательский режим и режим ядра ) с множеством разных модулей на обоих этих уровнях.

Архитектура Windows NT, строка операционной Системы, производимые и продаваемые Microsoft, представляют собой многоуровневую структуру, состоящую из двух основных компонентов: пользовательского режима и режима ядра. Это вытесняющая, реентерабельная многозадачная операционная система, которая была разработана для работы с однопроцессорным и симметричным многопроцессорным Компьютеры на базе (SMP). Для обработки запросов ввода / вывода (I / O) они используют управляемый пакетами ввод / вывод, который использует пакеты запросов ввода / вывода (IRP) и асинхронный ввод / вывод. О. Начиная с Windows XP, Microsoft начала выпускать 64-битные версии Windows; до этого существовали только 32-битные версии этих операционных систем.

Программы и подсистемы в пользовательском режиме ограничены с точки зрения того, к каким системным ресурсам они имеют доступ, в то время как режим ядра имеет неограниченный доступ к системной памяти и внешним устройствам. Режим ядра в Windows NT имеет полный доступ к аппаратным и системным ресурсам компьютера. Ядро Windows NT - это гибридное ядро ​​ ; архитектура включает простое ядро ​​, уровень аппаратной абстракции (HAL), драйверы и ряд сервисов (вместе именуемых Executive), которые все существуют в ядре. режим.

Пользовательский режим в Windows NT состоит из подсистем, способных передавать запросы ввода-вывода в соответствующий режим ядра драйверы устройств с помощью диспетчера ввода-вывода. Уровень пользовательского режима Windows NT состоит из «подсистем среды», которые запускают приложения, написанные для многих различных типов операционных систем, и «интегральной подсистемы», которая выполняет специфичные для системы функции от имени подсистем среды. В режиме ядра службы и приложения пользовательского режима не могут получить доступ к критическим областям операционной системы, к которым у них не должно быть доступа.

Исполнительные интерфейсы со всеми подсистемами пользовательского режима имеют дело с вводом-выводом, управлением объектами, безопасностью и управлением процессами. Ядро находится между уровнем аппаратной абстракции и исполнителем, чтобы обеспечить многопроцессорную синхронизацию, поток и планирование и диспетчеризацию прерываний, а также обработку прерываний и диспетчеризацию исключений. Ядро также отвечает за инициализацию драйверов устройств при загрузке. Драйверы режима ядра существуют на трех уровнях: драйверы самого высокого уровня, промежуточные драйверы и драйверы низкого уровня. Модель драйвера Windows (WDM) существует на промежуточном уровне и в основном была разработана для обеспечения двоичной и исходной совместимости между Windows 98 и Windows 2000. Драйверы самого низкого уровня - это либо устаревшие драйверы устройств Windows NT, которые напрямую управляют устройством, либо могут быть аппаратной шиной plug and play (PnP).

Содержание
  • 1 Пользовательский режим
  • 2 Режим ядра
    • 2.1 Исполнительный
    • 2.2 Ядро
      • 2.2.1 Гибридный дизайн ядра
    • 2.3 Драйверы режима ядра
    • 2.4 Уровень абстракции оборудования
  • 3 См. Также
  • 4 Дополнительная литература
  • 5 Примечания и ссылки
  • 6 Внешние ссылки
Пользовательский режим

Пользовательский режим состоит из различных системных процессов и библиотек DLL.

Интерфейс между приложениями пользовательского режима и функциями ядра операционной системы называется «подсистемой среды». В Windows NT может быть несколько из них, каждый из которых реализует свой набор API. Этот механизм был разработан для поддержки приложений, написанных для многих различных типов операционных систем. Ни одна из подсистем среды не может напрямую обращаться к оборудованию; доступ к аппаратным функциям осуществляется путем вызова процедур режима ядра.

Существует три основных подсистемы среды: подсистема Win32, подсистема OS / 2 и Подсистема POSIX.

  • Подсистема среды Win32 может запускать 32-разрядные приложения Windows. Он содержит консоль, а также поддержку текстового окна, завершение работы и обработку жестких ошибок для всех других подсистем среды. Он также поддерживает виртуальные машины DOS (VDM), которые позволяют запускать приложения MS-DOS и 16-бит Windows (Win16 ). в Windows NT. Существует специальный модуль VDM для MS-DOS, который работает в собственном адресном пространстве и эмулирует Intel 80486 с MS-DOS 5.0. Программы Win16, однако, выполняются в Win16 VDM. Каждая программа по умолчанию выполняется в одном и том же процессе, таким образом, используя одно и то же адресное пространство, и Win16 VDM дает каждой программе свой собственный поток для запуска. Однако Windows NT позволяет пользователям запускать программу Win16 в отдельном модуле Win16 VDM, что позволяет программе выполнять многозадачность с вытеснением, поскольку Windows NT вытесняет весь процесс VDM, который содержит только одно работающее приложение. Процесс подсистемы среды Win32 (csrss.exe ) также включает в себя функции управления окнами, иногда называемые «диспетчером окон ». Он обрабатывает события ввода (например, с клавиатуры и мыши), а затем передает сообщения приложениям, которые должны получать этот ввод. Каждое приложение отвечает за отображение или обновление своих окон и меню в ответ на эти сообщения.
  • Подсистема среды OS / 2 поддерживает 16-битные символьные приложения OS / 2 и эмулирует OS / 21. x, но не 32-битные или графические приложения OS / 2, используемые с OS / 2 2.x или новее, только на машинах x86. Для запуска графических программ OS / 2 1.x необходимо установить дополнительную подсистему Windows NT для Presentation Manager. Последней версией Windows NT с подсистемой OS / 2 была Windows 2000; он был удален в Windows XP.
  • Подсистема среды POSIX поддерживает приложения, которые строго написаны либо по стандарту POSIX.1, либо по связанным стандартам ISO / IEC. Эта подсистема была заменена на Interix, которая является частью Windows Services для UNIX. Это, в свою очередь, было заменено Подсистемой Windows для Linux.

Подсистема безопасности имеет дело с токенами безопасности, предоставляет или запрещает доступ к учетным записям пользователей на основе разрешений ресурсов, обрабатывает запросы входа и инициирует аутентификацию входа и определяет, какие системные ресурсы должны быть проверены Windows NT. Он также следит за Active Directory. Служба рабочей станции реализует сетевой перенаправитель , который является клиентской стороной общего доступа к файлам и принтерам Windows; он реализует локальные запросы к удаленным файлам и принтерам, «перенаправляя» их на соответствующие серверы в сети. И наоборот, служба сервера позволяет другим компьютерам в сети получать доступ к общим файловым ресурсам и общим принтерам, предлагаемым локальной системой.

Режим ядра

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

Хотя архитектура x86 поддерживает четыре разных уровня привилегий (пронумерованные от 0 до 3), используются только два крайних уровня привилегий. Программы в пользовательском режиме запускаются с CPL 3, а ядро ​​работает с CPL 0. Эти два уровня часто называют «кольцом 3» и «кольцом 0» соответственно. Такое проектное решение было принято для достижения переносимости кода на платформы RISC, которые поддерживают только два уровня привилегий, хотя это нарушает совместимость с приложениями OS / 2, которые содержат сегменты привилегий ввода-вывода, которые попытка прямого доступа к оборудованию.

Код, работающий в режиме ядра, включает в себя: исполнительную систему, которая сама по себе состоит из множества модулей, выполняющих определенные задачи; ядро ​​, которое предоставляет низкоуровневые сервисы, используемые исполнительной властью; уровень аппаратной абстракции (HAL); и драйверы ядра.

Executive

Службы Windows Executive составляют низкоуровневую часть режима ядра и содержатся в файле NTOSKRNL.EXE. Он занимается вводом-выводом, управлением объектами, безопасностью и управлением процессами. Они разделены на несколько подсистем, среди которых Cache Manager, Configuration Manager, I / O Manager, Local Procedure Call (LPC), Memory Manager, Object Manager, Структура процесса и безопасность. Контрольный монитор (SRM). Сгруппированные вместе компоненты можно назвать исполнительными службами (внутреннее имя Ex). Системные службы (внутреннее имя Nt), т. Е. системные вызовы, также реализованы на этом уровне, за исключением очень немногих, которые вызывают непосредственно на уровень ядра для повышения производительности.

Термин " служба "в этом контексте обычно относится к вызываемой программе или набору вызываемых подпрограмм. Это отличается от концепции «служебного процесса», который представляет собой компонент пользовательского режима, в некоторой степени аналогичный демону в Unix-подобных операционных системах.

Каждый объект в Windows NT существует в глобальном пространстве имен . Это снимок экрана из Sysinternals WinObj.
Object Manager
Object Manager (внутреннее имя Ob) является исполнительным подсистема, через которую должны пройти все другие исполнительные подсистемы, особенно системные вызовы, чтобы получить доступ к ресурсам Windows NT, что по сути делает ее службой инфраструктуры управления ресурсами. Диспетчер объектов используется для уменьшения дублирования функций управления ресурсами объектов в других исполнительных подсистемах, что потенциально может привести к ошибкам и затруднить разработку Windows NT. Для диспетчера объектов каждый ресурс является объектом, независимо от того, является ли этот ресурс физическим (например, файловой системой или периферийным устройством) или логическим ресурсом (например, файлом). Каждый объект имеет структуру или тип объекта, о котором должен знать диспетчер объектов.
Создание объекта - это процесс, состоящий из двух этапов: создание и вставка. Создание вызывает выделение пустого объекта и резервирование любых ресурсов, требуемых диспетчером объектов, таких как (необязательное) имя в пространстве имен. Если создание прошло успешно, подсистема, отвечающая за создание, заполняет пустой объект. Наконец, если подсистема считает инициализацию успешной, она инструктирует диспетчер объектов вставить объект, что делает его доступным через его (необязательное) имя или cookie, называемый дескриптором. С этого момента время существования объекта обрабатывается диспетчером объектов, и подсистема должна поддерживать объект в рабочем состоянии до тех пор, пока диспетчер объектов не получит сигнал от него избавиться.
Дескрипторы - это идентификаторы, которые представляют ссылка на ресурс ядра через непрозрачное значение. Точно так же открытие объекта по его имени подлежит проверке безопасности, но действие через существующий открытый дескриптор ограничено только уровнем доступа, запрошенным при открытии или создании объекта.
Типы объектов определяют процедуры объекта и любые данные, относящиеся к объекту. Таким образом, диспетчер объектов позволяет Windows NT быть объектно-ориентированной операционной системой, поскольку типы объектов можно рассматривать как полиморфные классы, которые определяют объекты. Однако большинство подсистем, за заметным исключением в диспетчере ввода-вывода, полагаются на реализацию по умолчанию для всех процедур типа объекта.
Каждый экземпляр создаваемого объекта сохраняет свое имя, параметры, которые передаются при создании объекта. функция, атрибуты безопасности и указатель на ее тип объекта. Объект также содержит процедуру закрытия объекта и счетчик ссылок, чтобы сообщить диспетчеру объектов, сколько других объектов в системе ссылается на этот объект и, таким образом, определяет, может ли объект быть уничтожен при отправке ему запроса на закрытие. Каждый именованный объект существует в иерархическом объекте пространство имен.
Контроллер кэша
Тесно координируется с диспетчером памяти, диспетчером ввода-вывода и драйверами ввода-вывода, чтобы обеспечить общий кэш для обычного файлового ввода-вывода.. Windows Cache Manager работает с блоками файлов (а не с блоками устройств) для согласованной работы между локальными и удаленными файлами и обеспечивает определенную степень согласованности с отображенными в памяти представлениями файлов, поскольку блоки кеша являются особый случай отображенных в память представлений и кеша пропускает особый случай ошибок страницы.
Configuration Manager
Реализует системные вызовы, необходимые для реестра Windows.
I / O Manager
Позволяет устройствам обмениваться данными с подсистемами пользовательского режима. Он преобразует команды чтения и записи пользовательского режима в пакеты IRP чтения или записи, которые передает драйверам устройств. Он принимает запросы ввода-вывода файловой системы и преобразует их в вызовы, специфичные для устройства, и может включать низкоуровневые драйверы устройств, которые напрямую управляют оборудованием для чтения ввода или записи вывода. Он также включает диспетчер кеша для повышения производительности диска за счет кэширования запросов чтения и записи на диск в фоновом режиме.
Локальный вызов процедур (LPC)
Обеспечивает порты связи между процессами с семантикой соединения. Порты LPC используются подсистемами пользовательского режима для связи со своими клиентами, исполнительными подсистемами для связи с подсистемами пользовательского режима и в качестве основы для локального транспорта для Microsoft RPC.
Memory Manager
Управляет виртуальной памятью, контролирует защиту памяти и подкачку памяти из физической памяти во вторичную память и реализует универсальный распределитель физической памяти. Он также реализует синтаксический анализатор исполняемых файлов PE, который позволяет отображать или отключать исполняемый файл за один атомарный шаг.
Начиная с Windows NT Server 4.0, Terminal Server Edition, диспетчер памяти реализует так называемое пространство сеанса, диапазон памяти режима ядра, которая подвержена переключению контекста так же, как память пользовательского режима. Это позволяет нескольким экземплярам подсистемы Win32 режима ядра и драйверов GDI работать бок о бок, несмотря на недостатки в их первоначальной конструкции. Каждое пространство сеанса совместно используется несколькими процессами, вместе именуемыми «сеансом».
Чтобы обеспечить определенную степень изоляции между сеансами без введения нового типа объекта, связь между процессами и сеансами обрабатывается службой безопасности Монитор ссылок, как атрибут объекта безопасности (токена), и его можно изменить только при наличии специальных привилегий.
Относительно простой и нерегулярный характер сеансов объясняется тем, что они не были часть первоначального дизайна и должна была быть разработана с минимальным нарушением основной линии третьей стороной (Citrix Systems ) в качестве предварительного условия для их продукта терминальный сервер для Windows NT, называется WinFrame. Однако, начиная с Windows Vista, сеансы, наконец, стали полноценным аспектом архитектуры Windows.
Последняя правка сделана 2021-06-12 00:55:36
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте