Windows Package Manager
- 1 year ago
- 0
- 0
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 по умолчанию запускаются в отдельных оконных станциях: они работают с повышенными привилегиями, и возможность процессов пользователя неограниченно манипулировать окнами служб могла бы привести к сбоям и/или проблемам безопасности.
Для прикладных программ системой 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.
Чаще всего прикладными программами для 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 уже не стоит так остро, как раньше.
В отличие от большинства
свободных
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, что рекомендовалось специалистами по компьютерной безопасности в целях сокращения поверхности атаки компьютерной системы.
Чтобы обеспечить
двоичную совместимость
с существующими программами для предыдущих семейств ОС от 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 уже не получила.