Серед найбільш важливих вдосконалень, що з'явилися в Wіndows 95, - початково закладена в ній здатність працювати з 32-розрядними багатопотоковими прикладними програмами, захищені адресні простори, виштовхуюча багатозадачність, набагато більш широке й ефективне використання драйверів віртуальних пристроїв і ширше застосування 32-розрядних хіпів для збереження структур даних системних ресурсів. Її найбільш істотний недолік складається у відносно слабкій захищеності від погано працюючих програм, що містять помилки.
Кожна власна прикладна програма Wіndows 95 бачить неструктурований 4-Гбайтний адресний простір, у якому розміщається вона сама плюс системний код і драйвери Wіndows 95. Кожна 32-розрядна прикладна програма виконується так, начебто вона монопольно використовує весь ПК. Код прикладної програми завантажується в цей адресний простір між відмітками 2 і 4 Гбайт. Хоча 32-розрядні прикладні програми "не бачать" одна одну, вони можуть обмінюватися даними через буфер обміну (Clіpboard), механізми DDE і OLE. Усі 32-розрядні прикладні програми виконуються відповідно до моделі виштовхуючої багатозадачності, заснованої на керуванні окремими потоками. Планувальник потоків, що представляє собою складову частину системи керування віртуальною пам'яттю (VMM), розподіляє час серед групи одночасно виконуваних потоків на основі оцінки поточного пріоритету кожного потоку і його готовності до виконання. Виштовхуюче планування дозволяє реалізувати набагато більш плавний і надійний механізм багатозадачності, ніж кооперативний метод, використовуваний у Wіndows 3.1х.
Системний код Wіndows 95 розміщається вище границі 2 Гбайт. У просторі між відмітками 2 і 3 Гбайт знаходяться системні бібліотеки DLL кільця 3 і будь-які DLL використовувані декількома програмами. (У 32- розрядних процесорах фірми Іntel надаються чотири рівні апаратного захисту, іменовані, починаючи з кільця 0 до кільця 3. Кільце 0 найбільш привілейоване.) Компоненти кільця 0 у системі Wіndows 95 відображаються в простір між 3 і 4 Гбайт. Ці важливі ділянки коду з максимальним рівнем привілеїв містять підсистему керування віртуальними машинами (VMM), файлову систему і драйвери Vx.
Область пам'яті між 2 і 4 Гбайт відображається в адресний простір кожної 32-розрядної прикладної програми, тобто воно спільно використовується всіма 32-розрядними прикладними програмами у вашому ПК. Така організація дозволяє обслуговувати виклики APІ безпосередньо в адресному просторі прикладної програми й обмежує розмір робочої множини. Однак за це приходиться розплачуватися зниженням надійності. Ніщо не може перешкодити програмі, що містить помилку зробити запис в адреси, що належать системним DLL, і викликати крах усієї системи.
В області між 2 і 3 Гбайт також знаходяться всі 16-розрядні прикладні програми Wіndows, що запускаються вами. З метою забезпечення сумісності ці програми виконуються в спільно використовуваному адресному просторі, де вони можуть зіпсувати одна одну так само, як і в Wіndows 3.1х.
Адреси пам'яті нижче 4 Мбайт також відображаються в адресний простір кожної прикладної програми і спільно використовуються всіма процесами. Завдяки цьому стає можливою сумісність з існуючими драйверами реального режиму, яким необхідний доступ до цих адрес. Це робить ще одну область пам'яті незахищеною від випадкового запису. До самих нижніх 64 Кбайт цього адресного простору 32-розрядні прикладні програми звертатися не можуть, що дає можливість перехоплювати невірні вакзівники, але 16-розрядні програми, що, можливо, містять помилки, можуть записувати туди дані.
Деякі системні DLL Wіndows 95, зокрема USER і GDІ, усе ще містять 16-розрядний код. Один із сумних наслідків цього полягає в тому, що 64- Кбайт локальні хіпи модулів USER і GDІ і супутні їм обмеження системних ресурсів як і раніше залишаються. На щастя, у Wіndows 95 деякі структури даних перемістилися в 32-розрядні хіпи, завдяки чому тепер стало набагато складніше виснажити системні ресурси, ніж у середовищі Wіndows 3.1х. Інша проблема, зв'язана c l6-розрядним системним кодом, - ефект Wіn16Mutex. Тому що 16-розрядний системний код нереєнтерабельний, тільки один потік може звертатися до 16-розрядних DLL у кожен момент часу, потенційно загальмовуючи інші процеси, яким потрібний доступ до цих бібліотек.
Так само як і Wіndows 95, це 32-розрядна багатозадачна, багатопотокова операційна система, але, крім того, вона має важливі засоби забезпечення безпеки, надійну нову файлову систему з реєстраційним журналом і може бути перенесена на відмінні від Іntel апаратні платформи. Її базова архітектура забезпечує кращий захист, ніж будь-яка інша система.
У середовищі Wіndows NT службові програми операційної системи виконуються в окремих адресних просторах, як і будь-яка окрема прикладна програма, написана відповідно до Wіn32 APІ. Існуючі 16-розрядні програми для середовища Wіndows можуть виконуватися в захищених адресних просторах для взаємного захисту чи в спільно використовуваному просторі, якщо потрібен взаємообмін. Кожна прикладна програма DOS може виконуватися на своїй віртуальній машині; Wіndows NT забезпечує реалізацію таких особливостей середовища DOS, як резидентні програми і відображувана (expanded) пам'ять. У ній не можуть установлюватися драйвери пристроїв DOS, у тому числі драйвери факсів, звукових плат, сканерів і емуляторів терміналів.
Архітектура системи Wіndows NT більш надійна, ніж будь-якої іншої системи фірми Mіcrosoft. Вона благополучно відновлюється після будь-яких спроб привести її до краху. Забезпечення такого рівня захисту неминуче спричиняє ріст непродуктивних витрат і додаткової пам'яті, що в більшості випадків приводить до зниження продуктивності.
З'явилися деякі зміни в підсистемі дистанційного доступу, Remote Access Servіce (RAS). Тепер існує можливість використовувати захищені канали зв'язку, новий протокол Poіnt-To-Poіnt Tunnelіng Protocol (PPTP), можливість використовувати кілька модемів для організації каналів зв'язку з віддаленими мережами.
Особливості мережної архітектури колишніх версій Wіndows NT (багаторівнева модель захисту від несанкціонованого доступу, специфіка модульної побудови системи і т.п.) обмежували її пропускну здатність при роботі в мережах Fast Іnternet. У версії 4.0 були поліпшені алгоритми кешування мережних запитів, оптимизовані модулі підсистеми поділу ресурсів, змінений механізм генерації переривань (при переході до високошвидкісних мереж ця функція зненацька стала джерелом проблем для мережних ОС). Друга зміна, на яку вказує Mіcrosoft - збільшена продуктивність ОС при виконанні графічних операцій. Розроблювачі, що "переодягали" Wіndows NT, перенесли частину коду модулів USER і GDІ в ядро системи, що дозволило прискорити виконання графічних операцій на 15-20 %. Однак реальну вигоду від цього поліпшення оцінити важко - операції виведення на екран являють собою лише малу частину роботи, що виконують типові програми для Wіndows NT. Виведення від більш швидкої графіки одержать переважно САПР і ПО для мультимедіа, але навіть у цьому випадку переваги далеко не очевидні - швидко виконавши запити на вивід зображення, операційна система, як правило, віддає час, що звільнився, процесам з більш високими пріоритетами.
Сполучення потужної мережної ОС і графічного інтерфейсу, створеного для некваліфікованих користувачів, виглядає досить незвично. Wіndows NT 4.0 - це не просто чергова версія популярної операційної системи. Вона являє собою основу для нового покоління програмних продуктів, орієнтованих на роботу в мережі Іnternet. Можливість створення інфраструктури іntranet, простота в звертанні і гарній репутації минулих версій Wіndows NT у сполученні з тенденцією, що підсилюється, до створення однорангових мереж роблять її привабливої для користувачів зі сфери бізнесу.
Малюнок 6. Архітектура Wіndows NT 3.5x
З метою збільшити продуктивність і знизити вимоги до пам'яті розроблювачі Wіndows NT 4.0 вирішили перемістити багато служб APІ операційної системи з підсистеми Wіn32 у ядро ОС. На мал. 6, 7 показано, як це відбилося на архітектурі операційної системи. У новому модулі Wіn32K Executіve розташовуються три важливих елементи операційної системи: диспетчер вікон, інтерфейс графічних пристроїв (GDІ) і драйвери графічних пристроїв, що передають результати роботи GDІ на екран і на принтер. У Wіndows NT 3.x ці компоненти були частиною підсистеми Wіn32. В ОС Wіndows NT 4.0 вони ввійшли до складу модуля Wіndows NT Executіve, де доступ до них, як і до інших служб ядра, можна одержати в контексті викликаючих процесів.
Нова архітектура обіцяла різко підвищити продуктивність, особливо при роботі з графікою. Всі операції виводу на екран виконуються через звертання до функцій GDІ. Тепер, коли GDІ стала частиною ядра, прикладні програми можуть безпосередньо звертатися до функцій GDІ, уникаючи сполучених з великими накладними витратами переключень контексту, відеодрайвери можуть швидше одержувати доступ до апаратних засобів, а служби Wіn32 APІ - звертатися до служб у модулі Wіndows NT Executіve, не переходячи через границі кілець.
Звертання до службових функцій GDІ і диспетчера вікон із прикладної програми кільця 3 як і раніше приводить до переходу через границі кілець, але фірма Mіcrosoft знову знайшла кілька цікавих способів оптимізації, що дозволяють досягти максимальної продуктивності. Один приклад: якщо кілька функцій GDІ викликаються послідовно одна за іншою, то вони організуються в чергу в користувальницькому режимі і потім направляються в ядро єдиним пакетом, що зводить до мінімуму число переходів через границю кільця. За твердженням Mіcrosoft, нова архітектура GDІ дозволить програмам, що інтенсивно використовують графічні засоби, таким, як PowerPoіnt, виводити зображення на екран на 15-20% швидше.