Budowa Windows NT: mechanizmy zgodności, które działają do dziś

Windows NT miał być w założeniu systemem zdolnym do udawania każdego z trzech głównych systemów z końca lat 80-tych. Zapewniało to możliwość uruchamiania aplikacji Windows, OS/2 i Unix. Niewiele pozostało dziś z tych planów, choć Windows 11 oferuje wiele platform programistycznych.

Budowa Windows NT
Budowa Windows NT
Źródło zdjęć: © Licencjodawca | Kamil Dudek
Kamil J. Dudek

Popularność Windowsa nie bierze się z tego, że jest fantastycznym systemem operacyjnym. Wszak nim nie jest: Windows 11 stał się ciężki, połatany i niemożliwy do renowacji na niższych poziomach. Jego wszechobecność to efekt utrzymywania kompatybilności oraz inercji producentów sprzętu, piszących sterowniki. Gdyby nie detal o nazwie "oprogramowanie", Windowsa dawno zastąpiono by którymś z wielu konkurentów. Ale argumenty przytaczające pakiet Microsoft Office i Photoshopa wciąż są aktualne.

Mechanizmy zgodności

W jaki sposób Windows zapewnia zgodność? Przede wszystkim bardzo powoli rozstając się ze starymi bibliotekami. Obsługę aplikacji 16-bitowych utracił dopiero w 2021 roku. Zlikwidował Internet Explorera jedynie poprzez usunięcie najbardziej wierzchniej warstwy: MSHTML, HTA, VBS i BHO dalej są obecne w systemie. A wprowadzając nowe wersje bibliotek, dalej trzyma te stare: stosując mechanizm SXS i tryby zgodności, oferuje starszym aplikacjom stosowne wersje plików DLL. Sprawia to, że programy nie korzystają bezpośrednio z plików z katalogu SYSTEM32. Każde żądanie jest najpierw przechwytywane przez mechanizm zgodności (shim), który wybiera odpowiednią dla aplikacji wersję. To spory narzut i znaczący wzrost złożoności. Ale opłaca się.

To bardzo duża inwestycja w kompatybilność. Mechanizm zgodności jest olbrzymi i wciąż rozbudowywany. Jednym z etapów zbierania telemetrii w Windows (CompatTelRunner) jest aktualizowanie i raportowanie lokalnej bazy zgodności, zawierającej informacje o tym, które zainstalowane programy żądały których bibliotek. Katalog WinSxS zawiera tysiące katalogów. A gdy jakieś API pojawia się w systemie, bardzo rzadko go opuszcza. Dlatego możemy znaleźć w Windowsie silniki rysujące Trident (Internet Explorer) i EdgeHTML, Visual Basic, mechanizm Outlook MAPI, obsługę WinRT (Metro, znane z Windows 8), .NET Framework 2.0, DirectPlay, usługę faksowania i SMB 1.0. Pliki te nie pojawiają się w starych wersjach: są regularnie przebudowywane. Stanowią integralną część systemu i są powodem, dla którego zdekompresowane źródło instalacyjne Windows zajmuje dziś 16 gigabajtów.

Dalsza część artykułu pod materiałem wideo

Runtime!

Choć systemowa biblioteka języka C jest uznawana za wewnętrzną tylko na potrzeby systemu, jej struktura zachowuje wysoką zgodność na przestrzeni lat. Visual Studio nalega, by kompilować do dedykowanego MSVCRT, które następnie powinno być rozpowszechniane razem z aplikacją (co uległo znacznemu uproszczeniu w ostatnich latach), ale nawet to przebiega w bezproblemowy sposób. Biblioteki .NET Framework także są obecne w Windows, a gdy jakaś antyczna aplikacja (sprzed 2010) zażąda wersji 2.0 CLR, Windows Update pobierze starszą. Nowy .NET oferuje już możliwość bundlowania środowiska uruchomieniowego w formie redystrybucyjnej aplikacji. Zapewnia to prawdopodobnie zgodność z Windowsem na kolejne lata.

Coś takiego jest nieobecne u konkurentów. Android 14 usuwa kompatybilność z aplikacjami dla Androidów starszych niż 6.0 (zmiana ta ma więcej wspólnego z zabezpieczeniami niż z ABI, ale liczy się efekt). W macOS, niepodpisane i 32-bitowe aplikacje w ogóle nie działają, a najpopularniejsze programy zapewniają zgodność z tylko kilkoma wersjami wstecz. Linux z kolei w ogóle mało się przejmuje tą kwestią. Wszystko zależy od liczby zależności. Z powodzeniem możemy trafić na dwudziestoletnią aplikację, która zadziała od razu. Albo na trzydziestoletnią, która będzie wymagać tylko przebudowania. Zdarzą się aplikacje, w których nie będzie szans na uruchomienie np. dźwięku. Ale możemy też napotkać na problemy z tylko kilkuletnim programem, ze względu na zmiany w GTK lub biblioteki niezbudowane dla nowszej wersji.

Osobowości

Twórcy NT marzyli, że system ten będzie umiał "udawać" Uniksa i Windowsa na równych prawach - za pomocą podsystemu "osobowości" i implementując referencyjnie "userland" POSIX i Win32, NT miało zapewniać "wieczystą" zgodność. Aktualizacje miały polegać na dodawaniu nowej osobowości. Zgodność tę usunięto już dawno temu. Dzisiejszy WSL nią na przykład nie jest. Zwyciężyło bezsprzecznie Win32. Ale samo w sobie, środowisko programowania Windows nie jest cudem techniki.

Na rynku IT dźwigają je głównie decyzje biznesowe, w postaci olbrzymiej liczby mechanizmów zgodności. Teoretycznie, mogłyby one być osadzone na dowolnym systemie - ale to tylko teoria. Nie zanosi się na przeniesienie Windows API na żaden inny system. Dopóki fundamenty NT nie zawalą się pod ciężarem dodatków, trzydziestoletnia zgodność będzie w Redmond zarabiać pieniądze.

Wybrane dla Ciebie
ZondaCrypto. Policja ostrzega przed kolejnym oszustwem
ZondaCrypto. Policja ostrzega przed kolejnym oszustwem
NASK: prorosyjskie grupy przejmują kamery z Polski
NASK: prorosyjskie grupy przejmują kamery z Polski
Problemy po aktualizacji Windows 11. Co powoduje KB5083769?
Problemy po aktualizacji Windows 11. Co powoduje KB5083769?
mBank ostrzega przed majówką. Podał terminy przelewów
mBank ostrzega przed majówką. Podał terminy przelewów
Ważne zmiany na Facebooku. Dotyczą prywatności
Ważne zmiany na Facebooku. Dotyczą prywatności
Santander wydał komunikat. "Wracamy jako Erste Bank Polska"
Santander wydał komunikat. "Wracamy jako Erste Bank Polska"
Khaby Lame i awatar AI. Miał być wielki deal, jest rozczarowanie
Khaby Lame i awatar AI. Miał być wielki deal, jest rozczarowanie
Bruksela wykłada 63 mln euro na "cyfrową rewolucję". Kto zyska?
Bruksela wykłada 63 mln euro na "cyfrową rewolucję". Kto zyska?
Zmiany w Windows 11. Ważna deklaracja Microsoftu
Zmiany w Windows 11. Ważna deklaracja Microsoftu
Awaryjna aktualizacja .NET - odpowiedź na groźną lukę
Awaryjna aktualizacja .NET - odpowiedź na groźną lukę
Nowość w mObywatelu. Pobierz aktualizację
Nowość w mObywatelu. Pobierz aktualizację
WhatsApp testuje nowość. "Zajrzy" do wszystkich rozmów
WhatsApp testuje nowość. "Zajrzy" do wszystkich rozmów
NIE WYCHODŹ JESZCZE! MAMY COŚ SPECJALNIE DLA CIEBIE 🎯