Windows NT - лінійка операційних систем (ОС) виробництва корпорації Microsoft і назва перших версій ОС.

Windows NT була розроблена після припинення співпраці Microsoft і IBM над OS / 2, розвивалася окремо від інших ОС сімейства Windows ( Windows 3.x і Windows 9x) і, на відміну від них, позиціонувалася як надійне рішення для робочих станцій (Windows NT Workstation) і серверів (Windows NT Server). Windows NT дала початок сімейству операційних систем, в яке входять: власне Windows NT, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012


1. Історія розробки

Розробка Windows NT під робочою назвою "NT OS / 2 "була розпочата у листопаді 1988 групою фахівців на чолі з Девідом Катлером ( англ. Dave Cutler ), Який перейшов в Microsoft з DEC, де вони розробляли VAX і VMS. [1] Робота йшла паралельно з розробкою фірмою IBM власної ОС, OS / 2 2.0, яка остаточно вийшла лише у квітні 1992. Одночасно з цим фірма Microsoft продовжувала розробляти свої ОС сімейства DOS і Windows, що відрізняються меншими вимогами до ресурсів комп'ютера, ніж IBM OS / 2. Після того, як в травні 1990 була випущена Windows 3.0, Microsoft вирішила додати в NT OS / 2 програмний інтерфейс ( API), сумісний з Windows API. Це рішення викликало серйозні тертя між фірмами Microsoft і IBM, які закінчилися розривом спільної роботи. IBM продовжила розробку OS / 2 самостійно, а Майкрософт стала працювати над системою, яка була в результаті випущена під назвою Windows NT. Хоча ця система не відразу стала популярною, подібно DOS, Windows 3.x або Windows 9.x, з точки зору маркетингу Windows NT виявилася істотно більш вдалою, ніж OS / 2.

Потрібно відзначити, що в якості програмних інтерфейсів ОС NT спочатку планувалися API OS / 2 і потім POSIX, підтримка Windows API була додана в останню чергу. Крім того, в якості апаратної платформи для NT спочатку планувалися Intel i860 і потім MIPS, підтримка Intel x86 також була додана пізніше. Потім, в процесі еволюції цієї ОС зникла підтримка обох спочатку запланованих програмних інтерфейсів і обох спочатку запланованих апаратних платформ. Для i860 навіть не було жодної релізной версії цієї ОС, хоча саме від кодового назви цього процесора, N10 (N Ten), походить назва самої ОС NT. [2] [3] Нині Microsoft розшифровує абревіатуру NT як New Technology. А в якості альтернативи POSIX-підсистемі Microsoft стала пропонувати пакет Сервіси Microsoft Windows для UNIX.

Переносимість NT була однією з її першочергових завдань. Саме тому розробка цієї ОС спочатку велася для процесора i860, хоча двійкова сумісність з OS / 2, колишня однією з умов проекту NT OS / 2, в будь-якому випадку зажадала б створення версії NT для x86, або включення в неї емуляції цієї платформи. Кількість платформ, для яких існували релізной версії ОС сімейства Windows NT, вражає: крім названих MIPS і Intel x86, сюди входять PowerPC, DEC Alpha, Itanium і AMD x86-64. Незалежними виробниками комп'ютерних систем були також розроблені версії Windows NT для архітектур Clipper (англ.) і 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.


2. Версії

Назва (кодова назва), варіанти номер версії перший випуск останній випуск / SP
Windows NT 3.1 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 (Indy) 4.0.1381 29 липня 1996 SP6a ( 30 листопада 1999)
Workstation, Server, Server Enterprise (Granite), Terminal Server (Hydra), Embedded (Impala)
Windows 2000 (Cairo) 5.0.2195 17 лютого 2000 SP4 ( 26 червня 2003)
Professional, Server, Advanced Server, Datacenter Server
Windows XP (Whistler) 5.1.2600 25 жовтня 2001 SP3 ( 6 травня 2008)
Home, Professional, 64-bit, 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 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 8 6.2.9200 26 жовтня 2012 RTM ( 1 серпня 2012)
Windows 8, Windows 8 RT, Професійна, Професійна N, Професійна WMC, Корпоративна, Корпоративна N; x64-варіанти всіх, крім Windows RT
Windows Server 2012 6.2.9200 26 жовтня 2012 RTM ( 1 серпня 2012)
Standard, Datacenter, Storage; всі версії - тільки 64-розрядні

3. Внутрішня архітектура

3.1. Компоненти ядра

3.2. Компоненти користувацького режиму

Підсистема користувача інтерфейсу в Windows NT реалізує віконний інтерфейс, подібний інтерфейсу попередніх версій Windows. Двома типами об'єктів цієї підсистеми, відсутніми в 16-бітових версіях Windows і в Windows 9x, є віконні станції і робочі столи. Віконна станція відповідає одному сеансу користувача Windows NT - наприклад, при підключенні через службу віддаленого робочого столу створюється нова віконна станція. Кожен запущений процес належить одній з віконних станцій; служби, крім позначених як здатні взаємодіяти з робочим столом, запускаються в окремих, невидимих ​​віконних станціях.

Кожна віконна станція має власний буфер обміну, набір глобальних атомів (використовуваних для операцій DDE), і набір робочих столів. Робочий стіл є контекстом всіх глобальних операцій підсистеми користувальницького інтерфейсу, таких як установка хуков і широкомовна розсилка повідомлень. Кожен запущений потік належить до одного з робочих столів - тому, де розташовані обслуговуються їм вікна; зокрема, один потік не може створити кілька вікон, що належать до різних робочих столів. Один з робочих столів може бути активним (видимим користувачеві і здатним реагувати на його дії), інші робочі столи заховані. Можливість створити для одного сеансу роботи кілька робочих столів і перемикатися між ними до теперішнього часу не надавалася стандартними засобами для користувача інтерфейсу Windows, хоча існують сторонні програми, що дають доступ до цієї функціональності.

Віконними станціями і робочими столами вичерпуються об'єкти підсистеми користувальницького інтерфейсу Windows NT, яким можуть бути призначені права доступу. Решту типи об'єктів - вікна і меню - надають повний доступ будь-якому процесу, який перебуває з ними в одній віконної станції. Тому служби Windows NT за замовчуванням запускаються в окремих віконних станціях: вони працюють з підвищеними привілеями, і можливість процесів користувача необмежено маніпулювати вікнами служб могла б призвести до збоїв та / або проблем безпеки.


4. Програмні інтерфейси

4.1. 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 2003, доступні в рамках програми Windows Research Kernel.

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


4.2. 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 і доступна на веб-сайті. [5]

Бібліотеки підтримки Win32 API в основному названі так само, як системні бібліотеки Windows 3.x, з додаванням суфікса 32: це бібліотеки kernel32, advapi32, gdi32, user32, comctl32, comdlg32, shell32 і ряд інших. Опції Win32 API можуть або самостійно реалізовувати необхідну функціональність у користувальницькому режимі, або викликати описані вище функції Native API, або звертатися до підсистеми csrss допомогою механізму LPC (англ.), або здійснювати системний виклик в бібліотеку win32k, що реалізовує необхідну для Win32 API підтримку в режимі ядра. Чотири перерахованих варіанти можуть також комбінуватися в будь-якому поєднанні: наприклад, функція Win32 API WriteFile звертається до функції Native API NtWriteFile для запису в дисковий файл, і викликає відповідну функцію csrss для виведення в консоль.

Підтримка Win32 API включена в сімейство ОС Windows 9x; крім того, вона може бути додана в 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 вже не стоїть так гостро, як раніше .


4.3. 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, яка завантажує та використовує допомогою LPC-викликів підсистеми os2srv і os2ss. Решта системні бібліотеки OS / 2, крім двох названих (kbdcalls, mailslot, moncalls, nampipes, quecalls, viocalls і ще десяток), не зберігаються як окремі файли, а емулюються. Програми, написані для OS / 2 2.0 і вище, а також віконні програми та програми, безпосередньо працюють з пристроями комп'ютера, в тому числі драйвери, системою Windows NT не підтримуються.

Обидві ці підсистеми, необов'язкові для роботи більшості додатків, були видалені в Windows XP і подальших випусках Windows. За допомогою маніпуляцій з реєстром їх можна було відключити і в попередніх версіях Windows NT, що рекомендувалося фахівцями з комп'ютерної безпеки з метою скорочення поверхні атаки комп'ютерної системи.


4.4. 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, которые позволяют 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.


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

Как уже было отмечено, создание версии 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 также архитектурой PReP (англ.) на основе процессора PowerPC. Однако Windows NT 3.51 не была совместима с компьютерами Macintosh с тем же процессором; фактически, поддерживались только клоны IBM PC с процессором PowerPC вместо x86. Такие компьютеры выпускались в основном фирмами-создателями PowerPC - IBM и Motorola.

Перший випуск 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 була додана і в частину версій 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). Однак для більш дорогих (і, відповідно, важче модернізованих) серверів були випущені спеціальні версії Windows Server 2008 і Windows Server 2008 R2, а Windows Server 2012 підтримки IA-64 вже не отримала.


Примітки

  1. Н. А. Оліфер, В. Г. Оліфер. Історія Windows NT - www.citforum.ru/operating_systems/sos/glava_37.shtml / / Мережні операційні системи
  2. NT Stands for ... - Matt Mullenweg - ma.tt/2003/02/nt-stands-for /
  3. Paul Thurrott's SuperSite for Windows: Windows Server 2003: The Road To Gold, Part One: The Early Years - www.winsupersite.com/reviews/winserver2k3_gold1.asp
  4. Програмування Native API додатків для Windows - hex.pp.ua / nt-native-applications-first-steps.php
  5. MSDN Library - msdn2.microsoft.com/en-us/library /