Новые черты ядра NT 5.0

 

Несмотря на декларируемую расширяемость архитектуры Windows NT, некоторые нововведения в NT 5.0 (plug-and-play, управление электропитанием, объекты "Задание", управление большой памятью для компьютеров Alpha) повлекли, тем не менее, серьезные структурные изменения в архитектуре ядра.

Технология Plug-and-play (PnP) поддерживается комбинацией аппаратного и программного обеспечения, позволяющей распознавать и настраивать аппаратные изменения в конфигурации почти без вмешательства пользователя. Можно динамично добавлять и удалять устройства без необходимости реконфигурации системы и знания сложного компьютерного оборудования.

При проектировании архитектуры PnP в Windows NT 5.0 ставились две основные цели:

Ú расширение существующей инфраструктуры ввода/вывода для поддержки PnP и управления энергопотреблением для работы с оборудованием по стандартам PnP;

Ú создание единых интерфейсов для драйверов устройств, поддерживающих PnP и управление энергопотреблением, для классов устройств, работающих под Windows NT 5.0 и Windows 98.

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

Драйверы PnP не назначают устройствам собственные ресурсы. Вместо этого требуемые ресурсы идентифицируются системой во время распознавания устройств. Основываясь на запросах устройств на ресурсы, диспетчер PnP назначает соответствующие аппаратные ресурсы (например, порты ввода/вывода, каналы DMA и т.д.), распределяет память. Диспетчер PnP реконфигурирует назначенные ресурсы по необходимости, когда устройства добавляются к системе и запрашивают уже распределенные ресурсы. Кроме того, диспетчер PnP определяет, какие драйверы требуются для поддержки конкретных устройств, и загружает эти драйверы.

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

Поддержка PnP в Windows NT 5.0 потребовала внести ряд изменений в ранее разработанную модель драйверов Windows NT:

Ú Драйверы шины отделены от HAL для координации с изменениями и расширениями существующих компонентов режима ядра (исполняемая часть, драйверы ядра, HAL).

Ú Драйверы шины управляют шиной ввода/вывода, включая управление отдельными слотами, независимыми от устройств.

Новые методы и возможности для поддержки установки устройств и конфигурации потребовали изменения таких существующих компонентов режима пользователя, как диспетчер буфера вывода, установщики классов, приложений Control Panel, Setup. Добавлены новые компоненты для поддержки PnP как в режиме ядра, так и в режиме пользователя.

Добавлены интерфейсы PnP API для чтения и записи информации из реестра (registry). Теперь структура регистра поддерживает PnP и позволяет вносить совершенствования в будущих версиях NT, в то же время обеспечивая совместимость снизу вверх.

Windows NT 5.0 будет поддерживать унаследованные драйверы, но их использование уменьшит возможности системы в области поддержки PnP. Производителям, желающим реализовать полные возможности PnP для своего оборудования и использовать одни и те же драйверы под NT и и Windows 98, необходимо разработать новые драйверы, интегрирующие последние достижения технологии PnP и управления энергопотреблением.

Windows NT 5.0 включает расширение модели процессов. «Задание» - это поименованный, безопасный, разделяемый объект, управляющий некоторыми атрибутами процессов. Его главная задача - управлять и манипулировать группой процессов как самостоятельной единицей. В ряде случаев этот объект компенсирует отсутствие в NT структурированного дерева процессов. Объект «Задание» также записывает базовую учетную информацию обо всех процессах, ассоциированных с ним, и позволяет накладывать на связанные с ним процессы: ограничения на время использования процессора в режиме пользователя; ограничение на время использования процессора в режиме пользователя каждым из процессов; максимальное число активных процессов; класс приоритета процесса «Задание».

Задания могут быть выстроены в очередь к объекту «Порт» для завершения операций ввода/вывода. Могут быть заданы границы безопасности на процессы в задании. В завершение всего, могут быть определены ограничения на пользовательские интерфейсы для процессов, например, на операции чтения и/или записи в clipboard, открытия принадлежащих потоку обработчиков окон за пределами «Задания», изменения параметров системы через функцию Win32 SystemParametersInfo.

В Windows NT 5.0 добавлено расширение VLM (Very Large Memory), позволяющее непосредственно адресовать 28 Гбайт оперативной памяти компьютеров на платформе Alpha. Сейчас VLM не предназначается для семейства процессоров х86, но в Microsoft готовят единую 64-разрядную версию NT для платформ Alpha AXP и будущей архитектуры Intel IA-64.

В NT 4.0 поддерживалась 64-разрядная адресация в операциях ввода/вывода, но каждый процесс все же ограничивался использованием 2-гигабайтного пространства (3 Гбайт для Windows NT Server Enterprise Edition). В 1997 году Microsoft объявила о своем намерении создать полную 64-разрядную версию NT, имея в виду, что каждый 64-разрядный процесс будет наделен адресным пространством по крайней мере в 512 Гбайт. Причина перехода к 64-разрядной платформе та же, что и для перехода от 16-разрядных систем к 32-разрядным - это постоянно возрастающие требования к хранению и обработке огромных объемов данных в памяти компьютеров.

VLM позволяет использовать в приложениях 64-разрядные указатели, получая, таким образом, прямой доступ к адресному пространству свыше 2 Гбайт. Это необходимо для удовлетворения нужд приложений, работающих с большими объемами информации (например, СУБД), для которых ограничение адресного пространства цифрой 2-3 Гбайт неприемлемо. Для адресации 28 Гбайт памяти и использования 64-разрядных указателей на системах Alpha в версию языка Visual C++ 5.0 добавлены указатели _ptr64 и небольшой набор новых интерфейсов Win32 API для работы с ними.

В 64-разрядной версии NT будет использоваться программный интерфейс Win64, обеспечивающий перенос приложений с Win32 и компиляцию исходного кода в двоичный как в 32-разрядном, так и в 64-разрядном режимах. Предполагается, что «младший» режим будет использоваться для выполнения существующих 32-разрядных приложений на платформах Alpha и Merced, а новые 64-разрядные приложения будут выполняться уже в «родном» 64-разрядном режиме. Однако одновременная смесь двух режимов в одном процессе допускаться не будет.

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

Архитектура Windows NT отражает современные представления о дизайне 32-разрядной операционной системы, а версия Windows NT 5.0 удовлетворяет постоянно меняющимся требованиям, предъявляемым к операционной системе для настольных систем и рабочих станций. Эта версия также может работать с высокоуровневыми серверными приложениями.