stringtranslate.com

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

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

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

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

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

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

Пользовательский режим

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

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

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

Подсистема среды Win32

COMMAND.COM, работающий в NTVDM

Подсистема среды Win32 может запускать 32-разрядные приложения Windows. Она содержит консоль, а также поддержку текстового окна, выключение и обработку жестких ошибок для всех других подсистем среды. Она также поддерживает виртуальные машины DOS (VDM), которые позволяют запускать приложения MS-DOS и 16-разрядные приложения Windows ( Win16 ) на Windows NT. Существует определенная MS-DOS VDM, которая работает в своем собственном адресном пространстве и которая эмулирует Intel 80486, работающий под управлением MS-DOS 5.0. Однако программы Win16 запускаются в Win16 VDM. Каждая программа по умолчанию запускается в одном и том же процессе, таким образом используя одно и то же адресное пространство, а Win16 VDM дает каждой программе свой собственный поток для запуска. Однако Windows NT позволяет пользователям запускать программу Win16 в отдельном Win16 VDM, что позволяет программе быть многозадачной с упреждением, поскольку Windows NT будет упреждать весь процесс VDM, который содержит только одно запущенное приложение. Процесс подсистемы среды Win32 ( csrss.exe ) также включает в себя функциональность управления окнами, иногда называемую « менеджером окон ». Он обрабатывает события ввода (например, с клавиатуры и мыши), затем передает сообщения приложениям, которым необходимо получить этот ввод. Каждое приложение отвечает за отрисовку или обновление собственных окон и меню в ответ на эти сообщения.

Подсистема среды OS/2

Подсистема среды OS/2 поддерживает 16-битные символьные приложения OS/2 и эмулирует OS/2 1.x, но не 32-битные или графические приложения OS/2, используемые с OS/2 2.x или более поздними версиями, только на компьютерах x86. [3] Для запуска графических программ OS/2 1.x необходимо установить подсистему Windows NT Add-On Subsystem for Presentation Manager. [3] Последней версией Windows NT, в которой была подсистема OS/2, была Windows 2000; ее поддержка прекращена с выходом Windows XP. [4] [5]

Подсистема среды POSIX

Подсистема среды POSIX поддерживает приложения, которые строго написаны либо по стандарту POSIX.1, либо по связанным стандартам ISO / IEC . Эта подсистема была заменена Interix , которая является частью Windows Services for UNIX . [4] Она, в свою очередь, была заменена Windows Subsystem for Linux .

Подсистема безопасности

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

Режим ядра

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

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

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

Исполнительный

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

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

Каждый объект в Windows NT существует в глобальном пространстве имен . Это скриншот из Sysinternals WinObj.
Менеджер объектов
Диспетчер объектов (внутреннее название Ob ) — это исполнительная подсистема, через которую все другие исполнительные подсистемы, особенно системные вызовы, должны проходить, чтобы получить доступ к ресурсам Windows NT, что по сути делает его службой инфраструктуры управления ресурсами. [11] Диспетчер объектов используется для уменьшения дублирования функциональности управления объектными ресурсами в других исполнительных подсистемах, что может потенциально привести к ошибкам и усложнить разработку Windows NT. [12] Для диспетчера объектов каждый ресурс является объектом, независимо от того, является ли этот ресурс физическим ресурсом (например, файловой системой или периферийным устройством) или логическим ресурсом (например, файлом). Каждый объект имеет структуру или тип объекта , о котором должен знать диспетчер объектов.
Создание объекта — это процесс, состоящий из двух фаз: создание и вставка . Создание вызывает выделение пустого объекта и резервирование любых ресурсов, требуемых диспетчером объектов, таких как (необязательное) имя в пространстве имен. Если создание прошло успешно, подсистема, ответственная за создание, заполняет пустой объект. [13] Наконец, если подсистема считает инициализацию успешной, она дает указание диспетчеру объектов вставить объект, что делает его доступным через его (необязательное) имя или cookie-файл, называемый дескриптором . [14] С этого момента жизненный цикл объекта обрабатывается диспетчером объектов, и подсистема должна поддерживать объект в рабочем состоянии до тех пор, пока диспетчер объектов не подаст сигнал об его удалении. [15]
Дескрипторы — это идентификаторы, которые представляют ссылку на ресурс ядра через непрозрачное значение. [16] Аналогично, открытие объекта через его имя подлежит проверкам безопасности, но действие через существующий открытый дескриптор ограничено только уровнем доступа, запрошенным при открытии или создании объекта. [ необходима цитата ]
Типы объектов определяют процедуры объектов и любые данные, специфичные для объекта. Таким образом, диспетчер объектов позволяет Windows NT быть объектно-ориентированной операционной системой, поскольку типы объектов можно рассматривать как полиморфные классы , которые определяют объекты . Большинство подсистем, однако, за исключением диспетчера ввода-вывода, полагаются на реализацию по умолчанию для всех процедур типов объектов. [ необходима цитата ]
Каждый экземпляр созданного объекта сохраняет свое имя, параметры, которые передаются функции создания объекта, атрибуты безопасности и указатель на тип объекта. Объект также содержит процедуру закрытия объекта и счетчик ссылок, чтобы сообщить менеджеру объектов, сколько других объектов в системе ссылаются на этот объект, и тем самым определить, может ли объект быть уничтожен при отправке ему запроса на закрытие. [17] Каждый именованный объект существует в иерархическом пространстве имен объектов .
Контроллер кэша
Тесно координирует работу с диспетчером памяти, диспетчером ввода-вывода и драйверами ввода-вывода для предоставления общего кэша для обычного файлового ввода-вывода. Диспетчер кэша Windows работает с блоками файлов (а не с блоками устройств) для согласованной работы между локальными и удаленными файлами и обеспечивает определенную степень согласованности с отображенными в память представлениями файлов , поскольку блоки кэша являются особым случаем отображенных в память представлений, а пропуски кэша — особым случаем ошибок страниц.
Менеджер конфигурации
Реализует системные вызовы, необходимые реестру Windows .
Менеджер ввода-вывода
Позволяет устройствам взаимодействовать с подсистемами пользовательского режима. Он преобразует команды чтения и записи пользовательского режима в IRP чтения или записи , которые он передает драйверам устройств. Он принимает запросы ввода-вывода файловой системы и преобразует их в вызовы, специфичные для устройств, и может включать низкоуровневые драйверы устройств, которые напрямую манипулируют оборудованием для чтения ввода или записи вывода. Он также включает менеджер кэша для повышения производительности диска путем кэширования запросов чтения и записи на диск в фоновом режиме.
Локальный вызов процедур (LPC)
Предоставляет порты межпроцессного взаимодействия с семантикой соединений. Порты LPC используются подсистемами пользовательского режима для взаимодействия со своими клиентами, подсистемами Executive для взаимодействия с подсистемами пользовательского режима и в качестве основы для локального транспорта для Microsoft RPC .
Менеджер памяти
Управляет виртуальной памятью , контролирует защиту памяти и подкачку памяти из физической памяти во вторичную память и реализует универсальный распределитель физической памяти. Он также реализует парсер исполняемых файлов PE, который позволяет отображать или отменять отображение исполняемого файла за один атомарный шаг.
Начиная с Windows NT Server 4.0, Terminal Server Edition, диспетчер памяти реализует так называемое пространство сеанса , диапазон памяти режима ядра, который подлежит переключению контекста, как и память режима пользователя. Это позволяет нескольким экземплярам подсистемы Win32 режима ядра и драйверам GDI работать бок о бок, несмотря на недостатки в их первоначальной конструкции. Каждое пространство сеанса совместно используется несколькими процессами, которые вместе называются «сеансом».
Чтобы обеспечить определенную степень изоляции между сеансами без введения нового типа объекта, связь между процессами и сеансами обрабатывается монитором ссылок безопасности как атрибутом субъекта безопасности (токена), и ее можно изменить только при наличии специальных привилегий.
Относительно несложная и случайная природа сеансов объясняется тем, что они не были частью первоначального дизайна и должны были быть разработаны, с минимальным нарушением основной линии, третьей стороной ( Citrix Systems ) в качестве предварительного условия для их терминального сервера для Windows NT, называемого WinFrame . Однако, начиная с Windows Vista, сеансы наконец стали надлежащим аспектом архитектуры Windows. Больше не являясь конструкцией менеджера памяти, которая проникает в пользовательский режим косвенно через Win32, они были расширены до всеобъемлющей абстракции, влияющей на большинство подсистем Executive. Фактически, регулярное использование Windows Vista всегда приводит к многосеансовой среде. [18]
Структура процесса
Обрабатывает создание и завершение процессов и потоков, а также реализует концепцию Job — группы процессов, которые могут быть завершены как единое целое или помещены под общие ограничения (например, общий максимум выделенной памяти или процессорного времени). Объекты Job были введены в Windows 2000 .
Менеджер PnP
Обрабатывает plug and play и поддерживает обнаружение и установку устройств во время загрузки. Он также отвечает за остановку и запуск устройств по требованию — это может произойти, когда шина (например, USB или IEEE 1394 FireWire ) получает новое устройство и нуждается в загрузке драйвера устройства для его поддержки. Его основная часть фактически реализована в пользовательском режиме, в службе Plug and Play , которая обрабатывает часто сложные задачи установки соответствующих драйверов, уведомления служб и приложений о прибытии новых устройств и отображения графического интерфейса для пользователя.
Менеджер питания
Обрабатывает события, связанные с питанием (выключение, режим ожидания, спящий режим и т. д.), и уведомляет затронутых водителей с помощью специальных IRP ( Power IRP ).
Монитор безопасности (SRM)
Основной орган по обеспечению соблюдения правил безопасности подсистемы безопасности. [19] Он определяет, можно ли получить доступ к объекту или ресурсу, с помощью списков контроля доступа (ACL), которые сами состоят из записей контроля доступа (ACE). ACE содержат идентификатор безопасности (SID) и список операций, которые ACE дает выбранной группе доверенных лиц — учетной записи пользователя, групповой учетной записи или сеансу входа [20] — разрешение (разрешить, запретить или проверить) для этого ресурса. [21] [22]
ГДИ
Интерфейс графических устройств отвечает за такие задачи, как рисование линий и кривых, рендеринг шрифтов и обработка палитр. Серия релизов Windows NT 3.x поместила компонент GDI в пользовательскую подсистему Client/Server Runtime Subsystem , но с Windows NT 4.0 он был перемещен в режим ядра для улучшения графической производительности. [23]

Ядро

Ядро находится между HAL и Executive и обеспечивает многопроцессорную синхронизацию, планирование и диспетчеризацию потоков и прерываний, а также обработку ловушек и диспетчеризацию исключений; оно также отвечает за инициализацию драйверов устройств при загрузке, которые необходимы для запуска и работы операционной системы. То есть, ядро ​​выполняет почти все задачи традиционного микроядра ; строгое различие между Executive и Kernel является наиболее заметным остатком оригинальной конструкции микроядра, и историческая проектная документация последовательно называет компонент ядра «микроядром».

Ядро часто взаимодействует с менеджером процессов. [24] Уровень абстракции таков, что ядро ​​никогда не обращается к менеджеру процессов, только наоборот (за исключением нескольких особых случаев, но все равно никогда не доходит до точки функциональной зависимости).

Гибридная конструкция ядра

Дизайн Windows NT включает в себя многие из тех же целей, что и Mach , архетипическая система микроядра, одной из самых важных является ее структура как набор модулей, которые взаимодействуют через хорошо известные интерфейсы, с небольшим микроядром, ограниченным основными функциями, такими как обработка прерываний первого уровня, планирование потоков и примитивы синхронизации. Это позволяет использовать либо прямые вызовы процедур, либо межпроцессное взаимодействие (IPC) для взаимодействия между модулями, и, следовательно, для потенциального расположения модулей в разных адресных пространствах (например, либо в пространстве ядра, либо в процессах сервера). Другие цели дизайна, общие с Mach, включали поддержку различных архитектур, ядро ​​с абстракциями, достаточно общими, чтобы позволить реализовать несколько личностей операционной системы поверх него, и объектно-ориентированную организацию. [25] [26]

Основная личность операционной системы в Windows — это Windows API , который всегда присутствует. Подсистема эмуляции, которая реализует личность Windows, называется Client/Server Runtime Subsystem (csrss.exe). В версиях NT до 4.0 этот процесс подсистемы также содержал оконный менеджер, интерфейс графического устройства и драйверы графических устройств. Однако по соображениям производительности в версии 4.0 и более поздних эти модули (которые часто реализуются в пользовательском режиме даже в монолитных системах, особенно тех, которые разработаны без внутренней поддержки графики) работают как подсистема режима ядра. [25]

Приложения, работающие на NT, написаны для одной из личностей ОС (обычно Windows API), а не для собственного API NT, для которого документация не является общедоступной (за исключением процедур, используемых при разработке драйверов устройств). Личность ОС реализуется с помощью набора DLL пользовательского режима (см. Библиотека динамической компоновки ), которые отображаются в адресные пространства процессов приложений по мере необходимости, вместе с серверным процессом подсистемы эмуляции (как описано ранее). Приложения получают доступ к системным службам, вызывая DLL-файлы личностей ОС, отображенные в их адресные пространства, которые, в свою очередь, вызывают библиотеку времени выполнения NT (ntdll.dll), также отображенную в адресное пространство процесса. Библиотека времени выполнения NT обслуживает эти запросы, перехватывая режим ядра, чтобы либо вызвать процедуры ядра-режима Executive, либо выполнить локальные вызовы процедур (LPC) для соответствующих серверных процессов подсистемы пользовательского режима, которые, в свою очередь, используют API NT для связи с процессами приложений, подсистемами режима ядра и друг с другом. [27]

Драйверы режима ядра

Windows NT использует драйверы устройств режима ядра для взаимодействия с аппаратными устройствами . Каждый из драйверов имеет четко определенные системные процедуры и внутренние процедуры, которые он экспортирует в остальную часть операционной системы. Все устройства рассматриваются кодом пользовательского режима как файловый объект в диспетчере ввода-вывода, хотя для самого диспетчера ввода-вывода устройства рассматриваются как объекты устройств, которые он определяет как объекты файлов, устройств или драйверов. Драйверы режима ядра существуют на трех уровнях: драйверы высшего уровня, промежуточные драйверы и драйверы низкого уровня. Драйверы высшего уровня, такие как драйверы файловой системы для FAT и NTFS , полагаются на промежуточные драйверы. Промежуточные драйверы состоят из драйверов функций — или основного драйвера для устройства — которые опционально располагаются между драйверами фильтров низшего и высшего уровня. Затем драйвер функции опирается на драйвер шины — или драйвер, который обслуживает контроллер шины , адаптер или мост — который может иметь опциональный драйвер фильтра шины, который находится между ним и драйвером функции. Промежуточные драйверы полагаются на драйверы самого низкого уровня для своей работы. Модель драйверов Windows (WDM) существует на промежуточном уровне. Драйверы самого низкого уровня — это либо устаревшие драйверы устройств Windows NT, которые напрямую управляют устройством, либо могут быть шиной оборудования PnP. Эти драйверы самого низкого уровня напрямую управляют оборудованием и не зависят от других драйверов.

Уровень абстракции оборудования

Уровень абстракции оборудования Windows NT (HAL) — это уровень между физическим оборудованием компьютера и остальной частью операционной системы. Он был разработан для скрытия различий в оборудовании и предоставления единой платформы, на которой работает ядро. HAL включает аппаратно-зависимый код, который управляет интерфейсами ввода-вывода, контроллерами прерываний и несколькими процессорами.

Однако, несмотря на свое предназначение и обозначенное место в архитектуре, HAL не является слоем, который находится полностью под ядром, как ядро ​​находится под исполнительным: все известные реализации HAL в какой-то мере зависят от ядра или даже исполнительного. На практике это означает, что варианты ядра и HAL поставляются в соответствующих наборах, которые специально созданы для совместной работы.

В частности, абстракция оборудования не подразумевает абстрагирование набора инструкций, что обычно подпадает под более широкое понятие переносимости . Абстрагирование набора инструкций, когда это необходимо (например, для обработки нескольких ревизий набора инструкций x86 или эмуляции отсутствующего математического сопроцессора), выполняется ядром или посредством аппаратной виртуализации .

Последовательность загрузки

Последовательность загрузки инициируется NTLDR в версиях до Vista и диспетчером загрузки Windows в Vista и более поздних версиях. [28] Загрузчик отвечает за доступ к файловой системе на загрузочном диске, запуск ntoskrnl.exe и загрузку драйверов устройств времени загрузки в память. После загрузки всех загрузочных и системных драйверов ядро ​​запускает подсистему диспетчера сеансов . Менеджер сеансов запускает важные службы ядра и пользовательского режима подсистемы Win32, такие как подсистема выполнения клиент/сервер . Сеанс также запускает процесс winlogon , позволяя пользователям входить в систему и использовать свои учетные записи.

Смотрите также

Примечания и ссылки

Примечания
  1. ^ Финнел 2000, Глава 1: Введение в Microsoft Windows 2000, стр. 7–18.
  2. ^ "Приложение D. Запуск нестандартных приложений в Windows 2000 Professional". Microsoft Windows 2000 Professional Resource Kit . Microsoft . 11 сентября 2008 г.
  3. ^ abc "Windows NT Workstation Resource Kit Глава 28 - Совместимость с OS/2". Microsoft. Архивировано из оригинала 24 октября 2012 г.
  4. ^ ab "POSIX и OS/2 не поддерживаются в Windows XP или Windows Server 2003". Microsoft. Архивировано из оригинала 24 мая 2011 г.
  5. Рейтер, Брайан (24 августа 2010 г.). «Печальная история подсистемы Microsoft POSIX».
  6. ^ «Базовая архитектура сетевого редиректора». Microsoft. 15 декабря 2021 г. Получено 30 июля 2023 г.
  7. ^ "Windows NT Networking Architecture". Microsoft. Архивировано из оригинала 18 ноября 2016 года . Получено 2016-11-18 .
  8. ^ abc Роман, Стивен (1999). "Архитектура Windows". Программирование Win32 API с помощью Visual Basic . O'Reilly and Associates, Inc. ISBN 1-56592-631-5.
  9. ^ "MS Windows NT Kernel-mode User and GDI White Paper". Документация Windows NT Workstation . Microsoft TechNet . Архивировано из оригинала 21 февраля 2008 г. Получено 2007-12-09 .
  10. ^ Марк Э. Руссинович; Дэвид А. Соломон; Алекс Ионеску. Внутреннее устройство Windows, пятое издание . Майкрософт Пресс. стр. 228–255.
  11. ^ Руссинович и Соломон 2005, стр. 124–125.
  12. ^ Руссинович 1997, Введение.
  13. ^ Руссинович 1997, «Типы объектов».
  14. ^ Руссинович и Соломон 2005, стр. 135–140.
  15. ^ Руссинович и Соломон 2005, стр. 141–143.
  16. ^ "Handles and Objects". Windows System Information . Microsoft. 8 февраля 2022 г. Получено 2023-07-30 .
  17. ^ Руссинович 1997, «Объекты».
  18. ^ "Влияние изоляции сеанса 0 на службы и драйверы в Windows Vista". Microsoft. Архивировано из оригинала 27 июня 2006 г.
  19. ^ «Хранилище данных Active Directory». Microsoft.[ постоянная мертвая ссылка ]
  20. ^ "Определение доверительного управляющего". MSDN. Архивировано из оригинала 8 февраля 2005 г.
  21. ^ Сиян 2000.
  22. ^ "1.2 Глоссарий". [MS-AZOD]: Обзор протоколов авторизации . 14 июня 2022 г. запись контроля доступа (ACE).
  23. ^ "MS Windows NT Kernel-mode User and GDI White Paper". Microsoft. Изменение режима ядра Windows NT 4.0 . Получено 2009-01-19 .
  24. Соломон и Руссинович 2000, стр. 543–551.
  25. ^ ab "MS Windows NT Kernel-mode User and GDI White Paper". Корпорация Microsoft. 2007. Получено 01.03.2007 .
  26. ^ Зильбершатц, Абрахам; Гэлвин, Питер Баер; Ганье, Грег (2005). Концепции операционных систем; 7-е издание (PDF) . Хобокен, Нью-Джерси: John Wiley & Sons Inc. ISBN 978-0-471-69466-3.
  27. ^ Проберт, Дэйв (2005). «Обзор архитектуры Windows». Использование проектов на основе внутренних API NT для обучения принципам ОС . Microsoft Research/Asia - Пекин . Получено 01.03.2007 .
  28. ^ "Последовательность загрузки Windows Multi-Boot - Multibooters.com". www.multibooters.com . Получено 2020-11-19 .
Ссылки

Дальнейшее чтение

Внешние ссылки