W Windows Server 2003 wprowadzono wiele istotnych zmian na poziomie jądra (kernela). Obejmują one wiele kluczowych aspektów działania systemu - różnych ograniczeń (wielkość pamięci, rejestru), sposobu obsługi dysku i wykonywania operacji wejścia/wyjścia, udoskonalone mechanizmy obsługi pamięci i uruchamiania procesów, lepsze wsparcie architektury wieloprocesorowej; a także jeszcze bardziej zwiększają stabilność.
W Windows Server 2003 wprowadzono wiele istotnych zmian na poziomie jądra (kernela)
w stosunku do tego, co było dostępne w Windows 2000. Zmiany obejmują wiele kluczowych
aspektów działania systemów - różnych ograniczeń (wielkość pamięci, rejestru), sposobu
obsługi dysku i wykonywania operacji wejścia/wyjścia, udoskonalone mechanizmy obsługi
pamięci i uruchamiania procesów, lepsze wsparcie architektury wieloprocesorowej,
a także wiele zmian, które jeszcze bardziej zwiększają stabilność jądra (a tym samym
całego systemu operacyjnego).
Warto tu wspomnieć, że chyba po raz pierwszy system serwerowy ma inną wersję
kernela niż system przeznaczony dla komputerów "desktop". Windows XP ma jądro w
wersji 5.0, a Windows Server 2003 - w wersji 5.1.
Szybszy i lepszy rejestr
W Windows 2000 rozmiar rejestru był ograniczony do około 80% rozmiaru pamięci
(paged pool). Oznaczało to, że rozmiar rejestru jest ograniczony do 376MB. W Windows
Server 2003 nie ma tego ograniczenia. Rejestr nie jest wczytywany w całości do pamięci
(w porcjach po 256 KB). Memory Cache Manager mapuje rejestr w pamięć podręczną systemu
- w ten sposób całkowity rozmiar rejestru jest ograniczony tylko przez rozmiar dysku,
a równocześnie dostęp jest bardzo szybki.
Zwiększone zostało ograniczenie plastra systemowego (HKEY_LOCAL_MACHINE\System)
- z 12MB do 200MB. Dzięki faktycznemu zwiększeniu rozmiaru rejestru i jego wydajności
serwer Windows 2003 jest w stanie obsłużyć wiele setek równoległych sesji terminalowych.
Zupełnie inaczej przechowywane są kolejne klucze rejestru. We wcześniejszych
wersjach Windows tworzony podklucz umieszczany był w pierwszym wolnym obszarze.
Windows Server 2003 grupuje powiązane klucze w tę samą fizyczną grupę - co sprawia,
że pamięć podręczna i Cache Manager mogą działać znacznie wydajniej. Równocześnie
w pamięci podręcznej są przechowywane informacje związane z deskryptorami bezpieczeństwa
- tak że sprawdzanie uprawnień nie wymaga od Configuration Manager sięgania do dysku.
Dzięki Cache Manager Windows monitoruje, które klucze rejestru były ostatnio
wykorzystywane, i przechowuje ich wartość (zmieniając zawartość cache w momencie
zapisu). W ten sposób wszystkie kwerendy dotyczące rejestru wykonywane są znacznie
szybciej, co przekłada się na szybsze odczytywanie konfiguracji (czy innych dodatkowych
informacji) przez poszczególne programy.
Przyspieszone startowanie systemu
Jednym z celów w Windows Server 2003, podobnie jak w XP, było takie uruchamianie
systemu, by ekran logowania ukazywał się jak najszybciej - najlepiej w ciągu 30
sekund od uruchomienia serwera. W tym celu zmieniony został sposób startowania usług,
wiele elementów czytywanych jest z wyprzedzeniem, a także wyeliminowane zostały
niepotrzebne opóźnienia podczas startu aplikacji serwerowych.
W jądrze Windows Server 2003 istotną modyfikacją jest mechanizm wstępnego wczytywania
sterowników z wyprzedzeniem. System podczas pierwszego startu (lub zmianie konfiguracji)
analizuje, do jakich plików następuje odwołanie. Proces monitorowania trwa około
2 minut (zatrzymuje się 30 sekund po uruchomieniu powłoki systemowej (explorer.exe)
lub 60 sekund po tym, jak wszystkie serwisy zostaną wczytane. Informacje do wczytywania
z wyprzedzeniem zapisywane są w katalogu \Windows\Prefetch, w plikach o nazwie
odpowiadającej danemu plikowi wykonywalnemu, z dodatkowym kodem określającym pełną
ścieżkę. Plik odpowiedzialny za samo wczytywanie w fazie startu ma nazwę NTOSBOOT-.....pf.
Windows Server 2003 dzięki informacji zapisanej w plikach pf potrafi z
wyprzedzeniem wczytać dany plik wykonywalny (a nawet ten fragment pliku, który rzeczywiście
jest potrzebny). W ten sposób moment startu usługi czy wczytywania systemu operacyjnego
jest znacznie krótszy - w momencie, gdy dany plik jest potrzebny (np. aby dana procedura
którą zawiera została wykonana), odpowiedni fragment kodu już znajduje się w pamięci
operacyjnej (wczytany został gdy system wykonywał inne operacje nie obciążające
podsystemu dyskowego).
Warto dodać, że monitorowany jest także moment startu każdej aplikacji (pierwsze
10 sekund). Dzięki temu nie tylko przyspieszono start systemu, ale także uruchomienie
dowolnego programu. Podczas wczytywania aplikacji z wyprzedzeniem Windows 2003 odczytuje
katalogi, które poprzednio analizował dany program/sterownik, następnie asynchronicznie
odczytuje kod i dane. Dalsze wykonanie jest możliwe dopiero po zakończeniu wczytywania.
Warto tu podkreślić, że taki sposób postępowania redukuje opóźnienia związane z
przeszukiwaniem głowicą dysku twardego - a to jest główną przyczyną spowolnienia
wczytywania aplikacji. Równocześnie Windows 2003 co 3 dni automatycznie defragmentuje
pliki, które są powiązane ze startem systemu czy też danej aplikacji.
Windows Server 2003 jest systemem, w którym standardowo dane są wczytywane do
pamięci dopiero w momencie, gdy wystąpi tzw. wyjątek - to znaczy, gdy system/aplikacja
zażąda dostępu do pamięci. Dane wczytywane są w paczkach po 4KB (na x86). Jednak
proces zgłaszania wyjątku i wstępnej obsługi danych zajmuje pewną ilość czasu -
dzięki mechanizmowi wczytywania z wyprzedzeniem informacje są dostępne już w pamięci
(a nie są dopiero wczytywane z dysku) w momencie zgłoszenia wyjątku.
Druga istotna zmiana związana jest z innym mechanizmem wczytywania sterowników.
We wcześniejszych wersjach Windows, gdy sterownik inicjował dane urządzenie wejścia/wyjścia,
pozostałe sterowniki musiały czekać aż zakończy się inicjacja. W Windows Server
2003 dostęp do urządzeń I/O jest tak przeplatany z wczytywaniem i uruchamianiem
kolejnych sterowników, że właściwa inicjacja odbywa się niejako "w tle". W ten sposób
wolniej inicjujące się urządzenie nie wstrzymuje startu systemu.
Stabilność
Sterownik jest najczęstszą przyczyną błędnego działania systemu operacyjnego.
Microsoft wprowadził kilka mechanizmów, które wymuszają zwiększenie stabilności
sterowników. Podstawowe zmiany są związane z działaniem systemu w sytuacjach gdy
brakuje jakiś zasobów. Kiedy systemowi operacyjnemu kończy się pamięć, wszystkie
operacje I/O są wykonywane sekwencyjnie, jedna strona na raz. Zmniejsza to znacznie
wydajność, ale zabezpiecza system przed zawieszeniem, gdy wolnej pamięci już nie
będzie.
We wcześniejszych wersjach Windows sterownik miał możliwość zażądać zarezerwowania
pewnego obszaru pamięci nawet wtedy, gdy tej pamięci było za mało. Takie żądanie
miało bezwzględny priorytet i gdy nie mogło być zrealizowane, system zgłaszał krytyczny
wyjątek i kończył działanie. W Windows Server 2003 sterownik nie może wykonać "bezwzględnego"
żądania pamięci.
W Windows 2003 dostępny jest mechanizm "odzyskiwania systemu" przydatne w momencie,
gdy trzeba szybko wycofać ostatnio wprowadzone zmiany. Mechanizm odzyskiwania dotyczy
zarówno sterowników, ostatnio jak i zmian w systemie plików czy rejestrze. Administrator
może zapisać "stan" serwera, a następnie wycofać zmiany tak by konfiguracja dokładnie
odpowiadała zapisanym wcześniej ustawieniom. Co więcej, dostępne jest specjalne
API, które mogą wykorzystać programy instalacyjne (na przykład - aktualizacje oprogramowania),
które pozwala programowo stworzyć "punkt odzyskiwania". Dzięki temu można zainstalować
poprawkę, a w przypadku gdyby zachodziła konieczność cofnięcia zmian - szybko ją
usunąć (nawet gdy nie ma programu do deinstalacji).
Dodatkowy mechanizm jest przeznaczony do szybkiego przywracania sterownika. W
Windows Server 2003 można "wycofać" ostatnio wgrany sterownik i wrócić do tej wersji,
która działała poprawnie.
Zmieniony został także sposób uruchamiania serwisów systemowych. Część usług
może być uruchamiane w ramach "ogólnego" procesu srvchost.exe. Takich procesów może
powstać kilka - usługi grupowane są wg uprawnień. Na przykład, oddzielny proces
będzie grupował te usługi, które są uruchamiane jako LOCAL SERVICE (czyli - konto
systemowe), a inny NETWORK SERVICE. Dzięki grupowaniu serwisów w ramach większych
procesów, oszczędzane są zasoby systemowe. Ale warto dodać, że np. usługa RPC z
uwagi na bezpieczeństwo jest uruchamiana w oddzielnym procesie. Także administrator
może samodzielnie skonfigurować usługi tak, by każda miała swój oddzielny proces.
W Windows 2003 dostępny jest także mechanizm wprowadzania "poprawek" w locie,
w trakcie działania systemu operacyjnego i bez niepotrzebnego zatrzymywania usług.
Specjalnie podpisana cyfrowo poprawka może zmienić obraz pliku DLL (czy EXE) nawet,
jeżeli jest on wykorzystywany przez działający proces. W ten sposób praktycznie
w większości przypadków wyeliminowana została konieczność resetów serwera.
Już Windows 2000 miało mechanizm zabezpieczania kluczowych bibliotek systemu
przed przypadkową modyfikacją podczas instalowania nowego oprogramowania. Można
było zamiast tego instalować "prywatne" kopie bibliotek systemowych. W Windows Server
2003 można dodatkowo określić "dzielone" pakiety, podpisane cyfrowo przez publikującego.
Dzięki specjalnym manifestom program może wykorzystać ta wersję bibliotek, z którą
najlepiej współpracuje. Innymi słowy może być kilka zestawów bibliotek "systemowych"
- a nie tylko biblioteki prywatne, wgrane w katalogu aplikacji. Równocześnie w pamięci
operacyjnej może znajdować się obok siebie kilka różnych wersji danej biblioteki.
Szybsze sterowniki do dysków
W Windows Server 2003, producent pamięci masowych może zaimplementować sterowniki
wykorzystujące architekturę MPIO. Jest to sposób komunikacji, w którym urządzenie
masowe udostępnia wiele "ścieżek" komunikacji (np. równoległy odczyt z różnych dysków
itp.). MPIO Driver Development Kit pozwala twórcom pamięci masowych pisać znacznie
wydajniejsze sterowniki niż np. te wykorzystujące model SCSI Port i są oparte interfejs
SCSI.
Duże i szybkie mapowane pliki
W Windows 2000 sumaryczny rozmiar mapowanych plików dla całego systemu nie może
przekroczyć 200GB na raz (plik mapowany to taki, do którego m.in. można odwoływać
się tak jak do pamięci operacyjnej). Wynika to stąd, że gdy plik był przygotowywany
do odwzorowania w pamięci (przy użyciu funkcji CreateFileMappingObject), mechanizm
zarządzania pamięcią alokował całą strukturę danych (tzw. strony PTE), nawet gdy
aplikacja chciała mapować tylko fragment pliku. Ponieważ strony PTE są tworzone
w ramach pamięci paged pool (podlegającej stronicowaniu, która ma rozmiar maksymalnie
470MB), mapowanie zbyt dużych plików ograniczało maksymalny rozmiar mapowanych plików.
Ubocznym skutkiem zmian w organizacji mapowanych plików jest możliwość wykonywania
kopii zapasowych plików na komputerach, które mają zbyt mało pamięci operacyjnej.
Na przykład dotychczas system z 32MB RAM nie był w stanie wykonać kopii pliku mającego
500GB (pamięci nie wystarczyło nawet na stworzenie tablicy stron). Teraz nawet komputer
o niewielkiej ilości pamięci może wykonywać kopie olbrzymich plików.
Rozbudowana została także przestrzeń pamięci systemowej. W Windows 2000 sterowniki
mogły zająć do 220MB RAM (w NT 4.0 tylko 100MB). W Windows Server 2003 - mogą zająć
aż 960MB.
W Windows Server 2003 udoskonalony został mechanizm zarządzania tzw. "zestawem
roboczym" pamięci - czyli zestawem ostatnio używanych stron. W Windows 2000 każda
strona ma swój "wiek" - system przy każdym odwołaniu do danej strony pamięci zwiększa
specjalny licznik. W momencie, gdy jakaś strona ma zostać zwolniona (i przeniesiona
do pamięci wirtualnej), system wybiera taką stronę, która nie była ostatnio wykorzystywana.
W Windows Server 2003 analogiczny mechanizm wykorzystywany jest także w systemach
wieloprocesorowych.
W każdym systemie operacyjnym duży wpływ na wydajność ma liczba blokad nakładanych
wewnątrz kernela na struktury pomocnicze. Innymi słowy - czy równoległe odwołania
do jądra wymagają np. synchronizacji w dostępie do tych struktur, czy też nie jest
to niezbędne. W Windows 2003 liczba niezbędnych blokad w kernelu została znacznie
zredukowana - na przykład większość operacji związanych z zarządzaniem blokami pamięci
nie wymaga "wyłączności" przy dostępie do wewnętrznych struktur. Równocześnie wprowadzony
został nowy mechanizm blokad typu "push", a także kilka struktur które znacznie
wydajniej obsługują systemy z 2 lub więcej procesorami.
Usprawniony został także mechanizm wywoływania procedur kernela (co jest wykorzystywane
na przykład przez API Win32). Dotychczas wykorzystywany był mechanizm wywoływania
przerwania, które powodowało zmianę trybu działania procesora. Obecnie, odbywa się
to w znacznie bardziej efektywny sposób - wykorzystywane są specjalne instrukcje
Pentium II (i nowszych procesorów).
Co nowego w 64 bitach
64 bitowa wersja Windows Server 2003 jest przeznaczona dla nowych procesorów
Intel Itanium (ma powstać wersja dla AMD Hammer). Dzięki nowej architekturze, system
może dysponować znacznie większymi zasobami. Dla potrzeb Itanium przepisane zostały
te elementy jądra i HAL, które były specyficzne dla x86. Obejmuje to na przykład
kod odpowiedzialny za przełączanie zadań, czy związany z wprowadzeniem trójpoziomowej
architektury tablic stron. W poniższej tabeli pokazane są główne różnice związane
z ograniczeniami wersji 32 i 64 bitowej.
| Zasób |
System 32-bitowy |
System 64-bitowy |
| Pamięć fizyczna |
64GB* |
128GB |
| Pamięć nie podlegająca stronicowaniu |
256MB |
128GB |
| Pamięć podlegająca stronicowaniu |
470MB |
128GB |
| Pamięć podręczna |
960MB |
1024GB (1TB) |
| Pamięć przeznaczona na programy użytkowe |
2-3GB |
7152GB (6.9TB) |
| Przestrzeń systemowa |
2GB |
128GB |
| Pojedyńczy plik wymiany (pamięci wirtualnej) |
16TB |
32TB |
W 64- bitowej wersji Windows Server 2003 zmieniony został sposób zapisywania
schematu partycji. W ramach nowej specyfikacji (i przyszłego standardu) Extensible
Firmware Interface (EFI) opracowana została nowa struktura tablicy partycji - GUID
Partition Table (GPT). Wykorzystuje 64 bitowe adresy do określania początku i rozmiaru
poszczególnych partycji. Nie ma także ograniczenia do 4 partycji na dysku (co powodowało
w x86 konieczność "zagnieżdżania" definicji i tworzenia tzw. partycji rozszerzonych
z dyskami logicznymi).
Tablica partycji jest zapisywana równolegle w 2 miejscach - na początku i na
końcu dysku. W ten sposób ten dosyć newralgiczny element dysku jest dodatkowo zabezpieczony.
Klastry
W Windows Server 2003 dostępne są dwa kluczowe składniki pozwalające realizować
najbardziej rozbudowaną infrastrukturę klastrową.
Po pierwsze mechanizm wyrównywania obciążeń (NLB - Network Load Balancing). Jest
on dostępny w każdej edycji Windows Server 2003 i pozwala równomiernie rozłożyć
przychodzący ruch IP pomiędzy elementy klastra. Jest to dobre rozwiązanie dla serwerów
WWW, serwerów terminalowych czy serwerów nadających strumieniowo dane multimedialne.
Wszystkimi mechanizmami wyrównywania obciążeń w ramach NLB można zarządzać z poziomu
WMI.
Wiele zmian ma na celu uproszczenie pracy administratora. W Windows 2000, administrator
musiał ręcznie skonfigurować każdy węzeł w klastrze. W Windows 2003, dzięki specjalnemu
narzędziu Menedżer równoważenia obciążenia sieciowego, można wszystkie operacje
wykonać siedząc przed jednym węzłem w sieci. Eliminuje to możliwość popełnienia
wielu błędów - w Windows 2000 trzeba było pamiętać, aby skonfigurować klastry w
taki sam sposób (np. stworzyć te same zasady dla portów). W Windows 2003 niemal
wszystko sprowadza się do uruchamiania odpowiednich kreatorów i ustawiania właściwości
całego klastra.

Menedżer NLB pozwala tworzyć klastry, propaguje parametry na wszystkie maszyny
zdefiniowane jako klaster. Można łatwo dodawać i usuwać poszczególne hosty z klastra.
Aby zarządzać istniejącym klastrem - wystarczy dołączyć się do jednego z hostów.
Jeżeli w Windows 2000 klaster NLB miał udostępniać wiele witryn WWW, należało
dodać odpowiednie adresy IP do stosu TCP/IP na każdym węźle klastra. Potem, aby
np. zablokować ruch dla określonej aplikacji, należało powtórzyć tą operację na
każdym z węzłów.
W Windows Server 2003 dostępne są specjalne "wirtualne" klastry, które pozwalają
definiować inne role portów dla różnych adresów klastra, gdzie każdy adres IP odpowiada
konkretnej witrynie WWW (lub aplikacji uruchamianej w klastrze). W Windows 2000
było to możliwe tylko na poziomie całego hosta - a nie poszczególnego adresu IP.
Można także filtrować ruch przychodzący tak by nie dotyczył określonego hostu w
klastrze. W ten sposób jedna aplikacja może być aktualizowana, czy restartowana
bez wpływu na pracę równolegle hostowanych systemów.
Windows 2003 obsługuje NLB na serwerach z dowolną liczbą kart sieciowych. Dzięki
temu jeden fizyczny serwer może być częścią różnych klastrów NLB. Nowa wersja serwera
obsługuje także metodę komunikacji opartą o tzw. protokół multicast i potrafi inteligentnie
zarządzać ruchem (zgodnie z protokołem Internet Group Management Protocol - IGMP).
Wszystko to sprawia, że klastry NLB w Windows Server 2003 są bardzo elastycznym
rozwiązaniem, stosunkowo łatwym do wdrożenia i efektywnego wykorzystania.
Drugim mechanizmem klastrowym dostępnym w Windows 2003 są tzw. klastry serwera
(MSCS). Dostępne są one tylko w wersji Enterprise Edition oraz Datacenter Edition.
Zapewniają wysoką skalowalność usług serwerowych - takich jak: katalog Active Directory,
obsługa plików, uruchamianie usług serwera terminali, czy obsługa dużych baz danych.
Jeżeli jeden z węzłów klastra przestanie działać, inne węzły zapewnią użytkownikom
nieprzerwaną pracę. Klastry Microsoft są tzw. klastrami "share nothing", gdzie żaden
zasób nie jest dzielony pomiędzy węzły klastra. Dzięki temu są one zupełnie niezależne
i mogą działać samodzielnie - nie ma pojedynczego punktu awarii jak się zdarza w
infrastrukturze klastrowej opracowywanej przez inne firmy. Windows Server 2003 Enterprise
Edition i Datacenter Edition obsługują klastry nawet 8-mio węzłowe. Także 64-bitowa
wersja Windows może tworzyć klastry. Praktycznie może powstać system złożony z 8-miu
serwerów DataCenter, z których każdy dysponuje 4 terabajtami pamięci RAM. A co najważniejsze
- nawet taka instalacja będzie w taki sam sposób zarządzana jak 2 węzłowy klaster
na 32 bitowych procesorach.
Tworzenie klastra może sprowadzać się do użycia specjalnego kreatora. Wszystkie
opcje wybrane podczas działania tego kreatora mogą być wspierane własnymi skryptami
- a nawet całą instalację i konfigurację klastra można "zapisać" jako skrypt.

W Windows Server 2003 opracowany został zmodyfikowany algorytm wyrównywania obciążeń.
Klastry MNS (Majority Node Set) są doskonały rozwiązaniem w sytuacji, gdy głównym
zadaniem klastra jest zapewnienie odporności na awarie. Nie trzeba definiować wspólnych
macierzy dyskowych by zapewnić spójność danych w ramach klastra - odpowiednio wykorzystując
replikację i możliwości nowoczesnych mechanizmów pamięci masowej. Oczywiście dostępny
jest także standardowy mechanizm tworzenia i wykorzystywania "kworum".
Microsoft w Windows Server 2003 wprowadził wiele nowych mechanizmów usprawniających
pracę systemu serwerowego. Oprócz przebudowywanych i znacznie wydajniejszych mechanizmów
usługowych - w tym rozbudowane interfejsy sieciowe i zupełnie zmieniony IIS 6.0
- wprowadzone zostały istotne zmiany na poziomie kernela - w samym jądrze systemu
operacyjnego. Te zmiany z jednej strony poprawiają skalowalność systemu, a z drugiej
- zwiększają jego niezawodność i bezpieczeństwo.
Spis treści
Pobierz dokument w formacie Microsoft Word (136 KB, 9 stron)