Interested Article - Windows NT

Windows NT — линейка операционных систем (ОС) производства корпорации Microsoft и название первых версий ОС.

Windows NT была разработана в начале 1990-х после прекращения сотрудничества Microsoft и IBM над OS/2 , развивалась отдельно от других ОС семейства Windows ( Windows 3.x и Windows 9x ) и, в отличие от них, позиционировалась как надёжное решение для рабочих станций (Windows NT Workstation) и серверов (Windows NT Server). Windows NT дала начало семейству операционных систем, в которое входят: собственно Windows NT 3.1 , Windows NT 3.50 , Windows NT 3.51 , Windows NT 4.0 , Windows 2000 , Windows XP , Windows XP Professional x64 Edition , Windows Server 2003 , Windows Vista , Windows Server 2008 , Windows 7 , Windows Server 2008 R2 , Windows 8 , Windows 8.1 , Windows Server 2012 , Windows Server 2012 R2 , Windows 10 , Windows Server 2016 , Windows Server 2019 , Windows 11 , Windows Server 2022 .

История разработки

Разработка Windows NT под рабочим названием «NT OS/2 » была начата в ноябре 1988 года группой специалистов во главе с Дэвидом Катлером , который перешёл в Microsoft из DEC , где они разрабатывали VAX и OpenVMS . Работа шла параллельно с разработкой фирмой IBM собственной ОС, OS/2 2.0 , которая окончательно вышла только в апреле 1992 года . В России была выпущена 13 июня 1992 года.

Одновременно с этим корпорация Microsoft продолжала разрабатывать свои ОС семейства DOS и Windows , отличавшиеся меньшими требованиями к ресурсам компьютера, чем IBM OS/2. После того, как в мае 1990 года была выпущена Windows 3.0 , Microsoft решила добавить в NT OS/2 программный интерфейс ( API ), совместимый с Windows API . Это решение вызвало серьёзные трения между фирмами Майкрософт и IBM, которые закончились разрывом совместной работы. IBM продолжила разработку OS/2 самостоятельно, а Microsoft стала работать над системой, которая была в результате выпущена под названием Windows NT. Хотя эта система не сразу стала популярной, подобно DOS, Windows 3.x или Windows 9x, с точки зрения маркетинга Windows NT оказалась существенно более удачной, чем OS/2.

В качестве программных интерфейсов ОС NT изначально планировались API OS/2 и затем — POSIX , поддержка Windows API была добавлена в последнюю очередь. Кроме того, в качестве аппаратной платформы для NT изначально планировались Intel i860 и затем — MIPS , поддержка Intel x86 также была добавлена позднее. Затем в процессе эволюции этой ОС исчезла поддержка обоих изначально запланированных программных интерфейсов и обеих изначально запланированных аппаратных платформ. Для i860 не было ни одной стабильной версии этой ОС, хотя именно от кодового названия этого процессора, N10 (N Ten), происходит название самой ОС NT . Ныне Microsoft расшифровывает аббревиатуру NT как New Technology . А в качестве альтернативы POSIX-подсистеме Microsoft стала предлагать Подсистему для приложений на базе UNIX . В обновлении «Anniversary Update» для Windows 10 за июль 2016 года предложена бета-версия подсистемы Windows Subsystem for Linux для выполнения бинарных исполняемых файлов для ядра Linux без применения виртуализации . В качестве базовой системы предлагается образ Ubuntu , в версии за 11 апреля 2017 добавлены также образы SUSE и Fedora .

Переносимость NT была одной из её первоочередных задач. Именно поэтому разработка этой ОС изначально велась для процессора i860, хотя двоичная совместимость с OS/2, бывшая одним из условий проекта NT OS/2, в любом случае потребовала бы создания версии NT для x86 либо включения в неё эмуляции этой платформы. Количество платформ, для которых существовали релизные версии ОС семейства Windows NT, впечатляет: кроме названных MIPS и Intel x86, сюда входят PowerPC , DEC Alpha , Itanium и AMD x86-64 . Независимыми производителями компьютерных систем были также разработаны версии Windows NT для архитектур и SPARC ; однако эти версии не были выпущены как самостоятельные программные продукты. В качестве ОС высокой переносимости при разработке NT были взяты за пример ОС Unix и Mach .

Для разработки ОС NT фирма Microsoft пригласила группу специалистов из компании DEC во главе с Дэвидом Катлером , обладавшую опытом создания многозадачных операционных систем, таких как VAX/VMS и RSX-11 . Некоторое сходство, отмеченное между внутренними архитектурами Windows NT и ОС семейства VMS, дало основания обвинить вновь принятых сотрудников Microsoft в краже интеллектуальной собственности DEC. Возникший конфликт был разрешён мирным путём: DEC признала собственность Microsoft на технологии, лежавшие в основе Windows NT, а Microsoft создавала и поддерживала версию Windows NT для архитектуры DEC Alpha.

Несмотря на общие корни, совместимость Windows NT и OS/2 уменьшалась с каждым новым выпуском этой ОС. Поддержка API OS/2 2.0, хотя планировалась в NT, так и не была завершена; в Windows NT 4.0 была удалена поддержка файловой системы HPFS , а в Windows XP была удалена подсистема поддержки программ для OS/2 1.x.

Версии

Название ( кодовое название ), варианты номер версии первый выпуск последний выпуск / SP
Windows NT 3.1 (NT OS/2) 3.1.528 27 июля 1993 SP3 (10 ноября 1994)
Workstation, Advanced Server
Windows NT 3.5 ( Daytona ) 3.5.807 21 сентября 1994 SP3 (21 июня 1995)
Workstation, Server
Windows NT 3.51 ( Tukwila ) 3.51.1057 30 мая 1995 SP5 (19 сентября 1996)
Workstation, Server
Windows NT 4.0 (Cairo) 4.0.1381 29 июля 1996 SP6a (30 ноября 1999)
Workstation, Server, Server Enterprise ( Granite ), Terminal Server ( Hydra ), Embedded ( Impala )
Windows 2000 ( NT 5.0 ) 5.0.2195 17 февраля 2000 SP4 (26 июня 2003)
Professional, Server, Advanced Server, Datacenter Server
Windows XP ( Odyssey, Whistler, .NET 2001, NT 5.1 ) 5.1.2600 25 октября 2001 SP3 (6 мая 2008)
Home, Professional, Media Center ( eHome ), Tablet PC, Starter, Embedded ( Mantis ), N; Windows Fundamentals for Legacy PCs ( Eiger )
Windows Server 2003 ( Whistler Server , Windows .NET Server ) 5.2.3790 24 апреля 2003 SP2 (13 мая 2007)
Standard, Enterprise, Datacenter, Web, Small Business Server ( Bobcat ), Compute Cluster Server, Storage Server; Windows XP Professional x64
Windows Vista ( Longhorn ) 6.0.6000 30 января 2007 SP2 (25 мая 2009)
Starter, Home Basic, Home Premium, Business, Enterprise, Ultimate, N Home Basic, N Business; x64-варианты всех, кроме Starter
Windows Home Server 6.0.2423 16 июля 2007 Power Pack 3 (24 ноября 2009)
Windows Server 2008 ( Longhorn Server ) 6.0.6001 27 февраля 2008 SP2 (27 мая 2009)
Standard, Enterprise, Datacenter, HPC, Web, Storage, Small Business ( Cougar ), Essential Business ( Centro ), Itanium; x64-варианты всех, кроме HPC
Windows 7 ( Blackcomb , Vienna ) 6.1.7600 22 октября 2009 SP1 (KB976932) (22 февраля 2011)
Начальная, Домашняя базовая, Домашняя расширенная, Профессиональная, Корпоративная, Максимальная, Windows 7 N, Windows 7 E; x64-варианты всех, кроме Начальной
Windows Server 2008 R2 6.1.7600 22 октября 2009 SP1 (KB976932) (22 февраля 2011)
Standard, Enterprise, Datacenter, HPC, Web, Storage, Small Business , Itanium; все версии — только 64-разрядные
Windows Home Server 2011 6.1.7657 6 апреля 2011
Windows 8 ( Red ) 6.2.9200 26 октября 2012 Pro ( 26 октября 2012)
Windows 8, Windows 8 RT, Профессиональная, Профессиональная N, Профессиональная WMC, Корпоративная, Корпоративная N; x64-варианты всех, кроме Windows RT
Windows Server 2012 6.2.9200 26 октября 2012 RTM (1 августа 2012)
Foundation, Essentials, Standard, Datacenter; все версии — только 64-разрядные
Windows 8.1 ( Blue ) 6.3.9600 18 октября 2013 Update (2 апреля 2014)
Windows 8.1, Windows 8.1 RT, Профессиональная, Профессиональная N, Профессиональная WMC, Корпоративная, Корпоративная N; x64-варианты всех, кроме Windows RT
Windows Server 2012 R2 6.3.9600 18 октября 2013 RTM (18 октября 2013)
Foundation, Essentials, Standard, Datacenter; все версии — только 64-разрядные
Windows 10 ( 8.2, 9, Threshold, Redstone, Vadanium, Vibranium ) 10.0.10240 29 июля 2015 22H2 (18 октября 2022)
Домашняя, Профессиональная, Мобильная, Корпоративная, для образовательных учреждений, мобильная корпоративная, IoT Домашняя; x86, x86-64 и ARM
Windows Server 2016 ( Server vNext ) 10.0.14393 29 сентября 2016 1803 (30 апреля 2018)
Essentials, Standard, Datacenter ; все версии — только 64-разрядные
Windows Server 2019 10.0.17763 2 октября 2018 20H2 (20 октября 2020)
Essentials, Standard, Datacenter; все версии — только 64-разрядные
Windows Server 2022 10.0.20348 18 августа 2021 21H2 (18 августа 2021)
Essentials, Standard, Datacenter; все версии — только 64-разрядные
Windows 11 ( Sun Valley , 10X ) 10.0.22000.168 5 октября 2021 23H2 (31 октября 2023)
Домашняя, Профессиональная, Мобильная, Корпоративная, для образовательных учреждений, мобильная корпоративная, IoT Домашняя; x86, x86-64 и ARM

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

Компоненты ядра

Компоненты пользовательского режима

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

Каждая оконная станция имеет собственный буфер обмена , набор глобальных атомов (используемых для операций DDE ), и набор рабочих столов . Рабочий стол является контекстом всех глобальных операций подсистемы пользовательского интерфейса, таких как установка хуков и широковещательная рассылка сообщений. Каждый запущенный поток принадлежит к одному из рабочих столов — тому, где расположены обслуживаемые им окна; в частности, один поток не может создать несколько окон, принадлежащих к различным рабочим столам. Один из рабочих столов может быть активным (видимым пользователю и способным реагировать на его действия), остальные рабочие столы спрятаны. Возможность создать для одного сеанса работы несколько рабочих столов и переключаться между ними до выхода Windows 10 не предоставлялась стандартными средствами пользовательского интерфейса Windows, хотя существуют сторонние программы, дающие доступ к этой функциональности.

Оконными станциями и рабочими столами исчерпываются объекты подсистемы пользовательского интерфейса Windows NT, которым могут быть назначены права доступа. Оставшиеся типы объектов — окна и меню — предоставляют полный доступ любому процессу, который находится с ними в одной оконной станции. Поэтому службы 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, ставшие доступными в результате утечки, либо используя исходные тексты Windows Server 2003 , доступные в рамках программы .

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

Win32 API

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

Библиотеки поддержки Win32 API в основном названы так же, как системные библиотеки 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 включена в семейство ОС Windows 9x ; кроме того, она может быть добавлена в Windows 3.1x установкой пакета Win32s . Для облегчения переноса существующих Windows-приложений, использующих для представления строк -кодировки, все функции 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 — например, для работы с кучей , со структурными исключениями , с Юникодом . Внутри этих функций используются как Native API, так и -вызовы в подсистему psxss , являющуюся обычным Win32-процессом.

Для выполнения 16-битных программ, написанных для OS/2 1.x, в состав Windows NT включены две системных библиотеки OS/2 ( doscalls и netapi ) и консольная программа- эмулятор os2 , которая загружает и использует посредством 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 — это — небольшие секции кода, выполняющие преобразования (например типов) или обеспечивающие вызов 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 , но к моменту выпуска Windows NT 3.1 была также добавлена поддержка 80386 . Последней версией, поддерживавшей i386, была 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 также архитектурой на основе процессора PowerPC . Однако Windows NT 3.51 не была совместима с компьютерами Macintosh с тем же процессором; фактически, поддерживались только клоны IBM PC с процессором PowerPC вместо x86. Такие компьютеры выпускались в основном фирмами — создателями PowerPC — IBM и Motorola .

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

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

См. также

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

Примечания

  1. Н. А. Олифер, В. Г. Олифер. от 21 марта 2009 на Wayback Machine // Сетевые операционные системы
  2. от 6 января 2014 на Wayback Machine // G. Pascal Zachary, 2009
  3. . Дата обращения: 3 августа 2008. 6 января 2014 года.
  4. 4 июня 2010 года.
  5. . Дата обращения: 2 октября 2015. Архивировано из 16 октября 2017 года.
  6. . Дата обращения: 2 октября 2015. 9 октября 2015 года.
  7. . Дата обращения: 2 октября 2015. 5 марта 2016 года.
  8. . Дата обращения: 17 июня 2017. 27 февраля 2017 года.
  9. . Дата обращения: 17 июня 2017. 18 июня 2017 года.
  10. Дата обращения: 8 октября 2018. 4 января 2020 года.
  11. . m24.ru . Дата обращения: 29 июля 2021. 29 июля 2021 года.
  12. . Дата обращения: 4 февраля 2011. 21 февраля 2011 года.
  13. . Дата обращения: 25 февраля 2007. 2 февраля 2007 года.
  14. от 6 ноября 2015 на Wayback Machine / Windows NT Workstation Resource Kit, Microsoft: File List (англ.)

Ссылки

  • Microsoft, 1989—1990 — доступна в рамках программы , а также в Американском музее национальной истории
  • Microsoft, 1995, ISBN 1-57231-343-9
Источник —

Same as Windows NT