Microsoft Windows NT

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 23:38, 1 мая 2017.
Windows NT
WinNT logo small.png
Разработчик Microsoft
Написана на C, C++, и Ассемблер
Исходный код Closed source / Shared source
Дата первого релиза 27 July 1993 года; 26 years ago (1993-07-27)
(as Windows NT 3.1)
Метод обновления Windows Update, Windows Server Update Services
Платформы IA-32, x86-64, DEC Alpha, MIPS, PowerPC, ARM, Itanium
Ядро (тип) Гибридное
По умолчанию
пользовательский
интерфейс
Graphical (Microsoft Windows shell)
Лицензия В зависимости от версии, издания или выбора издателя: Trialware, commercial software, volume licensing, OEM-only, SaaS, S+S.
Официальный веб-сайт www.microsoft.com/windows/

Windows NT (аббр. от англ. New Technology) — семейство операционных систем (ОС) разработанных Microsoft Corporation, первая версия была выпущена в июле 1993 года. Это процессор-независимая, многопроцессорная, многопользовательская операционная система.

Первой версией Windows NT была Windows NT 3.1, которая была предназначена для рабочих станций и серверов. Она была призвана, дополнить линейку систем (включавшую в себя Microsoft Windows 1.0 и Microsoft Windows 3.1x), которая была основана на MS-DOS. Постепенно семейство Windows NT вошло в линейку операционных систем общего назначения от Microsoft для персональных компьютеров, вытеснив семейство Microsoft Windows 9x.

"NT" ранее расшифровывалось, как "New Technology" (Новая Технология), однако больше не несёт подобного смысла. Начиная с Microsoft Windows 2000,[Источник 1] "NT" было исключено из названия продукта и используется только в названии версии.[Источник 2]

NT была первой чистой 32-bit версией Windows, в то время как, Windows 3.1x и Windows 9x, были 16-bit/32-bit гибридами. Это мульти-архитектурная операционная система. Первоначально она поддерживала несколько архитектур процессоров, например, IA-32, MIPS, DEC Alpha, PowerPC и позже Itanium. Последние версии поддерживают архитектуру x86 (конкретнее IA-32 и x64) и ARM. Главные особенности семейства Windows NT в том, что оно включает в себя Microsoft Windows Shell, Microsoft Windows API, Native API, Active Directory, Group Policy, Hardware Abstraction Layer, NTFS, BitLocker, Microsoft Windows Store, Microsoft Windows Update и Microsoft Hyper-V.

В некотором смысле, предки Windows NT - это операционные системы, над которыми работал Дейв Катлер перед тем, как был нанят Microsoft, названные VMS и RSX-11, а также не выпущенные объектно-ориентированные операционные системы разработанные им для DEC Prism. Это чётко прослеживается в предисловии Катлера к "Inside Windows NT" от Хэлен Кастер.

Разработка

В октябре 1988, Microsoft решила создать портативную операционную систему, совместимую с IBM OS/2 и POSIX с поддержкой многопроцессорности.[Источник 3] Когда в 1989 началась разработка, Windows NT должна была стать OS/2 3.0,[Источник 4]третьей версией операционной системы, разработанной совместно Microsoft и IBM. Для обеспечения переносимости, первоначальная разработка была направлена на Intel i860XR RISC процессор, позже, в конце 1989, переключилась на MIPS R3000 и наконец перешла на Intel i386 в 1990.[Источник 5] Microsoft также параллельно продолжала разработку менее ресурсоёмких систем, основанных на DOS, результатом стала Microsoft Windows 3.0 в мае 1990. Windows 3 была на столько успешной, что Microsoft решила изменить основной интерфейс (API) ещё не выпущенной NT OS/2 (так она была известна), с расширенного OS/2 API на расширенный Microsoft Windows API. Это решение вызвало напряжённость между Microsoft и IBM, и в итоге их союз развалился. IBM продолжила разработку OS/2 в одиночку, в то время, как Microsoft продолжило работу над недавно переименованной Windows NT. Хотя операционная система не стала популярной, так быстро, как Microsoft MS-DOS или другие продукты Windows, Windows NT всё же была гораздо более успешной, чем OS/2

Microsoft наняла группу разработчиков из Digital Equipment Corporation во главе с Дейвом Катлером для создания Windows NT, потому многие элементы дизайна отражают не только предыдущий опыт DEC с VMS[Источник 6] и RSX-11, разработанных Катлером, но и элементы не выпущенной объектно-ориентированной системы, разработанной Дейвом для DEC PRISM.[Источник 7] Операционная система была разработана для того, чтобы запускаться на различных архитектурах с различными инструкциями и на различных аппаратных платформах под различные архитектуры. Платформенные зависимости в значительной степени скрыты от остальной части системы модулем режима ядра, под названием HAL.

Код режима ядра Windows NT различает "kernel" (ядро), основная задача которого заключается в реализации функции зависимости архитектуры и процессора, и "executive" (исполняемая часть). Ядро было разработано, как модифицированная версия микроядра (microkernel), так как ядро Windows NT работало под влиянием Mach разработанного в Carnegie Mellon University,[Источник 8] но не удовлетворяло всем требованиям микроядра. И ядро, и исполнимая часть объединены в один загружаемый модуль ntoskrnl.exe; снаружи этого модуля есть небольшое различие между ядром и исполняемой частью. Подпрограммы каждого режима имеют прямой доступ, например, драйвера устройств из режима ядра.

Наборы API в семействе Windows NT реализованы, как подсистемы над публично не документированным "native" API; позже это позволило позаимствовать Windows API (в подсистеме Win32). Windows NT была одной из первых операционных систем, которая использовала внутри Unicode.

Версии

Версии Windows NT
Версия Название Издания Дата выхода Номер сборки
3.1 Microsoft Windows NT 3.1 Workstation (named just Windows NT), Advanced Server 27 июля 1993 528
3.5 Microsoft Windows NT 3.5 Workstation, Server 21 сентября 1994 807
3.51 Microsoft Windows NT 3.51 Workstation, Server 30 мая 1995 1057
4.0 Microsoft Windows NT 4.0 Workstation, Server, Server Enterprise Edition, Terminal Server, Embedded 29 сентября 1996 1381
5.0 Microsoft Windows 2000 Professional, Server, Advanced Server 17 февраля 2000 2195
Datacenter Server 26 сентября 2000
5.1 Microsoft Windows XP Home, Professional, Media Center (original, 2004 & 2005), Tablet PC (original and 2005), Starter, Embedded, Home N, Professional N 25 октября 2001 2600
Microsoft Windows Fundamentals for Legacy PCs N/A 8 июля 2006
5.2 Microsoft Windows XP 64-bit Edition Version 2003[Источник 9] 28 марта 2003 3790
Microsoft Windows Server 2003 Standard, Enterprise, Datacenter, Web, Storage, Small Business Server, Compute Cluster 24 апреля 2003
Microsoft Windows XP Professional x64 Edition 25 апреля 2005
Microsoft Windows Server 2003 R2 Standard, Enterprise, Datacenter, Web, Storage, Small Business Server, Compute Cluster 6 декабря 2005
Microsoft Windows Home Server N/A 16 июля 2007
6.0 Microsoft Windows Vista Starter, Home Basic, Home Premium, Business, Enterprise, Ultimate, Home Basic N, Business N

Business: 30 ноября 2006; Consumer:30 января 2007

6000 (RTM); 6001 (SP1); 6002 (SP2)

Microsoft Windows Server 2008 Foundation, Standard, Enterprise, Datacenter, Web Server, HPC Server, Itanium-Based Systems[Источник 10] 27 февраля 2008

6001 (RTM); 6002 (SP2)

6.1[Источник 11] Microsoft Windows 7 Starter, Home Basic, Home Premium, Professional, Enterprise, Ultimate[Источник 12] 22 октября 2009[Источник 13]

7600 (RTM); 7601 (SP1)

Microsoft Windows Server 2008 R2 Foundation, Standard, Enterprise, Datacenter, Web Server, HPC Server, Itanium-Based Systems 22 октября 2009[Источник 14]

7600 (RTM); 7601 (SP1)

Microsoft Windows Home Server 2011 N/A 6 апреля 2011

7600 (RTM)

6.2 Microsoft Windows 8[Источник 15] Windows 8, Windows 8 Pro, Windows 8 Enterprise, Microsoft Windows RT[Источник 16] 26 октября 2012[Источник 17] 9200
Microsoft Windows Server 2012[Источник 18] Foundation, Essentials, Standard, Datacenter[Источник 19] 4 сентября 2012 9200
6.3[Источник 20] Microsoft Windows 8.1 Windows 8.1, Windows 8.1 Pro, Windows 8.1 Enterprise, Windows RT 8.1 18 октября 2013 9600[Источник 21]
Microsoft Windows Server 2012 R2 Foundation, Essentials, Standard, Datacenter 18 октября 2013 9600
10.0[Источник 22] Microsoft Windows 10 Home, Pro, Pro Education, Enterprise, Education, IoT Core, Mobile, Mobile Enterprise[Источник 23][Источник 24] 29 июля 2015

10240 (TH1); 10586 (TH2); 14393 (RS1)

Microsoft Windows Server 2016 Essentials, Standard, Datacenter, Multipoint Premium Server, Storage Server, Hyper-V Server 26 сентября 2016 14393 (RS1)

Версии Windows NT

Windows NT 3.1

Операционная система Windows NT с самого начала проектировалась с учетом всех требований, предъявляемых к современным ОС: расширяемости, переносимости, надежности, совместимости, производительности. Эти свойства были достигнуты за счет применения передовых технологий структурного проектирования, таких как клиент-сервер, микроядра, объекты.

В отличие от Windows, в которой реализована многозадачность без вытеснения (non-preemptive multitasking), в Windows NT используется механизм многозадачности с вытеснением (preemptive multitasking).

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

Windows NT 3.5

Версия Windows NT 3.5, как и предыдущая Windows NT 3.1, разработана в двух конфигурациях: для рабочей станции Windows NT Workstation 3.5 и для сервера - Windows NT Server 3.5. Windows NT 3.5 имеет многочисленные усовершенствования и нововведения по сравнению с Windows NT 3.1:

Улучшенное автораспознавание аппаратуры, возможность ручного выбора и конфигурирования сетевых адаптеров, если автоматическое распознавание не дает положительного результата.

Встроенная поддержка TCP/IP. Новая высокопроизводительная Microsoft-реализация протоколов TCP/IP, которая обеспечивает простое, мощное решение для межсетевого взаимодействия.Microsoft поддерживает протокол TCP/IP, начиная с 1991 года, когда был выпущен первый стек для Microsoft LAN Manager 2.1. В Windows NT также имеется поддержка этого протокола, начиная с самой первой версии этой операционной системы. Помимо этого, имеются базовые утилиты, такие как ftp, tftp, telnet, команды r*, arp, route и finger. С выходом версии 3.5 появились новые ключевые свойства, которые, с одной стороны, упростили конфигурирование и обслуживание, а с другой - улучшили свойства TCP/IP.

Поддержка длинных имен файлов в файловой системе FAT. Windows NT поддерживает работу с тремя файловыми системами: NTFS, FAT и HPFS. Таким образом, если до установки Windows NT на компьютере были установлены MS-DOS или OS/2, то нет никакой необходимости переформатировать диск. Система преобразует FAT или HPFS в NTFS, сохранив всю информацию на диске. Обратное преобразование невозможно. Здесь уместно заметить, что если вы хотите установить NTFS только затем, чтобы использовать длинные (до 255 символов) имена файлов, то для этих целей прекрасно подойдут и FAT и HPFS. Если для последней это естественное свойство, то возможность использования длинных имен файлов на FAT была введена только в версии Windows NT начиная с 3.5. Вы можете спокойно называть файлы и каталоги именами, выходящими за пределы традиционного для MS-DOS правила "8.3", нисколько не опасаясь, что эти файлы не будут доступны при работе в MS-DOS. Для таких файлов и каталогов будут назначены вторые, "короткие" имена.

Windows NT 4.0

При разработке Windows NT 4.0 Microsoft решила пожертвовать стабильностью ради производительности. С этой целью были внесены изменения в архитектуру: библиотеки менеджера окон и GDI, а также драйверы графических адаптеров были перенесены из пользовательского режима в режим ядра. Это изменение означает некоторый отход от принятой в предыдущих версиях Windows NT 3.х концепции микроядра.

Перенос графической библиотеки и драйверов в область ядра повышает скорость выполнения графического ввода-вывода. Эти изменения особенно сказались на скорости выполнения приложений Win32, в то время как приложения Windows-16 и DOS-ские графические приложения работают примерно также, как и в версии 3.5.

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

Области использования Windows NT

Windows NT Workstation, прежде всего, может использоваться как клиент в сетях Windows NT Server, а также в сетях NetWare, UNIX, Vines. Она может быть рабочей станцией и в одноранговых сетях, выполняя одновременно функции и клиента, и сервера. Windows NT Workstation может применяться в качестве ОС автономного компьютера при необходимости обеспечения повышенной производительности, секретности, а также при реализации сложных графических приложений, например, в системах автоматизированного проектирования.

Windows NT Server может быть использован прежде всего как сервер в корпоративной сети. Здесь весьма полезной оказывается его возможность выполнять функции контроллера доменов, позволяя структурировать сеть и упрощать задачи администрирования и управления. Он используется также в качестве файл-сервера, принт-сервера, сервера приложений, сервера удаленного доступа и сервера связи (шлюза). Кроме того, Windows NT Server может быть использован как платформа для сложных сетевых приложений, особенно тех, которые построены с использованием технологии клиент-сервер.

Так, под управлением Windows NT Server может работать сервер баз данных Microsoft SQL Server, а также серверы баз данных других известных фирм, такие как Oracle и Sybase, Adabas и InterBase.

На платформе Windows NT Server может быть установлена новая мощная система администрирования Microsoft System Management Server, функцией которой является инвентаризация аппаратной и программной конфигурации компьютеров сети, автоматическая установка программных продуктов на рабочие станции, удаленное управление любым компьютером и мониторинг сети.

Windows NT Server может использоваться как сервер связи с мейнфреймам. Для этого создан специальный продукт Microsoft SNA Server, позволяющий легко объединить в одной сети IBM PC-совместимые рабочие станции и мощные мейнфреймы.

Так же Windows NT Server является платформой для почтового сервера Microsoft Exchange.

Языки программирования

Windows NT написана на C и C++ с небольшими вставками на Ассемблере. В осном на Си написано ядро, на С++ интерфейс пользователя, а Ассемблер старались по возможности исключить, чтобы не снижать переносимость OC.


Внутренняя архитектура

Архитектура Windows NT имеет модульную структуру и состоит из двух основных уровней — компоненты, работающие в режиме пользователя, и компоненты режима ядра. Программы и подсистемы, работающие в режиме пользователя, имеют ограничения на доступ к системным ресурсам. Режим ядра имеет неограниченный доступ к системной памяти и внешним устройствам. Ядро системы NT называют гибридным ядром или макроядром. Архитектура включает в себя само ядро, уровень аппаратных абстракций (HAL), драйверы и ряд служб (Executives), которые работают в режиме ядра (Kernel-mode drivers) или в пользовательском режиме (User-mode drivers) Пользовательский режим Windows NT состоит из подсистем, передающих запросы ввода-вывода соответствующему драйверу режима ядра посредством менеджера ввода-вывода. Есть две подсистемы на уровне пользователя: подсистема окружения (запускает приложения, написанные для разных операционных систем) и интегрированная подсистема (управляет особыми системными функциями от имени подсистемы окружения). Режим ядра имеет полный доступ к аппаратной части и системным ресурсам компьютера. И также предотвращает доступ к критическим зонам системы со стороны пользовательских служб и приложений.

Режим пользователя

Подсистема пользовательского интерфейса в Windows NT реализует оконный интерфейс, подобный интерфейсу предыдущих версий Windows. Двумя типами объектов этой подсистемы, отсутствовавшими в 16-битных версиях Windows и в Windows 9x, являются оконные станции и рабочие столы. Оконная станция соответствует одному сеансу пользователя Windows NT — например, при подключении через службу удалённого рабочего стола создаётся новая оконная станция. Каждый запущенный процесс принадлежит одной из оконных станций; службы, кроме помеченных как способные взаимодействовать с рабочим столом, запускаются в отдельных, невидимых оконных станциях. Каждая оконная станция имеет собственный буфер обмена, набор глобальных атомов (используемых для операций DDE), и набор рабочих столов. Рабочий стол является контекстом всех глобальных операций подсистемы пользовательского интерфейса, таких как установка хуков и широковещательная рассылка сообщений. Каждый запущенный поток принадлежит к одному из рабочих столов — тому, где расположены обслуживаемые им окна; в частности, один поток не может создать несколько окон, принадлежащих к различным рабочим столам. Один из рабочих столов может быть активным (видимым пользователю и способным реагировать на его действия), остальные рабочие столы спрятаны. Возможность создать для одного сеанса работы несколько рабочих столов и переключаться между ними до настоящего времени не предоставлялась стандартными средствами пользовательского интерфейса Windows, хотя существуют сторонние программы, дающие доступ к этой функциональности. Оконными станциями и рабочими столами исчерпываются объекты подсистемы пользовательского интерфейса Windows NT, которым могут быть назначены права доступа. Оставшиеся типы объектов — окна и меню — предоставляют полный доступ любому процессу, который находится с ними в одной оконной станции. Поэтому службы Windows NT по умолчанию запускаются в отдельных оконных станциях: они работают с повышенными привилегиями, и возможность процессов пользователя неограниченно манипулировать окнами служб могла бы привести к сбоям и/или проблемам безопасности.

Подсистема окружения

Режим пользователя состоит из подсистем, которые передают запросы ввода\вывода соответствующему драйверу режима ядра посредством менеджера Ввода-вывода. Уровень пользователя состоит из двух подсистем — подсистема окружения (Environment) и интегральная подсистема (Integral).

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

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

Подсистема окружения OS/2 поддерживает неграфические 16-разрядные приложения операционной системы OS/2 и эмулирует систему OS/2 2.1.x.

Подсистема окружения POSIX поддерживает приложения, написанные в соответствии со стандартом POSIX.1.

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

Интегрированная подсистема (Integral subsystem) следит за некоторыми функциями операционной системы от имени подсистемы окружения. Состоит из подсистемы безопасности, службы рабочей станции и службы сервера. Служба безопасности обращается с маркерами доступа, позволяет или запрещает доступ к учётной записи пользователя, обрабатывает запросы авторизации и инициирует процесс входа пользователя в систему. Служба Рабочая станция обеспечивает доступ компьютера к сети — является API для сетевого редиректора (ПО, эмулирующее доступ к удаленной файловой системе как к локальной). Служба Сервер позволяет компьютеру предоставлять сетевые сервисы.

Режим ядра

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

Архитектура x86 поддерживает 4 уровня привилегий — от 0 до 3, но используются только 0 и 3 уровень. Режим пользователя использует уровень 3, а режим ядра — 0. Это было сделано для возможности переноса на платформу RISC, которая использует только два уровня привилегий. Режим ядра состоит из исполнительных служб, которые представляют собой различные модули, выполняющие определенные задачи, драйвера ядра, само ядро и уровень аппаратных абстракций HAL.

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

Работает с вводом\выводом, менеджером объектов, управлением над процессами и безопасностью. Неофициально делится на несколько подсистем — менеджер кэша, менеджер конфигурации, менеджер ввода\вывода, вызов локальных процедур, менеджер памяти, монитор безопасности. Системные службы, то есть системные вызовы, реализованы на этом уровне, за исключением нескольких вызовов, которые вызывают непосредственно ядро для большей производительности. В данном контексте термин «служба» относится к вызываемым подпрограммам, или набору вызываемых подпрограмм. Они отличаются от служб, выполняемых в режиме пользователя, которые в какой-то мере являются аналогом демонов в UNIX-подобных системах.

Менеджер объектов

Это исполнительная подсистема, к которой обращаются все остальные модули исполнительной подсистемы, в частности, системные вызовы, когда им необходимо получить доступ к ресурсам Windows NT. Менеджер объектов служит для уменьшения дублирования объектов, что может привести к ошибкам в работе системы. Для менеджера объектов каждый ресурс системы является объектом — будь то физический ресурс типа периферийного устройства, файловой системы, или логический ресурс — файл и др. Каждый объект имеет свою структуру, или тип объекта.

Создание объекта делится на две стадии — создание и вставка. Создание — создается пустой объект и резервируются необходимые ресурсы, например, имя в пространстве имен. Если создание пустого объекта произошло успешно, то подсистема, ответственная за создание объекта, заполня

Программные интерфейсы

Native API

Для прикладных программ системой Windows NT предоставляется несколько наборов API. Основной из них — так называемый «родной» API (NT Native API), реализованный в динамически подключаемой библиотеке ntdll.dll и состоящий из двух частей: системные вызовы ядра NT (функции с префиксами Nt и Zw, передающие выполнение функциям ядра ntoskrnl.exe с теми же названиями) и функции, реализованные в пользовательском режиме (с префиксом Rtl). Часть функций второй группы используют внутри себя системные вызовы; остальные целиком состоят из непривилегированного кода, и могут вызываться не только из кода пользовательского режима, но и из драйверов. Кроме функций Native API, в ntdll также включены функции стандартной библиотеки языка Си.

Официальная документация на Native API весьма скудна, но сообществам энтузиастов удалось методом проб и ошибок собрать достаточно обширные сведения об этом интерфейсе. В частности, в феврале 2000 года опубликована книга Гэри Неббета «Справочник по базовым функциям API Windows NT/2000» (ISBN 1-57870-199-6); в 2002 году она была переведена на русский язык (ISBN 5-8459-0238-X). Источником информации о Native API может служить Windows DDK, где описаны некоторые функции ядра, доступные посредством Native API, а также изучение кода Windows (обратная разработка) — посредством дизассемблирования, либо используя исходные тексты Windows 2000, ставшие доступными в результате утечки, либо используя исходные тексты Microsoft Windows 2003, доступные в рамках программы Microsoft Windows Research Kernel.

Программы, выполняющиеся до загрузки подсистем, обеспечивающих работу остальных API ОС Windows NT, ограничены использованием Native API[Источник 25]. Например, программа autochk, проверяющая диски при загрузке ОС после некорректного завершения работы, использует только Native API.

Win32 API

Чаще всего прикладными программами для Windows NT используется Win32 API — интерфейс, созданный на основе API ОС Microsoft Windows 3.1, и позволяющий перекомпилировать существующие программы для 16-битных версий Windows с минимальными изменениями исходного кода. Совместимость Win32 API и 16-битного Microsoft Windows API настолько велика, что 32-битные и 16-битные приложения могут свободно обмениваться сообщениями, работать с окнами друг друга и т. д. Кроме поддержки функций существовавшего Windows API, в Win32 API был также добавлен ряд новых возможностей, в том числе поддержка консольных программ, многопоточности, и объектов синхронизации, таких как мьютексы и семафоры. Документация на Win32 API входит в состав Microsoft Platform SDK и доступна на веб-сайте.[Источник 26]

Библиотеки поддержки Win32 API в основном названы так же, как системные библиотеки Microsoft Windows 3.x, с добавлением суффикса 32: это библиотеки kernel32, advapi32, gdi32, user32, comctl32, comdlg32, shell32 и ряд других. Функции Win32 API могут либо самостоятельно реализовывать требуемую функциональность в пользовательском режиме, либо вызывать описанные выше функции Native API, либо обращаться к подсистеме csrss посредством механизма Шаблон:Не переведено, либо осуществлять системный вызов в библиотеку win32k, реализующую необходимую для Win32 API поддержку в режиме ядра. Четыре перечисленных варианта могут также комбинироваться в любом сочетании: например, функция Win32 API WriteFile обращается к функции Native API NtWriteFile для записи в дисковый файл, и вызывает соответствующую функцию csrss для вывода в консоль.

Поддержка Win32 API включена в семейство ОС Microsoft Windows 9x; кроме того, она может быть добавлена в Microsoft Windows 3.1x установкой пакета Win32s. Для облегчения переноса существующих Windows-приложений, использующих для представления строк MBCS-кодировки, все функции Win32 API, принимающие параметрами строки, были созданы в двух версиях: функции с суффиксом A (ANSI) принимают MBCS-строки, а функции с суффиксом W (wide) принимают строки в кодировке UTF-16. В Win32s и Windows 9x поддерживаются только A-функции, тогда как в Windows NT, где все строки внутри ОС хранятся исключительно в UTF-16, каждая A-функция просто преобразует свои строковые параметры в Юникод и вызывает W-версию той же функции. В поставляемых H-файлах библиотеки также определены имена функций без суффикса, и использование A- либо W-версии функций определяется опциями компиляции, а в модулях Delphi до 2010 версии, например, они жёстко завязаны на варианты с суффиксом A. При этом важно отметить, что большинство новых функций, появившихся в Windows 2000 или более поздних ОС семейства Windows NT, существуют только в Unicode-версии, потому что задача обеспечения совместимости со старыми программами и с ОС Windows 9x уже не стоит так остро, как раньше.

POSIX и OS/2

В отличие от большинства свободных Unix-подобных ОС, Windows NT сертифицирована институтом NIST на совместимость со стандартом POSIX.1, и даже с более строгим стандартом FIPS 151-2. Библиотекой psxdll экспортируются стандартные функции POSIX, а также некоторые функции Native API, не имеющие аналогов в POSIX — например, для работы с кучей, со структурными исключениями, с Unicode. Внутри этих функций используются как Native API, так и LPC-вызовы в подсистему psxss, являющуюся обычным Win32-процессом.

Для выполнения 16-битных программ, написанных для OS/2 1.x, в состав Windows NT включены две системных библиотеки OS/2 (doscalls и netapi) и консольная программа-эмулятор os2[Источник 27], которая загружает и использует посредством LPC-вызовов подсистемы os2srv и os2ss. Остальные системные библиотеки OS/2, кроме двух названных (kbdcalls, mailslot, moncalls, nampipes, quecalls, viocalls и ещё десяток), не хранятся как отдельные файлы, а эмулируются. Программы, написанные для OS/2 2.0 и выше, а также оконные программы и программы, напрямую работающие с устройствами компьютера, в том числе драйверы, системой Windows NT не поддерживаются.

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

DOS и Win16

Для обеспечения двоичной совместимости с существующими программами для предыдущих семейств ОС от Microsoft, в Windows NT была добавлена программа-эмулятор ntvdm, реализующая VDM (виртуальную DOS-машину), внутри которой может выполняться программа для DOS. Для каждой выполняемой DOS-программы создаётся собственная VDM, тогда как несколько 16-битных Windows-программ могут выполняться в отдельных потоках внутри одной VDM, которая в этом случае играет роль подсистемы. Для того, чтобы внутри VDM можно было выполнять программы для Windows, в неё сначала должна быть загружена программа wowexec, устанавливающая связь VDM с платформой WOW («Windows on Win32»), позволяющей использовать 16-битные приложения для Windows наравне с 32-битными. Сама программа-эмулятор ntvdm выполняется внутри подсистемы Win32, что позволяет Win32-программам обращаться к окнам DOS-программ как к обычным консольным окнам, а к окнам Win16-программ — как к обычным графическим окнам.

Ещё одна технология обеспечения двоичной совместимости, реализованная в Windows NT — это thunks (англ. thunk = "переходник") - небольшие секции кода, выполняющие преобразования (например типов) или обеспечивающие вызов 32-разрядного кода из 16-разрядного и наоборот. Thunks позволяют 32-битным программам пользоваться 16-битными DLL-библиотеками (для Windows или OS/2) и наоборот. Thunks для Win16 реализованы в библиотеках wow32 (32-битные точки входа) и krnl386 (16-битные точки входа); thunks для OS/2 — в библиотеке doscalls (16-битные точки входа). К 16-битным системным библиотекам, включённым в состав Windows NT для использования технологией WOW, относятся krnl386, gdi, user, commctrl, commdlg, shell и др. Поддержка DOS-программ виртуальной DOS-машиной системы Windows NT не ограничена эмуляцией реального режима процессора x86: поддерживается интерфейс DPMI, позволяющий DOS-программам обращаться к расширенной памяти. Однако поддержка программ для DOS и Win16 в Windows NT ограничена требованиями безопасности: программы, напрямую работающие с устройствами компьютера, в том числе драйверы, не поддерживаются.

В связи с аппаратными ограничениями 64-битных платформ, поддержка VDM и WOW была исключена из 64-битных версий Windows, запуск 16-битных программ средствами системы на них невозможен, но возможно использование эмуляторов, таких как DOSBox. Основным API этих версий Windows NT является 64-битная версия Win32 API; для запуска 32-битных программ используется технология WOW64, аналогичная традиционной WOW.

Аппаратные платформы

Как уже было отмечено, создание версии NT для x86 требовалось для обеспечения совместимости с OS/2, — однако для того, чтобы убедиться в переносимости создаваемого кода, разработка NT началась с версий для RISC-архитектур, и только потом была добавлена поддержка x86. Изначально разработка x86-версии Windows NT была ориентирована на процессор 80486, но к моменту выпуска Microsoft Windows NT 3.1 была также добавлена поддержка 80386. Последней версией, поддерживающей i386, была Microsoft Windows NT 3.51.

Процессор i860, для которого велась начальная разработка ОС NT, не получил ко времени завершения работ над Windows NT той поддержки производителями компьютеров, на которую рассчитывали Intel и Microsoft. В результате тремя платформами, поддержка которых была включена в Windows NT 3.1, стали x86, Alpha и MIPS. В выпусках Windows NT 3.x поддержка этих платформ сохранялась, пополнившись в Windows NT 3.51 также архитектурой PReP на основе процессора PowerPC. Однако Windows NT 3.51 не была совместима с компьютерами Macintosh с тем же процессором; фактически, поддерживались только клоны IBM PC с процессором PowerPC вместо x86. Такие компьютеры выпускались в основном фирмами-создателями PowerPC — IBM и Motorola.

Первый выпуск Microsoft Windows NT 4 поддерживал четыре платформы (x86, Alpha, MIPS и PowerPC), но поддержка менее распространённых платформ сокращалась по мере выхода пакетов обновления: из SP1 была удалена поддержка MIPS, из SP3 — поддержка PowerPC. Последними выпусками Windows NT 4 поддерживались только x86 и Alpha; хотя поддержка Alpha планировалась к включению в Windows 2000, она была исключена из версии RC2. В результате единственной платформой, поддерживаемой на Windows 2000, стала x86.

Поддержка 64-битных процессоров была впервые реализована в Windows XP для IA-64 — архитектуры процессоров Intel Itanium. На основе 64-битной версии Windows XP были созданы также 64-битные серверные версии Windows 2000; позже поддержка процессора Itanium была добавлена и в часть версий Microsoft Windows Server 2003. Второй 64-битной архитектурой, поддерживаемой в ОС семейства Windows NT, стала созданная AMD архитектура x86-64, позже реализованная в процессорах Intel под названием EM64T. Одновременно были выпущены Windows Server 2003 SP1 x64 и Windows XP Professional x64, представляющие собой серверный и настольный варианты одной и той же версии Windows — в частности, к этим выпускам применимы одни и те же обновления. С 2005 года корпорацией Майкрософт было принято решение прекратить поддержку IA-64.; последней версией ОС Windows NT, полноценно поддерживающей Itanium, является Windows NT 5.2 (XP Professional 64-bit Edition и Server 2003). Однако для более дорогих (и, соответственно, труднее модернизируемых) серверов были выпущены специальные версии Microsoft Windows Server 2008 и Microsoft Windows Server 2008 R2, а Microsoft Windows Server 2012 поддержки IA-64 уже не получила.

Поддерживаемые платформы

32 разрядная версия

С целью избежать попадания в операционную систему специфичного кода для Intel x86 из-за того, что разработчики привыкли к разработке под х86, Windows NT 3.1 была изначально разработана без использования x86 систем разработки, а затем портирована на архитектуру x86. Сперва эта работа была основана на базе системы Dazzle, которая основана на архитектуре Intel i860, а позднее на основе платформы Jazz, основанной на архитектуре MIPS R4000. Обе системы были разработаны внутри Microsoft.

Windows NT 3.1 была выпущена для компьютеров с Intel x86, DEC Alpha и ARC-совместимых MIPS платформ. В Windows NT 3.51 в 1995 году добавлена поддержка процессоров PowerPC, в частности, PReP-совместимых систем, таких как настольные компьютеры и ноутбуки серии IBM Power Series и серии Motorola PowerStack; но, несмотря на встречи между Майклом Шпиндлером и Биллом Гейтсом, PReP-совместимый проект для Power Macintosh не удалось согласовать.

Корпорация Intergraph портировала Windows NT на архитектуру Clipper, а затем объявила о намерении портировать Windows NT 3.51 на архитектуру SPARC компании Sun Microsystems, но ни одна из версий не была продана в качестве розничного продукта.

Только два варианта Windows NT 4.0 (IA-32 и Alpha) имеют полный набор доступных пакетов обновлений. Все остальные порты сделанные третьими сторонами (Motorola, Intergraph и т.д.) имеют мало, если вообще имеют, публично доступных обновлений.

Windows NT 4.0 была последним крупным релизом с поддержкой Alpha, MIPS и PowerPC, хотя разработка Windows 2000 для Alpha продолжалась до тех пор, пока Compaq не прекратила поддержку Windows NT для этой архитектуры в августе 1999 года; через три дня после этого Microsoft отменила программу AlphaNT, несмотря на то, что разработка Alpha NT 5 (Windows 2000) достигла RC2 (сборка 2128). 5 января 2011 года Microsoft объявила о том, что следующая версия семейства Windows NT будет включать в себя поддержку ARM архитектуры. Microsoft продемонстрировала предварительную версию Windows (версия 6.2.7867) работающую на компьютере с ARM архитектурой на 2011 Consumer Electronics Show. В конечном итоге 26 октября 2012 года это привело к коммерческой версии Windows RT, производной от Windows 8, а также выполнению NT под CE на Windows Phone 8.

По мнению Microsoft, существует распространенное заблуждение, что Xbox и Xbox 360 используют модифицированную ядро Windows 2000, на самом деле операционная система для Xbox была построена с нуля, но реализует множество Microsoft Windows API.

64 разрядная версия

Первоначально 64-разрядные версии Windows NT были предназначены для работы на Itanium и DEC Alpha; последний использовался в Microsoft на ранних стадиях разработки 64-битной Windows. Это продолжалось в течение некоторого времени после того, как Microsoft публично объявила, что не будет выпускать 64-разрядные ОС Microsoft Windows для Alpha. Из-за этого для Alpha имеются только 32-разрядная версия Windows NT.

В то время как Windows 2000 поддерживает только Intel IA-32 (32-разрядная версия), Windows XP, Server 2003, Server 2008 и Server 2008 R2 имеют издание, для систем на базе процессоров Itanium. По сравнению с Itanium, Microsoft поддержала x64 в большем масштабе. Все версии Windows, начиная с Windows XP (у которой есть отдельная 64-разрядная версия), имеют 64-разрядные версии.

См. также

  • ReactOS — операционная система с открытым кодом, совместимая с приложениями и драйверами Windows NT.
  • Microsoft Windows Server

Источники

  1. Microsoft Renames Windows NT 5.0 Product Line to Windows 2000; Signals Evolution of Windows NT Technology Into Mainstream // Microsoft. [2008-2008]. Дата обновления: 20.09.2008. URL: http://www.microsoft.com/en-us/news/press/1998/oct98/nt5.aspx (дата обращения: 27.10.2008).
  2. OperatingSystem.VersionString Property // Microsoft. [2008-2014]. Дата обновления: 10.11.2014. URL: https://msdn.microsoft.com/en-us/library/vstudio/system.operatingsystem.versionstring%28v=vs.100%29.aspx (дата обращения: 10.11.2014).
  3. Cutler, Dave, "Preface", in Russinovich, Mark; Solomon, David A, Microsoft Windows Internals (fourth ed.), Microsoft Press, ISBN 0-7356-1917-4
  4. Microsoft Widens Its Split With IBM Over Software // New York Times. [1991-2008]. Дата обновления: 27.07.1991. URL: http://query.nytimes.com/gst/fullpage.html?res=9D0CE0D81339F934A15754C0A967958260 (дата обращения: 2.09.2008).
  5. Windows Server 2003: The Road To Gold // Win super site. [2003-2010]. Дата обновления: 24.01.2003. URL: http://winsupersite.com/article/windows-server/windows-server-2003-the-road-to-gold-part-one-the-early-years-127432 (дата обращения: 5.01.2010).
  6. Windows NT and VMS: The Rest of the Story // Windows IT pro. [1998-2012]. Дата обновления: 1.12.1998. URL: http://www.windowsitpro.com/article/windows-2000/windows-nt-and-vms-the-rest-of-the-story (дата обращения: 5.05.2012).
  7. "Windows-NT" is "VMS Reimplemented" (sort of) // Sympatico. [1999-2015]. Дата обновления: 17.06.1999. URL: http://www3.sympatico.ca/n.rieck/docs/Windows-NT_is_VMS_re-implemented.html (дата обращения: 25.08.2015).
  8. Supporting Windows NT and 2000 Workstation and Server // Microsoft. [1999-2011]. Дата обновления: 1.12.1999. URL: http://technet.microsoft.com/en-us/library/cc768132.aspx (дата обращения: (29.08.2011).
  9. Microsoft Releases Windows XP 64-Bit Edition Version 2003 to Manufacturing // Microsoft. [2003-2008]. Дата обновления: 28.03.2003. URL: http://www.microsoft.com/presspass/press/2003/mar03/03-28WinXP64BitPR.mspx (дата обращения: 14.01.2008).
  10. Overview of Editions; Windows Server 2008 // Microsoft. [2008-2009]. Дата обновления: 27.02.2008. URL: http://www.microsoft.com/windowsserver2008/en/us/editions-overview.aspx (дата обращения: 18.05.2009).
  11. Operating System Versioning // Microsoft. [2009-2009]. Дата обновления: 20.05.2009. URL: http://msdn.microsoft.com/en-gb/library/dd371754(VS.85).aspx (дата обращения: 6.07.2009).
  12. A closer look at the Windows 7 SKUs // Microsoft. [2009-2009]. Дата обновления: 4.02.2009. URL: http://windowsteamblog.com/blogs/windows7/archive/2009/02/04/a-closer-look-at-the-windows-7-skus.aspx (дата обращения: 5.02.2009).
  13. Windows 7 To Be Released October 22 // Gizmodo. [2009-2009]. Дата обновления: 2.06.2009. URL: http://gizmodo.com/5275938/windows-7-to-be-released-october-22 (дата обращения: 6.06.2009).
  14. Product Roadmap; Windows Server 2008 // Microsoft. [2009-2009]. Дата обновления: 18.04.2009. URL: http://www.microsoft.com/windowsserver2008/en/us/roadmap.aspx (дата обращения: 18.05.2009).
  15. Developer network // Microsoft. [2012-2012]. Дата обновления: 17.03.2012. URL: http://msdn.microsoft.com/en-us/windows/apps/br229516/ (дата обращения: 17.04.2012).
  16. Announcing the Windows 8 Editions // Microsoft. [2012-2012]. Дата обновления: 16.04.2012. URL: http://windowsteamblog.com/windows/b/bloggingwindows/archive/2012/04/16/announcing-the-windows-8-editions.aspx (дата обращения: 17.04.2012).
  17. Windows 8 will be available on… // Microsoft. [20012-2013]. Дата обновления: 26.10.2012. URL: http://windowsteamblog.com/windows/b/bloggingwindows/archive/2012/07/18/windows-8-will-be-available-on.aspx (дата обращения: 18.07.2013).
  18. Windows server 8 named Windows server 2012 // Windows valley. [2012-2012]. Дата обновления: 17.07.2012. URL: http://www.windowsvalley.com/windows-server-8-named-windows-server-2012/ (дата обращения: 18.07.2012).
  19. Windows Server 2012 Editions // Microsoft. [2012-2013]. Дата обновления: 4.09.2012. URL: http://www.microsoft.com/en-us/server-cloud/windows-server/2012-editions.aspx (дата обращения: 8.07.2013).
  20. Microsoft's Windows Blue looks to be named Windows 8.1 // Zdnet. [2013-2013]. Дата обновления: 8.07.2013. URL: http://www.zdnet.com/microsofts-windows-blue-looks-to-be-named-windows-8-1-7000013391/ (дата обращения: 7.07.2013).
  21. Windows 8.1 is ready for its October 17th release // The Verge. [2013-2013]. Дата обновления: 24.08.2013. URL: http://www.theverge.com/2013/8/24/4652054/microsoft-windows-8-1-rtm (дата обращения: 24.08.2013).
  22. Microsoft Confirms that Windows 10 will also be Version 10 Internally // Penton Media. [2014-2014]. Дата обновления: 22.11.2014. URL: http://winsupersite.com/windows-10/microsoft-confirms-windows-10-will-also-be-version-10-internally (дата обращения: 22.11.2014).
  23. Introducing Windows 10 Editions // Microsoft. [2015-2015]. Дата обновления: 13.05.2015. URL: http://blogs.windows.com/bloggingwindows/2015/05/13/introducing-windows-10-editions/ (дата обращения: 13.05.2015).
  24. Microsoft to add new Windows 10 Pro Education edition to its line-up // ZDNet. [2015-2016]. Дата обновления: 29.07.2015. URL: http://www.zdnet.com/article/microsoft-to-add-new-windows-10-pro-education-version-to-its-line-up/ (дата обращения: 27.07.2016).
  25. Программирование Native API приложений для Windows // PP. [2015-2015]. Дата обновления: 24.07.2015. URL: http://hex.pp.ua/nt-native-applications-first-steps.php (дата обращения: 24.07.2015).
  26. MSDN Library // Microsoft. [2015-2015]. Дата обновления: 24.07.2015. URL: http://msdn2.microsoft.com/en-us/library/ (дата обращения: 24.07.2015).
  27. Chapter 28 - OS/2 Compatibility Windows NT Workstation Resource Kit, Microsoft: File List // Microsoft. [2015-2015]. Дата обновления: 24.07.2015. URL: https://www.microsoft.com/resources/documentation/windowsnt/4/workstation/reskit/en-us/os2comp.mspx (дата обращения: 24.07.2015).

Ссылки