Raz, dwa, dwa tysiące trzy

Tajna broń jądrowa

Raz, dwa, dwa tysiące trzy

W IIS 6.0 można definiować dowolne pule aplikacji i określać zasady monitorowania i np. restartowania poszczególnych wątków

Wiele zmian w stosunku do poprzednich systemów serwerowych Microsoftu wprowadzono w jądrze. Przede wszystkim zmieniono sposób wywoływania procedur jądra z poziomu wewnętrznego API Win32. Jądro w wersji 5.x wykorzystuje specjalną instrukcję dostępną w nowszych procesorach (począwszy od Pentium II), a nie programowy mechanizm wywoływania przerwań.

W nowym systemie zastosowano odmienne niż do tej pory podejście do zarządzania pamięcią. Pliki rejestru, podobnie jak inne pliki, są obecnie buforowane przez mechanizm Memory Cache Manager. Rejestr nie jest wczytywany w całości do pamięci i nie wymaga alokacji dużych struktur w tzw. pamięci podlegającej stronicowaniu. Dzięki temu rozmiar rejestru jest praktycznie ograniczony rozmiarem dysku. Jak się okazuje, buforowanie znacznie przyspiesza operacje na rejestrze i w efekcie poprawia wydajność serwera. Inna jest też strategia alokacji obszaru w rejestrze. Dotychczas nowy klucz był umieszczany w pierwszym wolnym miejscu rejestru, w Windows Server 2003 system łączy powiązane ze sobą klucze w grupy. Wyjątkiem jest IIS 6.0, który korzysta z niezależnych od rejestru plików konfiguracyjnych.

Zmieniono także sposób mapowania plików w pamięci RAM. W Windows 2000, po wykonaniu komendy CreateFileMappingObject, system alokował obszary kontrolne w pamięci w takim rozmiarze, aby móc w nich odwzorować cały plik. Ze względu na konstrukcję pamięci wirtualnej sumaryczny rozmiar mapowanych plików nie mógł przekroczyć 200 GB. Rozwiązaniem tego problemu w Windows Server 2003 jest możliwość zażądania, by był odwzorowany tylko fragment pliku, dzięki czemu rezerwowane są znacznie mniejsze obszary pamięci RAM. Twórców sterowników ucieszy zapewne fakt, że w nowym systemie pojedynczy sterownik może zaalokować aż ok. 1 GB pamięci wirtualnej - w Windows 2000 było to jedynie ok. 220 KB.

Oprócz standardowych sterowników do systemów pamięci masowych opartych na standardzie SCSI miniport, w Windows Server 2003 można także implementować sterowniki wykorzystujące architekturę MPIO. Standard ten zawiera interfejsy API pozwalające pisać sterowniki do tworzenia logicznych kanałów komunikacyjnych wykorzystujących równolegle wiele kanałów fizycznych.

Zupełnie zmieniono też sposób wczytywania sterowników do pamięci. We wcześniejszych wersjach Windows operacje inicjacji i wczytywania sterowników były wykonywane sekwencyjnie. Gdy sterownik inicjował urządzenie, system czekał na zakończenie tej operacji i dopiero wtedy inicjował następne. W Windows Server 2003 operacje I/O mogą być przeplatane z innymi operacjami, a więc w pewnym sensie mogą być wykonywane w tle.

Windows Server 2003 znacznie lepiej niż poprzednie jego wersje funkcjonuje w środowiskach SMP. Zmieniono mechanizm zarządzania tzw. zestawem roboczym pamięci (working set), czyli pulą stron pamięci przeznaczoną do wykorzystania przez programy. W Windows 2000 "zestaw roboczy" jest zawsze przypisany temu samemu procesorowi. W przypadku Windows 2003 cały zestaw roboczy jest wspólny dla wszystkich procesorów działających w układzie SMP. Dużym usprawnieniem jest także to, że w nowym systemie zmniejszono liczbę blokad nakładanych na struktury pomocnicze jądra, w wyniku czego równolegle może z nich korzystać wiele procesorów. Dodano też nowy mechanizm blokowania typu push.

Oprócz ulepszenia obsługi wielu procesorów w trybie SMP, w Windows Server 2003 pojawiło się wsparcie dla architektury NUMA (Non Uniform Memory Access) wywodzącej się z najbardziej zaawansowanych serwerów. W architekturze tej każdemu procesorowi jest przypisywany pewien zakres pamięci RAM i układy I/O, w ramach których obliczenia i operacje są wykonywane quasi-autonomicznie. Architektura NUMA powstała z myślą o tym, aby wyeliminować opóźnienia w dostępie do pamięci i synchronizacji między procesorami charakterystyczne dla większych serwerów SMP. Wykorzystują ją m.in. serwery HP AlphaServer i IBM pSeries.

I szybciej, i bezpieczniej

Raz, dwa, dwa tysiące trzy

Mechanizm kopii w tle pozwala przechowywać historię zmian dokonywanych na danej partycji

Zmiany zaszły także w sposobie uruchamiania serwisów systemowych. Procesy są łączone w grupy o określonym poziomie uprawnień, np. LOCAL SERVICE lub NETWORK SERVICE. Ten drugi, nowy typ uprawnień jest przeznaczony do uruchamiania procesów związanych z komunikacją w sieci i z definicji ma mniejszy zakres możliwości niż usługi z atrybutem LOCAL SERVICE. Oczywiście administrator może tak skonfigurować serwer, by każda usługa była uruchamiana jako oddzielny proces. Ze względów bezpieczeństwa niektóre mechanizmy, np. RPC, który odpowiada za zdalne wywoływanie procedur, zawsze będą uruchamiane jako oddzielne procesy.

Podobnie jak Windows XP, podczas pierwszego uruchamiania aplikacji Windows Server 2003 rejestruje umiejscowienie jej binariów w systemie plików i to, w jakiej kolejności poszczególne pliki są odczytywane z dysku. Proces monitorowania trwa ok. 2 min (zatrzymuje się 30 s po uruchomieniu powłoki systemowej (explorer.exe) lub 60 s po wczytaniu wszystkich serwisów. Podobny mechanizm działa, gdy usługa uruchomi inny proces (tu monitorowanie trwa przez pierwsze 10 s). Czemu to służy? Dzięki zebranym informacjom, podczas ponownego uruchamiania aplikacji bądź usługi, system z wyprzedzeniem wczytuje oznaczone wcześniej pliki - zarówno programy, jak i związane z nimi dane.

Nowością Windows Server 2003, która ucieszy zapewne nie tylko administratorów, jest mechanizm pozwalający na wprowadzanie poprawek do systemu bez konieczności zatrzymywania usług czy restartowania systemu. Specjalnie skonstruowana poprawka może zmienić obraz pliku DLL (czy EXE) nawet wtedy, gdy jest on wczytany do pamięci i aktualnie uruchomiony. Taka poprawka musi być jednak specjalnie skonstruowana i oznaczona.

Windows Server 2003 oferuje ponadto mechanizm "odzyskiwania" systemu działający podobnie jak analogiczny mechanizm w Windows XP. Aktualny stan serwera można zapisać, zmienić konfigurację, a gdy pojawią się kłopoty, bezpiecznie powrócić do poprzednich ustawień. Mechanizm "odtwarzania" wyposażono w zestaw interfejsów API, dzięki czemu odtwarzanie można włączyć do aplikacji już na etapie jej projektowania. Oddzielny mechanizm jest przeznaczony do szybkiego przywracania poprzedniego sterownika.


TOP 200