Okna bez rolet 2002-05-27 Janusz Żmudziński
System operacyjny jaki jest, każdy widzi. Co jednak kryje się pod jego "maską"? Czy z odmiennym wyglądem nowych Okien idzie w parze zmieniona budowa wewnętrzna Windows XP?
Rys. 1. Stabilność Windows XP zwiększa możliwość wycofania się (Roll Back) z instalacji sterownika urządzenia, który powoduje zawieszanie się systemu.
Ogromny budżet przeznaczony na marketing, trochę szumu medialnego i od paru miesięcy mamy na rynku nowy system operacyjny Microsoftu. Windows XP - bo o nim mowa - bazuje na 32-bitowej architekturze Okien 2000. Aby ułatwić życie użytkownikowi, poprawiono interfejs i zmodyfikowano strukturę wewnętrzną systemu. Nie zawsze jest to widoczne, ale z pewnością odczuwalne. Liczba innowacji w budowie systemu jest jednak mała w porównaniu z tymi, które pojawiły się przy przejściu z Windows NT 4.0 na 2000. Świadczy o tym m.in. wewnętrzny numer wersji systemu, czyli NT 5.1, a nie np. 6.0 (edycja 2000 nosiła oznaczenie NT 5.0). Są to jednakże zmiany istotne i sprawiające, że nowy system operacyjny jest szybszy, bardziej stabilny i bezpieczniejszy. Jest to również pierwszy system operacyjny Microsoftu, dla którego opracowano wersję 64-bitową, pracującą na intelowskich procesorach Itanium. Co zrobiono, by Windows XP był szybszy i stabilniejszy? Przede wszystkim zmodyfikowano zarządzanie pamięcią i poprawiono proces uruchamiania systemu. Wprowadzono też zmiany w obsłudze Rejestru, a pewnym modyfikacjom poddano system plików. Aby uniknąć problemów związanych ze sterownikami urządzeń, zaimplementowano mechanizmy pozwalające na proste usunięcie nieprawidłowo działającego oprogramowania. O zmianach świadczy także zmodyfikowane API (Application Programming Interface), pozwalające programistom na wykorzystanie możliwości nowych Okien. Nowy może więcejWspółczesne komputery wyposażone są w coraz większą pamięć operacyjną. Z drugiej strony wyraźnie wzrasta też apetyt aplikacji na RAM. Windows XP oferuje zmodyfikowane mechanizmy przydzielania pamięci (zwłaszcza obsługę pamięci wirtualnej). Spójrzmy, jak to było dotychczas. Windows NT 4.0 obsługiwał do 192 MB. Edycja 2000 miała ograniczenie 660 MB wirtualnej przestrzeni adresowej. XP (w wersji 32-bitowej) może wykorzystywać 1,3 GB przestrzeni adresowej - z czego 960 MB ciągłej. Natomiast wersja 64-bitowa obsługuje aż 128 GB. Jednocześnie zwiększono wielkość pamięci, która jest dostępna dla sterowników. Obecnie mogą one zajmować nawet do 960 MB. Jednym z bardzo ważnych elementów systemu jest Rejestr. Na pierwszy rzut oka nie uległ on zmianom, jednakże wprowadzono do jego obsługi dość poważne modyfikacje. Poprzednio, czyli w Windows 2000, sumaryczna wielkość wszystkich komponentów (hives) Rejestru nie mogła przekroczyć wielkości 376 MB. Obecnie nie ma takiego limitu. Istnieje jednak ograniczenie dla komponentu System (pliku przechowującego klucz HKEY_LOCAL_MACHINE \ System), który nie może być większy niż 200 MB (w poprzednich wersjach Windows był ograniczony do 12 MB). Ktoś może zapytać, kiedy jest potrzebny tak duży Rejestr. Otóż przydaje się on w przypadku systemów oferujących usługi terminalowe, szczególnie gdy mamy do czynienia z dużą liczbą użytkowników. A pamiętajmy, że chociaż sam Windows XP nie jest serwerem usług terminalowych, to mechanizmy, które w nim zaimplementowano, będą zawarte w Windows .NET Server. Szybciej, krócejPierwszym zauważalnym elementem świadczącym o większej szybkości pracy nowego systemu operacyjnego jest proces jego uruchamiania. W Windows XP poprawiono zarówno szybkość ładowania systemu, jak i czas startu aplikacji. XP stara się z wyprzedzeniem odczytać wymagane dane. Dzięki temu sterowniki są inicjalizowane równolegle i jednocześnie odczytywane są dane z dysku. Również operacje hibernacji i odtworzenia systemu przebiegają obecnie wyraźnie szybciej. Podczas hibernacji system "zatrzymuje" sterowniki, a następnie zapisuje zawartość pamięci do pliku HIBERFIL.SYS i wyłącza komputer. Natomiast w trakcie odtworzenia XP wczytuje zawartość tego pliku do pamięci i uruchamia drivery. Aby przyspieszyć obie te operacje, zastosowano kilka rozwiązań. Po pierwsze: zawartość pamięci przed zapisem na dysk jest obecnie kompresowana. Po drugie: do znajdujących się na dyskach IDE plików HIBERFIL.SYS dane są zapisywane z wykorzystaniem DMA. Dzięki temu operacje dyskowe I/O przebiegają asynchronicznie, a zatem moduł Power Manager, zarządzający hibernacją, może niemal równolegle przeprowadzać kompresję i zapis. W celu przyspieszenia procesu uruchamiania aplikacji zastosowano tzw. mechanizm pobierania wstępnego (ang. prefetch). Wszystkie dotychczasowe wersje Windows (z wyjątkiem 3.x) wczytywały do pamięci kod i dane, w momencie gdy aplikacje tego wymagały. Pobranie wstępne polega na tym, że zarówno dane, jak i kod pobierane są do pamięci, zanim jeszcze są potrzebne. Aby wiedzieć, co powinno być wczytane, moduł Cache Manager monitoruje proces startu systemu (pierwsze dwie minuty) oraz pierwszy start aplikacji (10 początkowych sekund). Zebrane dane, mówiące o tym, które pliki są czytane, zapamiętywane są w folderze \Windows\Prefetch i później wykorzystywane podczas następnych uruchomień. Takie rozwiązanie pozwala skrócić czas odczytu danych z dysku poprzez zoptymalizowanie ruchu głowic. Wrażenie poprawy wydajności nowego systemu ma swe odzwierciedlenie w wynikach testów. Firma eTesting Labs Inc. na zlecenie Microsoftu porównała szybkości Windows XP z czterema poprzednimi wersjami, tzn. Windows Me, 2000 Professional, 98 SE oraz NT 4.0. Do testów wykorzystano wersję systemu Windows XP Release Candidate 1, ponieważ jego ostateczna wersja nie była jeszcze dostępna. Uzyskane wyniki rzeczywiście świadczyły o większej wydajności najnowszych Okienek. Windows XP startuje średnio 34% szybciej od systemu Windows 2000 oraz 27% szybciej od Windows 98 SE. Czas uruchomienia aplikacji w systemie Windows XP jest średnio o 25% krótszy niż w Windows 98 SE i jest porównywalny z wynikami dla Windows 2000 Professional. Szczegóły testów można znaleźć na stronie: http://www.etestinglabs.com/ main/reports/ microsoft.asp.
W sercu Windows XPModyfikacje objęły również system plików, a dokładniej - udoskonalono możliwości NTFS-u. Zmieniono API przeznaczone do defragmentacji systemu plików NTFS, np. pełna defragmentacja plików zaszyfrowanych odbywa się bez wykorzystania pamięci podręcznej systemu. Dodatkowo Windows XP jest w stanie defragmentować MFT (Master File Table), co nie było możliwe w Windows 2000. Z NTFS-em zintegrowano system szyfrowania plików EFS (Encrypting File System; patrz: rys. powyżej), który nie jest już oddzielnym sterownikiem. Co więcej - do zaszyfrowanych plików umożliwiono dostęp wielu użytkownikom, dzięki czemu pliki takie mogą być współdzielone. Sama procedura szyfrowania i deszyfrowania (tak jak to miało miejsce dotychczas) jest całkowicie przezroczysta dla użytkownika. Gwarantuje przy tym, że tylko ten, kto zaszyfrował dane, będzie mógł je później odczytać. Ze względów bezpieczeństwa konfigurowany jest też specjalny agent odtwarzania danych, który również ma prawo do odczytu zaszyfrowanych danych - zwykle w tej roli występuje administrator systemu (użytkownik zostanie o odczycie poinformowany).
Rys. 1. Szyfrowaniem zarządza EFS (Encrypting File System), w skład którego wchodzą m.in. usługa systemowa i sterownik (zintegrowany z NTFS), a także Cryptographic API. Szyfrowanie odbywa się za pomocą klucza publicznego automatycznie generowanego dla każdego użytkownika. Dostawą kluczy kryptograficznych zajmuje się RSA Base Provider
Zamaskowane OknaSystem szyfrowania plików (patrz: rysunek powyżej) został trochę rozbudowany w stosunku do implementacji znanej z Windows 2000. Dodano możliwość szyfrowania tzw. plików i folderów offline'owych wykorzystywanych w razie utraty połączenia z Siecią. Pojawiło się kilka nowych narzędzi związanych z EFS i dostępnych z linii komend. Co najważniejsze, obecnie można szyfrować (i oczywiście deszyfrować) pliki znajdujące się w udziałach sieciowych (network share) i folderach Web-DAV (Web Distributed Authoring and Versioning). Te ostatnie bazują na rozszerzeniu protokołu HTTP 1.1, umożliwiającym dzielenie dokumentów i pracę nad nimi poprzez połączenia HTTP, czyli - krótko mówiąc - pozwalają na publikację i współdzielenie dokumentów na serwerach internetowych, takich jak np. Internet Information Services w wersji 5.0. Dostęp do folderów WebDAV jest realizowany za pomocą specjalnego komponentu przekierowującego (redirectora), a uzyskuje się go identycznie jak do tradycyjnych udziałów sieciowych w sieciach Windows, czyli przez mapowanie dysku sieciowego (np. net use x:\\serwer\folderek) lub za pomocą Eksploratora Windows. Z folderów WebDAV korzysta się tak, jak w przypadku udziałów sieciowych. Można kopiować, szyfrować i deszyfrować pliki. Najistotniejsza różnica dotyczy operacji szyfrowania i deszyfrowania. W przypadku udziału sieciowego operacje te są wykonywane na komputerze, na którym przechowywane są dane, i w postaci jawnej przesyłane siecią. Podczas pracy z folderami WebDAV pliki pomiędzy folderem a komputerem użytkownika przesyłane są w postaci zaszyfrowanej, a operacje szyfrowania wykonywane na tym ostatnim. Oczywiście: ma to niebagatelny wpływ na bezpieczeństwo i wskazuje na zdecydowaną wyższość folderów WebDAV. W przypadku prób nieautoryzowanego dostępu, nawet jeśli intruz uzyska dostęp do danych w trakcie transmisji zaszyfrowanego pliku, nie będzie miał z nich żadnego pożytku. A zatem dane mogą być obecnie przechowywane na intranetowym lub internetowym serwerze bez obaw, że dostaną się w niepowołane ręce. I ważne jest przy tym, że nie ma potrzeby korzystania ze specjalistycznego oprogramowania do szyfrowania transmisji danych. System plików rozszerzono mechanizmem odzyskiwania systemu po poważnych zmianach konfiguracji. Zapisywanie niektórych zbiorów powoduje automatyczne wykonanie ich kopii. Dzięki temu można wrócić do poprzedniej wersji. Różni się to od znanego z Windows 2000 File Protection, który po prostu blokował możliwość modyfikacji pewnych plików. Analogiczna sytuacja ma miejsce w przypadku sterowników. Teraz można je zmieniać, bo zawsze automatycznie tworzona jest ich kopia. W systemie istnieje mechanizm, który pozwala wracać do starszej wersji sterownika (Roll Back Driver). Częściowo jest tu wykorzystywane odtwarzanie plików, częściowo - pakiety instalacyjne. Niemal zawsze po zmianach konfiguracji będzie można uruchomić system w stanie poprzedzającym zmiany.
.===================================================================================
Włamywacze stop!Popularność firewalli wciąż rośnie - także wśród indywidualnych użytkowników. Microsoft postanowił wbudować taki mechanizm bezpośrednio w system operacyjny (patrz: CHIP 4/2002, str. 36). Umożliwia on łatwe i tanie (otrzymujemy go z Oknami) podniesienie poziomu bezpieczeństwa systemu. Już w trakcie konfigurowania połączenia sieciowego w folderze Połączenia Sieciowe włączany jest ICF (Internet Connection Firewall). Działa on na zasadzie tzw. stanowego filtra pakietów (stateful packet filter). Wszystkie połączenia wykorzystujące protokół TCP/IP, zainicjowane z naszego komputera, są zapisywane w specjalnej tablicy. Kiedy połączenie zostaje zakończone, zapis jest usuwany. Firewall blokuje wszystkie połączenia z sieci zewnętrznej, które nie zostały wcześniej zarejestrowane w tablicy. Oznacza to, że wszystkie pakiety przychodzące do naszego komputera, nie będące odpowiedzią na komunikację zainicjowaną, zostaną odrzucone. Dla administratorów ważne jest, że konfigurację ICF można przeprowadzić z wykorzystaniem mechanizmów zasad grup (group policy). W praktyce oznacza to, że dla komputerów pracujących w domenach Windows 2000 mogą oni wymusić korzystanie z firewalla przy połączeniach z sieciami zewnętrznymi i jednocześnie zablokować korzystanie z niego w sieci wewnętrznej. Programistów tworzących aplikacje dla Windows zainteresuje zapewne zbiór funkcji API umożliwiających interakcję z ICF. Funkcje te zawarte są w pakiecie Platform SDK, a ich opis znajduje się na stronie http://msdn.microsoft.com/. Dzięki nim z poziomu programów można włączać lub wyłączać zaporę dla każdego ze skonfigurowanych połączeń sieciowych. Pierwszą operację wykonuje funkcja: INetSharingConfiguration::EnableInternetFirewall, a drugą: INetSharingConfiguration::DisableInternetFirewall, gdzie INet-SharingConfiguration określa interfejs dla danego połączenia. Oczywiście programowo można również sprawdzać konfigurację firewalla.
Task Manager pozwala sprawdzić, jacy użytkownicy są aktualnie zalogowani do komputera oraz jakie aplikacje uruchomili.
Wreszcie porządek z DLLProblemy z aplikacjami korzystającymi z różnych wersji bibliotek DLL są od dawna frustrujące - zarówno dla programistów aplikacji okienkowych, jak i ich użytkowników. Nowa wersja Windows wreszcie rozwiązuje ten problem i obecnie równocześnie mogą działać dwie aplikacje korzystające z różnych wersji bibliotek DLL. Windows XP wykorzystuje w tym celu folder o nazwie WinSxS (Windows Side-by-Side). Przechowuje w nim różne wersje komponentów mogących powodować problemy z DLL. To, z której wersji biblioteki korzysta aplikacja, może określić tzw. manifest zainstalowany w systemie. Manifest jest plikiem zapisanym w formacie XML. Zdefiniowano w nim wersje bibliotek oraz relacje pomiędzy komponentami (klasy COM, interfejsy). Można więc tworzyć aplikacje, które na pewno nie zakłócą działania innych programów i będą korzystały z określonej wersji biblioteki nawet wtedy, gdy system zawiera również jej nowszą edycję. A czego brak?W Windows XP nie znajdziemy kilku komponentów obecnych w poprzednich wersjach. Chodzi o podsystem OS/2, mający za zadanie obsługę aplikacji trybu znakowego i działający pod OS/2 1.x, oraz podsystem POSIX. Widocznie autorzy uznali, że nie są one już potrzebne. Bardzo natomiast dziwi brak obsługi urządzeń pracujących w standardzie USB 2 i Bluetooth. W tak krótkim tekście można jedynie wspomnieć o niektórych rozwiązaniach oferowanych przez najnowszy produkt Microsoftu. Nowości, które pojawiły się w Windows XP, mają znaczenie nie tylko dla tego systemu. Wdrożone tu technologie będą również wykorzystane w tworzonej obecnie nowej linii produktów serwerowych, noszącej nazwę Windows .NET Server. Dlatego warto poznać ten system, zwłaszcza że jest to, zdaniem wielu, najlepszy produkt firmy z Redmond
Rys. 2. Konfiguracja firewalla może być wykonana w trakcie zakładania nowego połączenia sieciowego. Nie powinna stwarzać kłopotów nawet niezbyt zaawansowanemu użytkownikowi..
sumo1962