SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   MS Windows 2000
                                         od rodka
           KATALOG KSI¥¯EK
                                         Autorzy: David A. Solomon, Mark E. Russinovich
                      KATALOG ONLINE     ISBN: 83-7197-821-9
                                         Tytu³ orygina³u: Inside MS Windows 2000, 3rd Edition
       ZAMÓW DRUKOWANY KATALOG           Format: B5, stron: 784
                                         Zawiera CD-ROM

              TWÓJ KOSZYK
                    DODAJ DO KOSZYKA     Ksi¹¿ka dostarczy Ci unikatowej wiedzy na temat wewnêtrznych mechanizmów
                                         dzia³ania systemu Windows 2000. Zosta³a napisana we wspó³pracy z zespo³em
                                         tworz¹cym Windows 2000, a jej autorzy mieli pe³en dostêp do kodu ród³owego
         CENNIK I INFORMACJE             systemu. Znajdziesz tutaj informacje niedostêpne w innych ród³ach, pozwalaj¹ce
                                         pisaæ wydajniejsze aplikacje przeznaczone dla platformy Windows 2000. Z ksi¹¿ki
                   ZAMÓW INFORMACJE      skorzystaj¹ równie¿ administratorzy systemowi. Zrozumienie tajemnic mechanizmów
                     O NOWO CIACH        systemu operacyjnego u³atwi im odnalezienie ród³a problemu w przypadku awarii.
                                         Poznaj wszystkie tajemnice Windows 2000:
                       ZAMÓW CENNIK         • Podstawowe pojêcia: Win32 API, procesy, w¹tki i prace, tryb j¹dra
                                              i tryb u¿ytkownika
                                            • Architektura systemu — kluczowe komponenty
                 CZYTELNIA                  • Mechanizmy systemowe: obs³uga przerwañ, mened¿er obiektów,
                                              synchronizacja, systemowe w¹tki wykonawcze
          FRAGMENTY KSI¥¯EK ONLINE          • Proces uruchamiania i zamykania systemu
                                            • Mechanizmy zarz¹dzania,
                                            • Zarz¹dzanie procesami, w¹tkami i pracami
                                            • Zarz¹dzanie pamiêci¹
                                            • Zagadnienia zwi¹zane z bezpieczeñstwem systemu
                                            • Podsystem wej cia-wyj cia
                                            • Zarz¹dzanie pamiêci¹ masow¹, systemy plików
                                            • Mened¿er pamiêci podrêcznej
                                            • Praca systemu Windows 2000 w sieciach lokalnych i Internecie
                                         Je li powa¿nie my lisz o tworzeniu oprogramowania dla Windows 2000 lub chcesz nim
                                         w pe³ni profesjonalnie administrowaæ, Microsoft Windows 2000. Od rodka stanowiæ
Wydawnictwo Helion                       bêdzie wa¿n¹ pozycjê w Twojej bibliotece. Bardziej szczegó³owego opisu tego systemu
ul. Chopina 6                            operacyjnego nie znajdziesz w ¿adnej innej ksi¹¿ce.
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
Rys historyczny .............................................................................17
Słowo wstępne .............................................................................19
Wstęp...........................................................................................21
Rozdział 1. Zagadnienia i narzędzia ..............................................25
   Fundamentalne zagadnienia i pojęcia .................................................................................... 25
       Win32 API ................................................................................................................... 25
       Usługi, funkcje i procedury ............................................................................................ 27
       Procesy, wątki i prace.................................................................................................... 27
       Pamięć wirtualna........................................................................................................... 29
       Tryb jądra kontra tryb u ytkownika ................................................................................ 31
       Obiekty i uchwyty ......................................................................................................... 35
       Bezpieczeństwo ............................................................................................................ 36
       Rejestr ......................................................................................................................... 37
       Unicode........................................................................................................................ 38
   Jak zajrzeć do wnętrza Windows 2000? ................................................................................ 38
       Narzędzia na dołączonej płycie CD................................................................................. 40
       Narzędzie Wydajność .................................................................................................... 40
       Windows 2000 Support Tools ........................................................................................ 41
       Windows 2000 Resource Kits......................................................................................... 41
       Programy uruchomieniowe jądra .................................................................................... 41
       Platform Software Development Kit (SDK)..................................................................... 44
       Device Driver Kit (DDK)............................................................................................... 44
       Narzędzia z witryny System Internals.............................................................................. 45
   Podsumowanie ................................................................................................................... 45

Rozdział 2. Architektura systemu .................................................47
   Wymagania i cele projektowe .............................................................................................. 47
   Model systemu operacyjnego ............................................................................................... 49
     Przenośność ................................................................................................................. 51
     Symetryczne wieloprzetwarzanie .................................................................................... 52
     Skalowalność................................................................................................................ 53
10      Spis treści


        Zarys architektury............................................................................................................... 54
        Pakiety handlowe Windows 2000......................................................................................... 55
           Wersja testowa ............................................................................................................. 58
           Pliki systemowe związane z maszynami wieloprocesorowymi........................................... 58
        Kluczowe komponenty systemu ........................................................................................... 61
           Podsystemy środowiskowe i biblioteki podsystemów ....................................................... 62
           Ntdll.dll........................................................................................................................ 72
           Centrum wykonawcze ................................................................................................... 73
           Jądro............................................................................................................................ 75
           Warstwa uniezale nienia od sprzętu................................................................................ 77
           Sterowniki urządzeń ...................................................................................................... 78
           Podglądanie nieudokumentowanych interfejsów .............................................................. 80
           Procesy Systemowe....................................................................................................... 84
        Podsumowanie ................................................................................................................... 96

     Rozdział 3. Mechanizmy systemowe..............................................97
        Obsługa pułapek ................................................................................................................. 97
           Obsługa przerwań ......................................................................................................... 99
           Obsługa wyjątków....................................................................................................... 117
           Obsługa wywołań usług systemowych .......................................................................... 124
        Mened er obiektów........................................................................................................... 127
           Obiekty centrum wykonawczego .................................................................................. 129
           Struktura obiektu......................................................................................................... 131
        Synchronizacja ................................................................................................................. 148
           Synchronizacja jądra ................................................................................................... 149
           Synchronizacja centrum wykonawczego........................................................................ 152
        Systemowe wątki wykonawcze .......................................................................................... 158
        Globalne znaczniki Windows 2000..................................................................................... 161
        Lokalne wywołania procedur (LPC) ................................................................................... 164
        Podsumowanie ................................................................................................................. 167

     Rozdział 4. Uruchamianie i zamykanie systemu........................... 169
        Proces uruchamiania ......................................................................................................... 169
            Przed uruchomieniem systemu ..................................................................................... 170
            Sektor startowy i Ntldr................................................................................................. 172
            Inicjalizacja jądra i podsystemów wykonawczych .......................................................... 179
            Smss, Csrss i Winlogon ............................................................................................... 183
        Tryb awaryjny.................................................................................................................. 185
            Ładowanie sterowników w trybie awaryjnym ................................................................ 186
            Programy u ytkownika potrafiące obsłu yć tryb awaryjny .............................................. 187
            Rejestrowanie rozruchu w trybie awaryjnym ................................................................. 188
        Konsola odzyskiwania....................................................................................................... 189
        Zamykanie systemu .......................................................................................................... 191
        Załamanie systemu ........................................................................................................... 193
            Dlaczego Windows 2000 traci stabilność? ..................................................................... 193
            Niebieski ekran ........................................................................................................... 194
            Pliki zrzutu awaryjnego ............................................................................................... 196
        Podsumowanie ................................................................................................................. 199
Spis treści                  11


Rozdział 5. Mechanizmy zarządzania .......................................... 201
   Rejestr ............................................................................................................................. 201
       Typy danych stosowane w rejestrze .............................................................................. 202
       Struktura logiczna rejestru............................................................................................ 203
       Wewnątrz rejestru ....................................................................................................... 207
   Usługi.............................................................................................................................. 219
       Aplikacje usług ........................................................................................................... 219
       Konta usługi ............................................................................................................... 224
       Mened er kontroli usług (SCM) ................................................................................... 227
       Uruchamianie usług..................................................................................................... 230
       Błędy uruchomienia..................................................................................................... 233
       Rozruch systemu i ostatnia prawidłowa kopia rejestru .................................................... 234
       Awarie usług............................................................................................................... 236
       Zakończenie działania usługi........................................................................................ 236
       Współdzielone procesy usług ....................................................................................... 237
       Programy zarządzania usługami (SCP).......................................................................... 240
   Instrumentacja zarządzania Windows (WMI) ...................................................................... 241
       Architektura WMI....................................................................................................... 242
       Dostawcy ................................................................................................................... 244
       Common Information Model i Managed Object Format Language ................................... 245
       Przestrzeń nazw WMI ................................................................................................. 247
       Skojarzenia klas .......................................................................................................... 248
       Implementacja WMI.................................................................................................... 249
       Bezpieczeństwo WMI.................................................................................................. 250
   Podsumowanie ................................................................................................................. 250

Rozdział 6. Procesy, wątki i zadania ............................................ 251
   Informacje o procesie........................................................................................................ 251
       Struktury danych......................................................................................................... 251
       Zmienne jądra............................................................................................................. 262
       Liczniki wydajności..................................................................................................... 264
       Funkcje ...................................................................................................................... 264
       Narzędzia ................................................................................................................... 265
   Funkcja CreateProcess ...................................................................................................... 272
       Etap 1. Otwieranie pliku binarnego ............................................................................... 274
       Etap 2. Tworzenie obiektu procesu centrum wykonawczego Windows 2000..................... 276
       Etap 3. Tworzenie wątku początkowego oraz jego stosu i kontekstu................................ 280
       Etap 4. Informowanie podsystemu Win32 o nowym procesie .......................................... 281
       Etap 5. Rozpoczęcie wykonywania wątku początkowego................................................ 282
       Etap 6. Inicjacja procesu w kontekście nowego procesu.................................................. 282
   Informacje o wątku........................................................................................................... 283
       Struktury danych......................................................................................................... 283
       Zmienne jądra............................................................................................................. 292
       Liczniki wydajności..................................................................................................... 292
       Funkcje ...................................................................................................................... 293
       Narzędzia ................................................................................................................... 293
   Funkcja CreateThread ....................................................................................................... 295
   Przydzielanie wątkom czasu procesora ............................................................................... 298
       Omówienie przydzielania wątkom czasu procesora w Windows 2000.............................. 299
       Poziomy priorytetu...................................................................................................... 302
12      Spis treści


           Funkcje API słu ące do przydzielania czasu procesora ................................................... 304
           Narzędzia ................................................................................................................... 304
           Priorytety czasu rzeczywistego ..................................................................................... 306
           Poziomy przerwań a poziomy priorytetu........................................................................ 307
           Stany wątku................................................................................................................ 307
           Kwant ........................................................................................................................ 309
           Struktury danych słu ące do przydzielania czasu procesora............................................. 312
           Ró ne scenariusze przydzielania czasu procesora........................................................... 313
           Przełączanie kontekstu................................................................................................. 316
           Wątek bezczynny........................................................................................................ 316
           Podwy szanie priorytetu .............................................................................................. 317
        Zadanie............................................................................................................................ 327
        Podsumowanie ................................................................................................................. 331

     Rozdział 7. Zarządzanie pamięcią ............................................... 333
        Elementy mened era pamięci............................................................................................. 334
           Konfigurowanie mened era pamięci ............................................................................. 335
           Badanie wykorzystania pamięci.................................................................................... 338
        Usługi mened era pamięci ................................................................................................. 341
           Rezerwowanie i deklarowanie stron .............................................................................. 342
           Blokowanie pamięci .................................................................................................... 343
           Ziarnistość alokacji...................................................................................................... 344
           Pamięć współdzielona i pliki odwzorowane ................................................................... 344
           Zabezpieczanie pamięci ............................................................................................... 346
           Kopiowanie przy zapisie .............................................................................................. 347
           Funkcje stosu.............................................................................................................. 350
           Okienkowe rozszerzenia adresowania ........................................................................... 351
        Systemowe pule pamięci ................................................................................................... 352
           Listy asocjacyjne......................................................................................................... 359
           Weryfikator sterowników............................................................................................. 360
        Układ przestrzeni adresowej .............................................................................................. 365
           Układ przestrzeni adresowej u ytkownika ..................................................................... 366
           Układ systemowej przestrzeni adresowej....................................................................... 370
        Tłumaczenie adresów........................................................................................................ 374
           Tłumaczenie adresu wirtualnego................................................................................... 375
           Katalogi stron ............................................................................................................. 377
           Tabele stron procesu i systemu ..................................................................................... 378
           Wpisy tabeli stron ....................................................................................................... 380
           Bajt w obrębie strony .................................................................................................. 382
           Asocjacyjny bufor translacji ......................................................................................... 382
           Rozszerzenia fizycznych adresów ................................................................................. 384
        Obsługa błędu stron .......................................................................................................... 386
           Niewa ne wpisy tabeli stron......................................................................................... 387
           Prototypowe wpisy tabeli stron..................................................................................... 387
           Stronicowanie operacji wejścia-wyjścia......................................................................... 389
           Błąd kolizji strony ....................................................................................................... 390
           Pliki stronicowania ...................................................................................................... 391
        Deskryptory adresu wirtualnego ......................................................................................... 391
        Zestawy robocze............................................................................................................... 394
           Polityka w zakresie stronicowania................................................................................. 395
           Zarządzanie zestawami roboczymi................................................................................ 396
Spis treści                 13


      Mened er zbioru równowagi i program wymiany ........................................................... 400
      Systemowy zestaw roboczy ......................................................................................... 401
   Baza danych numerów stron pamięci .................................................................................. 403
      Dynamika list stron ..................................................................................................... 405
      Program zapisu stron zmodyfikowanych ....................................................................... 409
      Struktury danych numerów stron pamięci ...................................................................... 410
   Obiekty sekcji................................................................................................................... 413
   Podsumowanie ................................................................................................................. 419

Rozdział 8. Bezpieczeństwo ........................................................ 421
   Klasy bezpieczeństwa........................................................................................................ 421
   Składniki systemu zabezpieczeń......................................................................................... 423
   Ochrona obiektów............................................................................................................. 426
       Sprawdzanie dostępu ................................................................................................... 427
       Identyfikatory bezpieczeństwa...................................................................................... 429
       Znaczniki dostępu ....................................................................................................... 430
       Personalizacja ............................................................................................................. 434
       Znaczniki ograniczone ................................................................................................. 436
       Deskryptory bezpieczeństwa i kontrola dostępu ............................................................. 437
   Nadzorowanie bezpieczeństwa ........................................................................................... 444
   Logowanie ....................................................................................................................... 448
       Inicjacja procesu Winlogon .......................................................................................... 449
       Logowanie u ytkownika .............................................................................................. 450
   Podsumowanie ................................................................................................................. 453

Rozdział 9. System wejścia-wyjścia .............................................. 455
   Zało enia projektowe ........................................................................................................ 455
   Komponenty systemu wejścia-wyjścia ................................................................................ 456
       Mened er wejścia-wyjścia............................................................................................ 459
       Sterowniki urządzeń .................................................................................................... 460
       Mened er PnP ............................................................................................................ 467
       Mened er zasilania ...................................................................................................... 470
   Struktury danych wejścia-wyjścia....................................................................................... 476
       Obiekty plików ........................................................................................................... 476
       Obiekty sterowników i obiekty urządzeń ....................................................................... 479
       Pakiety ądań wejścia-wyjścia...................................................................................... 484
       Porty ukończenia operacji wejścia-wyjścia .................................................................... 491
   Ładowanie, inicjalizacja i instalacja sterownika ................................................................... 493
       Wartość początkowa ................................................................................................... 493
       Wyliczanie urządzeń ................................................................................................... 494
       Węzły devnode ........................................................................................................... 498
       Ładowanie sterownika węzłów devnode........................................................................ 499
       Instalacja sterownika ................................................................................................... 501
   Przetwarzanie operacji wejścia-wyjścia............................................................................... 504
       Typy operacji wejścia-wyjścia...................................................................................... 504
         ądanie wejścia-wyjścia do sterownika jednowarstwowego ............................................ 507
         ądania wejścia-wyjścia do sterowników wielowarstwowych ......................................... 512
       Działanie portu ukończenia operacji wejścia-wyjścia...................................................... 515
       Synchronizacja............................................................................................................ 517
   Podsumowanie ................................................................................................................. 519
14     Spis treści


     Rozdział 10. Zarządzanie pamięcią masową ................................ 521
       Ewolucja pamięci masowej w systemie Windows 2000........................................................ 521
       Podział na partycje............................................................................................................ 523
           Podział na partycje podstawowe ................................................................................... 524
           Podział na partycje dynamiczne.................................................................................... 525
       Sterowniki pamięci masowej.............................................................................................. 530
           Sterowniki dysku ........................................................................................................ 530
           Nazwy urządzeń ......................................................................................................... 531
           Zarządzanie dyskami podstawowymi ............................................................................ 532
           Zarządzanie dyskami dynamicznymi............................................................................. 533
           Monitorowanie wydajności dysku................................................................................. 535
       Zarządzanie woluminami zło onymi z kilku partycji............................................................ 536
           Woluminy łączone....................................................................................................... 537
           Woluminy rozło one ................................................................................................... 537
           Woluminy dublowane.................................................................................................. 538
           Woluminy RAID-5...................................................................................................... 540
           Operacje wejścia-wyjścia woluminu ............................................................................. 541
       Przestrzeń nazw woluminów.............................................................................................. 542
           Mened er montowania................................................................................................. 543
           Punkty montowania..................................................................................................... 544
           Montowanie woluminów.............................................................................................. 546
       Podsumowanie ................................................................................................................. 550

     Rozdział 11. Mened er pamięci podręcznej................................. 551
       Kluczowe funkcje Mened era pamięci podręcznej systemu Windows 2000............................ 551
           Pojedynczy, scentralizowany system pamięci podręcznej................................................ 552
           Mened er pamięci ....................................................................................................... 552
           Koherencja pamięci podręcznej .................................................................................... 553
           Buforowanie bloków wirtualnych ................................................................................. 553
           Buforowanie oparte na strumieniu................................................................................. 555
           Obsługa odzyskiwalnego systemu plików ...................................................................... 555
       Struktura pamięci podręcznej ............................................................................................. 556
       Rozmiar pamięci podręcznej .............................................................................................. 558
           Wirtualny rozmiar pamięci........................................................................................... 558
           Fizyczny rozmiar pamięci podręcznej ........................................................................... 559
       Struktury danych pamięci podręcznej ................................................................................. 562
           Struktury danych pamięci podręcznej, odnoszące się do całego systemu........................... 563
           Struktury danych pamięci podręcznej odnoszące się do pliku .......................................... 563
       Działanie pamięci podręcznej............................................................................................. 567
           Buforowanie z opóźnionym zapisem i powolny zapis ..................................................... 567
           Inteligentny odczyt z wyprzedzeniem............................................................................ 570
           Wątki systemowe ........................................................................................................ 572
           Szybkie operacje wejścia-wyjścia ................................................................................. 572
       Procedury obsługujące pamięć podręczną ........................................................................... 574
           Kopiowanie do (i z) pamięci podręcznej........................................................................ 575
           Buforowanie z interfejsami mapowania i spinania .......................................................... 576
           Buforowanie z interfejsami bezpośredniego dostępu do pamięci ...................................... 578
           Zdławianie zapisu........................................................................................................ 579
       Podsumowanie ................................................................................................................. 581
Spis treści                  15


Rozdział 12. Systemy plików ....................................................... 583
   Formaty systemów plików Windows 2000 .......................................................................... 584
       CDFS......................................................................................................................... 584
       UDF .......................................................................................................................... 584
       FAT12, FAT16 i FAT32.............................................................................................. 585
       NTFS......................................................................................................................... 587
   Architektura sterownika systemu plików ............................................................................. 588
       Lokalne sterowniki FSD .............................................................................................. 589
       Zdalne sterowniki FSD ................................................................................................ 590
       Działanie systemu plików ............................................................................................ 591
   Zadania i cechy projektu systemu NTFS ............................................................................. 597
       Wymagania systemu plików klasy wy szej.................................................................... 597
       Zaawansowane cechy systemu NTFS............................................................................ 599
   Sterownik systemu plików NTFS ....................................................................................... 609
   Struktura dyskowa systemu plików NTFS........................................................................... 611
       Woluminy .................................................................................................................. 611
       Klastry ....................................................................................................................... 612
       Tablica MFT (Master File Table).................................................................................. 612
       Liczby odniesień plików .............................................................................................. 618
       Rekordy plików........................................................................................................... 618
       Nazwy plików............................................................................................................. 620
       Atrybuty rezydentne i nierezydentne ............................................................................. 622
       Indeksowanie.............................................................................................................. 625
       Kompresja danych i pliki rozrzedzone........................................................................... 627
       Punkty reparsowe........................................................................................................ 631
       Plik dziennika zmian ................................................................................................... 631
       Identyfikatory obiektów ............................................................................................... 632
       Śledzenie udziałów...................................................................................................... 633
       Zabezpieczenia połączone ............................................................................................ 633
   Obsługa odzyskiwania w systemie NTFS............................................................................ 633
       Ewolucja projektu systemu plików................................................................................ 634
       Rejestracja.................................................................................................................. 637
       Odzyskiwanie ............................................................................................................. 642
   Odzyskiwanie uszkodzonych klastrów w systemie NTFS ..................................................... 646
   System szyfrowania plików ............................................................................................... 650
       Rejestrowanie wywołań zwrotnych ............................................................................... 652
       Szyfrowanie pliku po raz pierwszy................................................................................ 653
       Proces odszyfrowania .................................................................................................. 658
       Tworzenie kopii zapasowych plików zaszyfrowanych .................................................... 659
   Podsumowanie ................................................................................................................. 660

Rozdział 13. Praca w sieci ........................................................... 661
   Wzorcowy model systemów otwartych (OSI)...................................................................... 661
      Warstwy OSI.............................................................................................................. 662
      Komponenty Windows 2000 do pracy w sieci................................................................ 663
   Funkcje API do pracy w sieci............................................................................................. 665
      Nazwane potoki i funkcje mailslot ................................................................................ 665
      Windows Sockets........................................................................................................ 671
      Zdalne wywołanie procedury........................................................................................ 675
16      Spis treści


            Wspólny system plików internetowych (CIFS)............................................................... 679
            NetBIOS .................................................................................................................... 683
            Inne funkcje API do pracy w sieci................................................................................. 686
        Określanie nazw zasobów sieciowych................................................................................. 688
            Ruter MPR................................................................................................................. 689
            Sterownik MUP .......................................................................................................... 691
            System nazw domen (DNS) ......................................................................................... 692
        Sterowniki protokołu......................................................................................................... 693
        Sterowniki NDIS .............................................................................................................. 696
            Odmiany miniportu NDIS ............................................................................................ 700
            Specyfikacja NDIS zorientowana na połączenie ............................................................. 700
        Powiązanie....................................................................................................................... 703
        Usługi sieciowe ................................................................................................................ 704
            Dostęp zdalny ............................................................................................................. 705
            Active Directory.......................................................................................................... 705
            Network Load Balancing ............................................................................................. 706
            Usługa File Replication................................................................................................ 707
            Rozproszony system plików ......................................................................................... 708
            Rozszerzenia TCP/IP................................................................................................... 709
        Podsumowanie ................................................................................................................. 711

     Słownik....................................................................................... 713
     Skorowidz................................................................................... 751
2
                   Architektura systemu
    Po omówieniu pojęć, zagadnień i narzędzi, których znajomość jest konieczna, pora przejść
    do zało eń projektowych i struktury systemu Microsoft Windows 2000 (dawniej Windows
    NT). Ten rozdział prezentuje ogólną architekturę systemu — kluczowe komponenty, ich
    współpracę i kontekst, w jakim działają. Aby zbudować podstawy do zrozumienia we-
    wnętrznej struktury Windows 2000, musimy omówić zało enia i cele projektowe, które
    określono przy tworzeniu pierwszego projektu i specyfikacji systemu.



Wymagania i cele projektowe
    Poni sze wymagania nadały kierunek specyfikacji systemu Windows NT w 1989 r.:
        Stworzyć w pełni 32-bitowy, wielodostępny system operacyjny, zapewniający
        wielowątkowość z wywłaszczeniem i pamięć wirtualną.
        Obsługiwać wiele platform i architektur sprzętowych.
        Zapewnić obsługę i skalowalność symetrycznych systemów
        wieloprzetwarzania.
        Stworzyć platformę przetwarzania rozproszonego, funkcjonującą zarówno
        jako klient, jak i jako serwer.
        Umo liwić uruchomienie większości istniejących 16-bitowych aplikacji
        dla MS-DOS oraz Microsoft Windows 3.1.
        Spełnić rządowe wymagania zgodności ze standardem POSIX 1003.1.
        Spełnić rządowe i przemysłowe wymagania dotyczące bezpieczeństwa systemu
        komputerowego.
        Zapewnić mo liwość adaptacji do warunków rynku międzynarodowego poprzez
        obsługę standardu Unicode.
48   Rozdział 2. Architektura systemu


     Zespół projektowy Windows NT uznał, e ka da decyzja dotycząca systemu musi bazować
     na przyjętych celach projektowych. Są to:
         Rozszerzalność. Kod musi być napisany w sposób umo liwiający wygodny rozwój,
         postępujący za zmieniającymi się wymaganiami rynku.
         Przenośność. System musi obsługiwać wiele platform sprzętowych. Musi tak e
         istnieć mo liwość relatywnie łatwego przenoszenia go na nowe platformy, zgodnie
         z trendami rynkowymi.
         Niezawodność i stabilność. System powinien być odporny zarówno na wewnętrzne
         awarie, jak i na zagro enia zewnętrzne. Aplikacje nie mogą mieć mo liwości
         zagro enia systemowi operacyjnemu ani innym aplikacjom.
         Zgodność. Mimo ze Windows NT ma rozszerzać istniejące technologie, interfejs
         u ytkownika oraz API powinien być zgodny ze starszymi wersjami Windows
         oraz z MS-DOS. Windows NT powinien równie dobrze współpracować z innymi
         systemami, takimi jak Unix, OS/2 czy NetWare.
         Wydajność. W ramach pozostałych zało eń projektowych system powinien
         zapewniać wydajność i czas reakcji na najwy szym, mo liwym na danej platformie
         sprzętowej, poziomie.

     W miarę zagłębiania się w tajniki wewnętrznej struktury i działania Windows 2000 oka e
     się, w jaki sposób te początkowe zało enia i wymagania rynkowe zostały z powodzeniem
     wplecione w konstrukcję systemu. Ale przed dokładną analizą omówimy ogólny model
     projektowy Windows 2000 oraz jego podobieństwa i ró nice z innymi współczesnymi
     systemami operacyjnymi.


      Windows 2000 kontra Consumer Windows
      Windows 2000 oraz Consumer Windows (Windows 95, Windows 98 i Windows Mille-
      nium Edition) wchodzą w skład „rodziny systemów operacyjnych Windows”. Rodzina
      ta posiada wspólny interfejs programowy (Win32 oraz COM), a tak e, w niektórych
      przypadkach, wspólny kod. Windows 2000, Windows 98 i Windows Millenium Edition
      korzystają równie ze wspólnego modelu sterowników urządzeń o nazwie Windows
      Driver Model (WDM). Model ten zostanie bardziej szczegółowo omówiony w rozdziale 9.
      Od momentu rozpoczęcia prac nad Windows NT Microsoft jasno określał ten system
      jako strategiczną platformę przyszłości — nie tylko dla serwerów i komputerów
      w przedsiębiorstwach, ale tak e docelowo dla komputerów domowych. Poni sza lista
      wymienia pewne ró nice w architekturze oraz zalety Windows 2000 względem Con-
      sumer Windows:
          Windows 2000 obsługuje systemy wieloprocesorowe — Consumer Windows nie.
          System plików Windows 2000 zapewnia bezpieczeństwo (poprzez na przykład
          uznaniową kontrolę dostępu). Nie mo na tego powiedzieć o systemie plików
          wykorzystywanym w Consumer Windows.
          Windows 2000 jest w pełni 32-bitowym systemem operacyjnym — nie zawiera
          kodu 16-bitowego, poza fragmentami kodu wspierającymi uruchamianie
          16-bitowych aplikacji Windows. Systemy Consumer Windows zawierają du ą
          ilość 16-bitowego kodu odziedziczonego po przodkach: Windows 3.1 i MS-DOS.
Model systemu operacyjnego               49



         System Windows 2000 jest w pełni wielodostępny — czego nie mo na powiedzieć
         o znaczącej części Consumer Windows (chodzi tu głównie o 16-bitowy kod
         odziedziczony po Windows 3.1). Ten nie wielodostępny kod to większość funkcji
         związanych z grafiką i systemem zarządzania interfejsem u ytkownika (GDI oraz
         USER). W momencie, gdy aplikacja 32-bitowa uruchomiona w Consumer
         Windows próbuje wywołać funkcję systemową zaimplementowaną poprzez nie
         wielodostępny kod 16-bitowy, musi najpierw dokonać ogólnosystemowej blokady
         (nazywanej mutexem), aby nie dopuścić innych wątków do tego kodu. Co gorsza,
         aplikacja 16-bitowa utrzymuje tę blokadę podczas pracy. W rezultacie, mimo e
         jądro Consumer Windows zawiera 32-bitowy mechanizm szeregowania zadań
         z wywłaszczeniem, aplikacje często wykonywane są jednowątkowo, poniewa
         większość systemu jest zaimplementowana w postaci nie wielodostępnego kodu.
         Windows 2000 zapewnia mo liwość uruchomienia 16-bitowych aplikacji Windows
         w ich własnej przestrzeni adresowej — systemy Consumer Windows zawsze
         uruchamiają 16-bitowe aplikacje we wspólnej przestrzeni adresowej, przez co mogą
         one przeszkadzać sobie (i zawieszać się) nawzajem.
         Wspólna przestrzeń adresowa w Windows 2000 jest widoczna jedynie dla
         procesów, które korzystają z tego samego segmentu pamięci współdzielonej.
         (W Win32 API segment pamięci współdzielonej nazywa się obiektem
         odwzorowania pliku — ang. file mapping object). W systemach Consumer
         Windows dostęp i zapisywanie w pamięci współdzielonej są mo liwe dla
         wszystkich procesów. Tak więc ka dy proces mo e wykonać zapis do obiektu
         odwzorowania pliku.
         Systemy Consumer Windows posiadają równie krytyczne dla systemu strony
         pamięci, których modyfikacja jest mo liwa w trybie u ytkownika. Dzięki temu
         aplikacja u ytkownika jest w stanie doprowadzić do zakłócenia lub załamania pracy
         systemu.
     Jedyną rzeczą mo liwą w systemach Consumer Windows, która nigdy nie będzie
     mo liwa w Windows 2000, jest zdolność uruchamiania wszystkich starszych aplikacji
     dla MS-DOS i Windows 3.1 (zwłaszcza aplikacji wymagających bezpośredniego do-
     stępu do sprzętu) oraz 16-bitowych sterowników urządzeń dla MS-DOS-a. Podczas gdy
     stuprocentowa zgodność z systemami MS-DOS i Windows 3.1 była nadrzędnym zało-
      eniem w Windows 95, zało eniem w przypadku Windows NT była mo liwość uru-
     chomienia większości istniejących aplikacji 16-bitowych, przy zachowaniu spójności
     i niezawodności systemu.




Model systemu operacyjnego
    W większości wielodostępnych systemów operacyjnych aplikacje są oddzielone od samego
    systemu — kod systemu operacyjnego jest wykonywany w uprzywilejowanym trybie
    procesora (w tej ksią ce określanym jako tryb jądra), z dostępem do danych systemo-
    wych oraz sprzętu. Kod aplikacji jest wykonywany w pozbawionym przywilejów trybie
    procesora (zwanym trybem u ytkownika), z ograniczonym dostępem do interfejsów,
    danych systemowych oraz bez bezpośredniego dostępu do sprzętu. Gdy program w trybie
50   Rozdział 2. Architektura systemu


     u ytkownika wywołuje usługę systemową, procesor przechwytuje to wywołanie i prze-
     łącza wywołujący wątek w tryb jądra. Gdy wykonanie usługi systemowej kończy się,
     system operacyjny przełącza kontekst wątku z powrotem do trybu u ytkownika i konty-
     nuuje wykonanie aplikacji.

     Windows 2000 jest podobny do większości systemów uniksowych w tym sensie, e jest
     systemem monolitycznym — większość kodu systemu operacyjnego i sterowników urzą-
     dzeń współdzieli tę samą, chronioną przestrzeń adresową trybu jądra. Oznacza to, e
     ka dy komponent systemu lub sterownik urządzenia mo e potencjalnie zakłócić inte-
     gralność danych wykorzystywanych przez inne komponenty systemu.

     Wszystkie te komponenty systemu operacyjnego są oczywiście w pełni chronione przed
     działaniem błędnych aplikacji, poniewa aplikacje nie mają bezpośredniego dostępu do
     kodu i danych uprzywilejowanej części systemu operacyjnego (mimo e mogą wywo-
     ływać inne usługi jądra). Ta ochrona jest powodem, dla którego Windows 2000 ma repu-
     tację systemu niezawodnego i stabilnego, zarówno w roli serwera aplikacji, jak i stacji
     roboczej. Ma reputację jednak szybkiego i sprawnego z punktu widzenia podstawowych
     usług systemu operacyjnego, jak zarządzanie pamięcią wirtualną, dostęp do plików, obsługa
     sieci oraz współdzielenie drukarek i plików.


      Czy Windows 2000 jest systemem z mikrojądrem?
      Mimo e niektórzy twierdzą inaczej, Windows 2000 nie jest systemem operacyjnym
      z mikrojądrem w klasycznym sensie tego określenia, oznaczającego system, w którym
      główne komponenty (jak zarządzanie pamięcią, procesami czy zasobami wejścia-
      -wyjścia) są osobnymi procesami — ka dy w prywatnej przestrzeni adresowej — opar-
      tymi na prostym zestawie usług zapewnianych przez mikrojądro. Na przykład system
      operacyjny Mach, opracowany laboratoriach Carnegie Mellon University, będący
      współczesnym przykładem architektury z mikrojądrem, zawiera minimalnej wielkości
      jądro, zapewniające szeregowanie procesów, przekazywanie komunikatów, pamięć
      wirtualną oraz sterowniki urządzeń. Pozostałe komponenty, włącznie z ró nymi inter-
      fejsami programowymi, systemami plików i obsługą sieci, funkcjonują w trybie
      u ytkownika. Jednak e komercyjne implementacje systemu z mikrojądrem Mach z re-
      guły zezwalają na wykonanie w trybie jądra przynajmniej komponentów obsługują-
      cych system plików, sieci oraz zarządzanie pamięcią. Powód jest prosty: klasyczna
      architektura oparta na mikrojądrze jest niepraktyczna ze względów komercyjnych
      z powodu zbyt małej wydajności.
      Czy fakt, e tak wiele komponentów Windows 2000 działa w trybie jądra, oznacza, e
      system ten jest bardziej podatny na awarie ni system z prawdziwym mikrojądrem? Ale
      skąd. Mo na rozwa yć następujący scenariusz: załó my, e kod obsługujący system pli-
      ków zawiera błąd, sporadycznie powodujący awarię. W tradycyjnym systemie operacyj-
      nym lub zmodyfikowanym systemie z mikrojądrem błąd w kodzie trybu jądra, takim jak
      procedury mened era pamięci lub systemu plików, prawdopodobnie spowoduje załama-
      nie całego systemu. W klasycznym systemie operacyjnym z mikrojądrem takie kompo-
      nenty działają w trybie u ytkownika, tak więc teoretycznie błąd oznacza zakończenie
      procesu komponentu. Ale z praktycznego punktu widzenia system padnie, poniewa
      przetrwanie awarii takiego krytycznego procesu prawdopodobnie będzie niemo liwe.
Model systemu operacyjnego              51


     Komponenty trybu jądra Windows 2000 są równie zgodne z paradygmatami projekto-
     wania zorientowanego obiektowo. Na przykład nie odwołują się nawzajem do swoich
     wewnętrznych struktur danych. Zamiast tego korzystają z formalnych interfejsów, umo -
     liwiających dostęp i modyfikację tych struktur danych.

     Oprócz powszechnego stosowania obiektów do reprezentacji współdzielonych zasobów
     systemowych, Windows 2000 nie jest systemem obiektowym w ścisłym tego słowa zna-
     czeniu. Większość kodu systemu operacyjnego napisano w języku C. Ma to uzasadnienie
     w przenośności oraz powszechnej dostępności narzędzi związanych z tym językiem. C nie
     obsługuje w bezpośredni sposób konstrukcji znanych z języków obiektowych, jak dyna-
     miczne przyporządkowywanie typów danych, polimorfizm czy dziedziczenie klas. Dlatego
     oparta na języku C implementacja obiektów w Windows 2000 korzysta z cech poszcze-
     gólnych języków obiektowych, ale nie jest od nich zale na.

Przenośność
     System Windows 2000 został zaprojektowany z myślą o obsłudze rozmaitych architektur
     sprzętowych, włącznie z systemami typu CISC opartymi na procesorach firmy Intel oraz
     systemami typu RISC. Pierwsza wersja Windows NT obsługiwała architektury x86 oraz
     MIPS. Obsługa procesora Alpha AXP firmy Digital Equipment Corporation (DEC) została
     dodana niedługo później. Obsługa czwartej architektury sprzętowej, procesora Motorola
     PowerPC, została dodana w Windows 3.51. Idąc za zmieniającym się zapotrzebowaniem
     rynku, obsługę procesorów MIPS oraz PowerPC zarzucono przed rozpoczęciem prac
     nad systemem Windows 2000. Później firma Compaq cofnęła wsparcie dla architektury
     Alpha AXP, w wyniku czego system Windows 2000 obsługuje jedynie platformę x86.

      Kolejną obsługiwaną przez przyszłe wersje Windows 2000 architekturą będzie nowa rodzina pro-
      cesorów Itanium firmy Intel, pierwsza implementacja architektury 64-bitowej, opracowywana
      wspólnie przez Intela i Hewlett-Packard pod nazwą IA-64 (od Intel Architecture 64). 64-bitowa
      wersja Windows zapewni o wiele większą przestrzeń adresową zarówno dla procesów u ytkowni-
      ka, jak i dla systemu. Mimo e jest to znaczące usprawnienie, mające pozytywny wpływ na skalo-
      walność systemu, jak dotąd dostosowywanie Windows 2000 do platformy 64-bitowe nie niosło ze
      sobą konieczności większych zmian w architekturze jądra systemu (innych ni oczywiście zmiany
      w systemie zarządzania pamięcią). Informacje dotyczące przygotowania obecnie tworzonych pro-
      gramów na nadejście 64-bitowego systemu Windows zawarte są w części dokumentacji pakietu
      Platform SDK, pod tytułem „Win64 Programming Preview” (dokumentacja ta jest równie dostęp-
      na pod adresem msdn.microsoft.com). Ogólne informacje na temat 64-bitowego systemu Windows
      mo na uzyskać po wpisaniu słowa „64-bit” w wyszukiwarce na www.microsoft. com/windows.

     Windows 2000 zapewnia przenośność pomiędzy architekturami sprzętowymi na dwa
     główne sposoby:
          Windows 2000 ma strukturę warstwową, w której niskopoziomowe fragmenty
          systemu, zale ne od architektury procesora lub platformy sprzętowej, są
          odizolowane w postaci oddzielnych modułów, dzięki czemu wy sze warstwy
          systemu mogą być niezale ne od ró nic między platformami sprzętowymi.
          Dwoma kluczowymi komponentami, zapewniającymi przenośność systemu
          operacyjnego, są jądro (zawarte w pliku Ntoskrnl.exe) oraz warstwa uniezale nienia
          od sprzętu (ang. Hardware Abstraction Layer — HAL, zawarta w pliku Hal.dll).
          (Obydwa te komponenty zostaną opisane bardziej szczegółowo w dalszej części
52    Rozdział 2. Architektura systemu


          tego rozdziału). Funkcje zale ne od architektury (takie jak przełączanie kontekstu
          wątków oraz obsługa pułapek) są zaimplementowane w jądrze. Funkcje, które
          mogą ró nić się w obrębie tej samej architektury (na przykład ró ne płyty główne),
          są zaimplementowane w warstwie HAL.
          Większość systemu Windows 2000 została napisana w języku C, niektóre
          fragmenty w C++. Asembler stosowano jedynie w tych częściach systemu,
          które muszą bezpośrednio komunikować się ze sprzętem (na przykład procedury
          obsługi pułapek i przerwań) lub są krytyczne z punktu widzenia wydajności
          (jak przełączanie kontekstów). Asembler był stosowany nie tylko w jądrze
          i warstwie HAL, ale tak e w kilku innych komponentach systemu (jak na
          przykład procedury wykorzystujące instrukcje przetwarzania potokowego czy
          implementujące jeden moduł w podsystemie wywołań procedur lokalnych),
          w części podsystemu Win32 działającej w trybie jądra, a nawet w niektórych
          bibliotekach trybu u ytkownika, jak kod startu procesu w Ntdll.dll (bibliotece
          systemowej, która zostanie omówiona później).

Symetryczne wieloprzetwarzanie
      Wielozadaniowość jest techniką, dzięki której system operacyjny umo liwia wykonywanie
      wielu wątków na jednym procesorze. Jednak, jeśli komputer posiada więcej ni jeden
      procesor, mo e wykonywać dwa wątki jednocześnie. Tak więc, podczas gdy wielozada-
      niowy system operacyjny wygląda tak, jakby wykonywał wiele wątków w tym samym
      czasie, system z wieloprzetwarzaniem rzeczywiście to robi, wykonując po jednym wątku
      na ka dym z procesorów.

      Jak ju wspomnieliśmy na początku rozdziału, jednym z kluczowych zało eń Windows NT
      była dobra obsługa systemów wieloprocesorowych. Windows 2000 jest systemem ope-
      racyjnym zapewniającym symetryczne wieloprzetwarzanie (ang. simultaneous multipro-
      cessing — SMP). Nie istnieje procesor nadrzędny — zarówno system operacyjny, jak
      i wątki u ytkownika mogą być wykonywane na dowolnym procesorze. Wszystkie pro-
      cesory współdzielą tak e tę samą przestrzeń adresową. Model ten jest przeciwieństwem
      asymetrycznego wieloprzetwarzania (ang. asymmetric multiprocessing — ASMP), w którym
      system operacyjny wybiera jeden procesor, na którym wykonuje swój kod, podczas gdy
      pozostałe procesory wykonują jedynie kod u ytkownika. Ró nice między dwoma mo-
      delami wieloprzetwarzania ilustruje rysunek 2.1.

      Mimo e Windows NT zaprojektowano z myślą o obsłudze do 32 procesorów, adna
      z zasadniczych cech systemu nie ogranicza liczby procesorów do 32 — liczba ta jest
      oczywistą i wygodną konsekwencją długości standardowego słowa 32-bitowego, stoso-
      wanego w roli maski bitowej.

      Rzeczywista liczba obsługiwanych procesorów zale y od wersji Windows 2000. (Ró ne
      wersje Windows 2000 są opisane w następnym podrozdziale). Liczba ta jest przecho-
      wywana w rejestrze, w kluczu HKLMSYSTEMCurrentControlSetControlSession
      ManagerLicensedProcessors. Warto pamiętać, e modyfikacja tej wartości jest pogwał-
      ceniem licencji systemu i prawdopodobnie spowoduje załamanie systemu przy ponownym
      uruchomieniu, poniewa modyfikacja rejestru celem umo liwienia obsługi większej liczby
      procesorów wymaga nie tylko zmiany tej wartości.
Model systemu operacyjnego      53




Rysunek 2.1. Wieloprzetwarzanie symetryczne kontra asymetryczne


Skalowalność
          Jednym z kluczowych zagadnień związanych z systemami wieloprocesorowymi jest ska-
          lowalność. Aby prawidłowo działać na systemie SMP, kod systemu operacyjnego musi
          odpowiadać ścisłym wytycznym i zasadom. Przydział zasobów oraz inne kwestie wydaj-
          nościowe są w systemach wieloprocesorowych bardziej skomplikowane ni w jedno-
          procesorowych i muszą być wzięte pod uwagę przy projektowaniu systemu. Windows
          2000 posiada kilka cech zapewniających sukces na polu wieloprocesorowych systemów
          operacyjnych:
               Zdolność wykonywania kodu systemu operacyjnego na dowolnym dostępnym
               procesorze lub na wielu procesorach jednocześnie.
               Wiele wątków wykonywanych w ramach jednego procesu — mogą one być
               równolegle przydzielone do ró nych procesorów.
               Drobnoziarnista synchronizacja procesów zarówno jądra, jak i sterowników
               urządzeń oraz serwerów, która pozwala większej liczbie komponentów działać
               równolegle na wielu procesorach.

          Dodatkowo, Windows 2000 zapewnia mechanizmy (takie jak uzupełniające porty I/O
          — omówione w rozdziale 9.) umo liwiające efektywną implementację wielowątkowych
          procesów serwerowych, które mogą być skalowane na systemach wieloprocesorowych.

          Synchronizacja wieloprocesorowa zostanie omówiona w rozdziale 3. Szczegóły szere-
          gowania wątków dla wielu procesorów są opisane w rozdziale 6.
54       Rozdział 2. Architektura systemu



Zarys architektury
         Po tym krótkim omówieniu zało eń projektowych Windows 2000 pora skupić uwagę na
         kluczowych komponentach składających się na jego architekturę. Uproszczony schemat
         tej architektury ilustruje rysunek 2.2. Warto pamiętać, e ten diagram jest elementarny
         — nie zawiera wszystkich informacji. Ró ne komponenty systemu Windows 2000 zostaną
         szczegółowo omówione w dalszej części tego rozdziału.

Rysunek 2.2.
Uproszczona
architektura
Windows 2000




         Na rysunku 2.2 natychmiast rzuca się w oczy linia oddzielająca fragmenty systemu Win-
         dows 2000 działające w trybach u ytkownika i jądra. Prostokąty ponad linią reprezentują
         procesy trybu u ytkownika, zaś komponenty pod linią są usługami systemu operacyjnego
         działającymi w trybie jądra. Jak wspomniano w rozdziale 1., wątki trybu u ytkownika
         wykonywane są w chronionej przestrzeni adresowej (choć podczas wykonywania w trybie
         jądra mają dostęp do przestrzeni systemowej). Tak więc, systemowe procesy pomocnicze,
         procesy usługowe, aplikacje u ytkownika oraz podsystemy środowiskowe posiadają swoje
         własne, prywatne przestrzenie adresowe.

         Cztery podstawowe typy procesów u ytkownika są opisane poni ej:
               Stałe systemowe procesy pomocnicze (ang. system support processes), takie jak
               proces logowania oraz mened er sesji, które nie są usługami Windows 2000
               (tzn. nie są uruchamiane przez mened era kontroli usług).
               Procesy usługowe zapewniające usługi Win32, takie jak mechanizm szeregowania
               zadań (Task Manager) czy Spooler. Wiele aplikacji serwerowych dla Windows
               2000, jak na przykład Microsoft SQL Server czy Microsoft Exchange Server,
               równie zawiera komponenty działające jako usługi.
               Aplikacje u ytkownika, które mogą nale eć do pięciu rodzajów: Win32,
               Windows 3.1, MS-DOS, POSIX lub OS/2 1.2.
               Podsystemy środowiskowe, umo liwiające aplikacjom u ytkownika dostęp do
               wewnętrznych usług systemu operacyjnego poprzez zestaw funkcji, tworzących
               środowisko systemu operacyjnego. Windows 2000 zawiera trzy podsystemy
               środowiskowe: Win32, POSIX oraz OS/2.
Pakiety handlowe Windows 2000              55


    Na rysunku 2.2 zwraca uwagę komponent o nazwie „Biblioteki podsystemów” poni ej
    prostokątów „Procesy usługowe” i „Aplikacje u ytkownika”. W Windows 2000 aplikacje
    u ytkownika nie wywołują wbudowanych usług systemu operacyjnego bezpośrednio.
    Zamiast tego korzystają z jednej lub więcej podsystemowych bibliotek dynamicznych
    (ang. subsystem dynamic-link libraries — DLL). Zadaniem biblioteki podsystemowej
    jest przetłumaczenie udokumentowanej funkcji na odpowiednie wywołanie wewnętrznej
    (i nieudokumentowanej) usługi systemowej Windows 2000. To tłumaczenie mo e, ale
    nie musi, być związane z wysłaniem komunikatu do procesu podsystemu środowisko-
    wego, wykorzystywanego przez aplikację.

    Do komponentów Windows 2000 działających w trybie jądra nale ą:
       Centrum wykonawcze (ang. executive) Windows 2000 zawiera podstawowe usługi
       systemu operacyjnego, jak zarządzanie pamięcią, zarządzanie procesami i wątkami,
       bezpieczeństwo, I/O oraz komunikacja międzyprocesowa.
       Jądro (ang. kernel) Windows 2000 zawiera niskopoziomowe funkcje systemu
       operacyjnego, takie jak szeregowanie wątków, obsługa przerwań i wyjątków
       oraz synchronizacja wieloprocesorowa. Zapewnia równie zestaw procedur
       i podstawowych obiektów wykorzystywanych przez centrum wykonawcze
       do implementacji konstrukcji wy szego poziomu.
       Do sterowników urządzeń (ang. device drivers) nale ą zarówno sterowniki urządzeń
       sprzętowych, tłumaczące wywołania funkcji I/O na konkretne operacje I/O zale ne
       od fizycznego urządzenia, jak i systemy plików oraz sterowniki sieciowe.
       Warstwa uniezale nienia od sprzętu (ang. hardware abstraction layer — HAL)
       jest warstwą kodu uniezale niającą jądro, sterowniki urządzeń oraz pozostałą
       część centrum wykonawczego Windows 2000 od zró nicowania warstwy
       sprzętowej (jak na przykład ró nice między płytami głównymi).
       System okien i grafiki implementuje funkcje graficznego interfejsu u ytkownika
       (lepiej znane jako funkcje podsystemów Win32 USER i GDI), związane
       z zarządzaniem oknami, kontrolkami interfejsu u ytkownika oraz rysowaniem.

    Tabela 2.1 zawiera nazwy plików podstawowych komponentów systemu operacyjnego
    Windows 2000. (Nazwy te warto znać, poniewa w ksią ce znajdują się odwołania do
    plików systemowych). Ka dy z tych komponentów jest omówiony bardziej szczegółowo
    w dalszej części tego rozdziału oraz w rozdziałach następnych.

    Jednak przed zagłębieniem się w szczegóły tych komponentów systemowych warto zbadać
    ró nice pomiędzy systemem w wersji Windows 2000 Professional, a ró nymi wersjami
    Windows 2000 Server.



Pakiety handlowe Windows 2000
    Istnieją cztery edycje systemu Windows 2000: Windows 2000 Professional, Windows
    2000 Server, Windows 2000 Advanced Server oraz Windows 2000 Datacenter Server.
    Wersje te ró nią się:
56           Rozdział 2. Architektura systemu


Tabela 2.1. Podstawowe pliki systemowe Windows 2000

 Nazwa pliku                    Komponenty
 Ntoskrnl.exe                   Centrum wykonawcze i jądro
 Ntkrnlpa.exe                   Centrum wykonawcze i jądro obsługujące rozszerzenie adresu fizycznego
                                (PAE), pozwalające na adresowanie do 64 GB pamięci fizycznej
 Hal.dll                        Warstwa uniezale nienia od sprzętu
 Win32k.sys                     Część podsystemu Win32 działająca w trybie jądra
 Ntdll.dll                      Wewnętrzne funkcje wspomagające oraz systemowe łączniki do funkcji
                                wykonawczych
 Kernel32.dll, Advapi32.dll,    Podstawowe biblioteki podsystemu Win32
 User32.dll, Gdi32.dll

                 Liczbą obsługiwanych procesorów.
                 Wielkością obsługiwanej pamięci fizycznej.
                 Liczbą obsługiwanych jednocześnie połączeń sieciowych.
                 Warstwami usługowymi, dołączanymi do edycji Server, ale nie do edycji
                 Professional.

             Ró nice te są zestawione w tabeli 2.2.

             Komponentami, które nie ró nią się pomiędzy ró nymi wersjami Windows 2000, są
             podstawowe pliki systemowe: kod jądra, Ntoskrnl.exe (oraz wersja PAE, Ntkrnlpa.exe);
             biblioteki warstwy HAL, sterowniki urządzeń oraz podstawowe narzędzia i biblioteki
             systemowe. Wszystkie te pliki są takie same dla wszystkich edycji Windows 2000.
             Na przykład nie istnieją specjalne, serwerowe wersje warstwy HAL.

             Jednak e niektóre z tych komponentów działają ró nie, w zale ności od wersji systemu,
             z którą współpracują. Systemy Windows 2000 Server są optymalizowane ze względu na
             maksymalną przepustowość, konieczną w roli wysokowydajnych serwerów aplikacyjnych,
             podczas gdy Windows 2000 Professional, mimo i posiada mo liwości serwerowe, jest
             optymalizowany ze względu na czas reakcji przy pracy z u ytkownikiem. Na przykład na
             bazie typu produktu, podczas rozruchu systemu podejmowane są ró ne decyzje doty-
             czące przydziału zasobów, takich jak liczba i rozmiar stert systemowych (lub pul), liczba
             wewnętrznych, systemowych wątków roboczych oraz rozmiar systemowej podręcznej
             pamięci danych. Równie decyzje podejmowane podczas pracy systemu, jak sposób obsługi
             pochodzących od systemu i procesów ądań dotyczących pamięci, ró nią się pomiędzy
             edycjami Windows 2000 Server i Windows 2000 Professional. Nawet pewne szczegóły
             szeregowania wątków są ró ne między tymi dwiema rodzinami systemów. Jeśli istnieją
             znaczące ró nice w działaniu pomiędzy dwiema edycjami, są one wyszczególnione
             w odpowiednich rozdziałach tej ksią ki. O ile nie zaznaczymy inaczej, wszystkie informacje
             zawarte w tej ksią ce dotyczą zarówno edycji Windows 2000 Server, jak i Windows 2000
             Professional.

             Skoro kod jądra jest identyczny we wszystkich edycjach Windows 2000, to skąd system
             „wie”, która wersja została uruchomiona? Poprzez wartości zapisane w rejestrze pod
             nazwami 2TQFWEV6[RG i 2TQFWEV5WKVG, w kluczu HKLMSYSTEMCurrentControlSet
Pakiety handlowe Windows 2000                     57


Tabela 2.2. Ró nice między wersjami Windows 2000 Professional i Server
    Edycja            Liczba                Obsługiwana        Liczba                Dodatkowe
                      obsługiwanych         pamięć             jednoczesnych,        warstwy
                      procesorów            fizyczna           klienckich            usługowe
                                                               połączeń
                                                               sieciowych
    Windows 2000      2                     4 GB               10*
    Professional
    Windows 2000      4                     4 GB               Nieograniczona        Mo liwość prowadzenia
    Server                                                                           kontrolera domeny, usługa
                                                                                     katalogowa, programowy
                                                                                     system RAID, serwer protokołu
                                                                                     dynamicznej konfiguracji
                                                                                     serwerów (ang. Dynamic Host
                                                                                     Configuration Protocol —
                                                                                     DHCP), serwer rozproszonego
                                                                                     systemu plików
                                                                                     (ang. Distributed File System
                                                                                     — DFS), usługi certyfikacyjne,
                                                                                     usługi zdalnej instalacji oraz
                                                                                     terminali
    Windows 2000      8                     8 GB               Nieograniczona        dwuwęzłowy klaster
    Advanced Server
    Windows 2000      32                    64 GB**            Nieograniczona        dwuwęzłowy klaster,
    Datacenter Server                                                                narzędzie mened era
                                                                                     kontroli procesów***
*  Ustęp w Umowie Licencyjnej u ytkownika Windows 2000 Professional (zawartej w pliku WinntSystem32 Eula.txt)
   mówi: „Licencjobiorca mo e zezwolić na połączenie ze Stacją Roboczą co najwy ej dziesięciu (10) komputerów lub
   innych urządzeń elektronicznych (ka de z nich będzie nazywane „Urządzeniem”) w celu uzyskania dostępu i korzystania
   z usług Produktu, wyłącznie takich, jak usługi plikowe i usługi drukowania, internetowe usługi informacyjne oraz
   usługi dostępu zdalnego (łącznie ze wspólnym korzystaniem z połączeń i usługami telefonicznymi)”. Ograniczenie to
   dotyczy współdzielenia pl ików i wydruków oraz dostępu zdalnego, ale nie do internetowych usług in formacyjnych
   (ang. Internet Information Services).
** Ograniczenie teoretyczne — rzeczywisty li mit mo e być mniejszy, ze względu na dostępność sprzętu.
*** Więcej informacji na temat narzędzia mened era kontroli procesów znajduje się w rozdziale 6.

             ControlProductOptions. 2TQFWEV6[RG określa, czy system jest wersją Windows 2000
             Professional, czy Windows 2000 Server (dowolnej edycji). Dopuszczalne wartości tej
             zmiennej są podane w tabeli 2.3. Rezultat jest zapisany w globalnej zmiennej systemowej
             /O2TQFWEV6[RG, dostępnej dla sterowników urządzeń dzięki funkcji trybu jądra, o nazwie
             /O+U6JKU#P0V#U5[UVGO, udokumentowanej w pakiecie Windows 2000 DDK.

Tabela 2.3. Wartości zmiennej rejestrowej ProductType
    Edycja Windows 2000                            Wartość ProductType
    Windows 2000 Professional                      9KP06
    Windows 2000 Server (kontroler domeny)         .CPOCP06
    Windows 2000 Server (tylko serwer)             5GTXGT06
58           Rozdział 2. Architektura systemu


             Inna zmienna rejestru, 2TQFWEV5WKVG, pozwala rozró nić edycje Windows 2000 Server,
             Advanced Server oraz Datacenter Server, jak równie określa, czy zainstalowano usługi
             terminalowe (w przypadku systemów Server). W systemach Windows 2000 Professional
             ta zmienna jest pusta.

             Programy u ytkownika, aby określić, na której edycji Windows 2000 są uruchomione,
             mogą skorzystać z funkcji Win32 o nazwie 8GTKH[8GTUKQP+PHQ, opisanej w dokumentacji
             pakietu Platform SDK. Sterowniki urządzeń mogą skorzystać z funkcji trybu jądra, o nazwie
             4VN)GV8GTUKQP, udokumentowanej w Windows 2000 DDK.


Wersja testowa
             Istnieje specjalna, wspomagająca wykrywanie błędów, edycja Windows 2000 Professional
             nosząca nazwę wersji testowej (ang. checked build). Wersja ta jest dostępna jedynie
             z prenumeratą biblioteki MSDN Professional (lub Universal). Jej celem jest wsparcie
             projektantów sterowników urządzeń — wersja testowa zapewnia bardziej ścisłe wychwyty-
             wanie błędów w funkcjach trybu jądra, wywoływanych przez sterowniki urządzeń i inny
             kod systemowy. Na przykład, jeśli sterownik (lub inny fragment kodu w trybie jądra)
             wykonuje błędne wywołanie funkcji, która sprawdza poprawność parametrów (jak na
             przykład ądanie URKPNQEM na niewłaściwym poziomie przerwań), system przerwie wyko-
             nywanie w momencie wykrycia błędu, nie dopuszczając do zakłócenia integralności struktur
             danych i ewentualnego, późniejszego załamania systemu.

             Wersja testowa jest efektem rekompilacji kodu źródłowego Windows 2000 z parametrem
             kompilacji &'$7) ustawionym na 647'. Wiele dodatkowego kodu w plikach powstało w re-
             zultacie zastosowania makra #55'46, zdefiniowanego w pliku nagłówkowym Ntddk.h i udo-
             kumentowanego w materiałach dostarczanych z DDK. Makro to sprawdza warunek (taki jak
             poprawność struktury danych lub parametru), a jeśli sprawdzane wyra enie ma wartość
             logiczną (#.5', makro wywołuje funkcję trybu jądra 4VN#UUGTV, która korzysta z funkcji
             &DI2TKPV celem przekazania tekstu komunikatu o błędzie do programu uruchomieniowego
             jądra (jeśli takowy jest obecny), po czym „pyta” u ytkownika co robić (przerwać, zignoro-
             wać, zakończyć proces czy zakończyć wątek). Jeśli system nie został uruchomiony z pro-
             gramem uruchomieniowym jądra (przez zastosowanie opcji '$7) w pliku Boot.ini) i aden
             taki program aktualnie nie działa, pora ka testu #55'46 powoduje załamanie systemu.

             Mimo e Microsoft nie rozpowszechnia wersji testowej systemów Windows 2000 Server,
             Advanced Server ani Datacenter Server, mo na ręcznie zastąpić kod jądra Windows 2000
             Server wersją testową i ponownie uruchomić system z testowym jądrem. (Mo na tak
             zrobić z pozostałymi plikami systemowymi, ale większość projektantów korzystających
             z testowej edycji potrzebuje jedynie rozszerzonej wersji jądra — a nie wszystkich ste-
             rowników urządzeń, narzędzi i bibliotek).

Pliki systemowe związane z maszynami wieloprocesorowymi
             Sześć spośród plików systemowych 1 jest innych w systemie wieloprocesorowym ni
             w jednoprocesorowym. (zob. tabela 2.4.) Podczas instalacji odpowiedni plik jest kopiowany
1
    W katalogu I386UNIPROC na płycie dystrybucyjnej Windows 2000 znajduje się plik o nazwie Winsrv.dll —
    mimo e ten plik znajduje się w katalogu o nazwie UNIPROC, co sugeruje, e istnieje wersja jednoprocesorowa,
    w rzeczywistości istnieje tylko jedna wersja tego pliku dla systemów jedno- i wieloprocesorowych.
Pakiety handlowe Windows 2000                 59


             do lokalnego katalogu WinntSystem32. Aby sprawdzić, które pliki zostały skopiowane,
             mo na obejrzeć zawartość pliku WinntRepairSetup.log, zawierającego nazwy wszystkich
             plików skopiowanych na lokalny dysk systemowy, wraz ze ście ką źródłową tych plików.

Tabela 2.4. Pliki systemu wieloprocesorowego kontra pliki systemu jednoprocesorowego

 Nazwa pliku         Nazwa wersji jednoprocesorowej                  Nazwa wersji wieloprocesorowej
 na dysku systemowym na płycie CD                                    na płycie CD
 Ntoskrnl.exe               I386Ntoskrnl.exe                       I386Ntkrnlmp.exe
 Ntkrnlpa.exe               Ntkrnlpa.exe w I386Driver.cab          Ntkrpamp.exe w I386Driver.cab
 Hal.dll                    Zale nie od typu systemu (lista wersji   Zale nie od typu systemu (lista wersji
                            HAL znajduje się w tabeli 2.5.)          HAL znajduje się w tabeli 2.5.)
 Win32k.sys                 I386UNIPROCWin32k.sys                 I386Win32k.sys
 Ntdll.dll                  I386UNIPROCNtdll.dll                  I386Ntdll.dll
 Kernel32.dll               I386UNIPROCKernel32.dll               I386Kernel32.dll

             Powodem istnienia jednoprocesorowych wersji tych kluczowych plików systemowych
             jest wydajność — synchronizacja wieloprocesorowa jest z natury bardziej zło ona i cza-
             sochłonna ni korzystanie z jednego procesora, tak więc specjalne, jednoprocesorowe
             wersje kluczowych plików pozwalają uniknąć tego nakładu w systemach z jednym pro-
             cesorem (które składają się na większość komputerów pracujących pod kontrolą Win-
             dows 2000).

             Interesujące jest, e podczas gdy jedno- i wieloprocesorowe wersje pliku Ntoskrnl powstały
             poprzez kompilację kodu źródłowego z odpowiednimi opcjami, to jednoprocesorowe
             wersje plików Ntdll.dll i Kernel32.dll powstały poprzez zastąpienie instrukcji .1%- oraz
             70.1%-, u ywanych w architekturze x86 do synchronizacji wątków, instrukcjami 012 (które
             nic nie robią).


              ĆWICZENIE: Obserwacja plików związanych
              z systemem wieloprocesorowym
              Pliki, których inne wersje są wymagane dla systemu wieloprocesorowego, mo na obej-
              rzeć, przeglądając szczegóły sterowników w Mened erze urządzeń:
                1. Otwórz Właściwości systemu (poprzez wybranie ikony System w Panelu
                  Sterowania lub przez naciśnięcie prawego klawisza myszy na ikonie Mój
                  Komputer na pulpicie i wybranie Właściwości).
                2. Wybierz zakładkę Sprzęt.
                3. Wybierz Mened er urządzeń.
                4. Rozwiń obiekt Komputer.
                5. Podwójnie naciśnij uchwyt poni ej pola Komputer.
                6. Wybierz zakładkę Sterownik.
                7. Naciśnij Szczegóły sterownika
60   Rozdział 2. Architektura systemu


     Pozostałe pliki systemowe składające się na Windows 2000 (włącznie z narzędziami,
     bibliotekami i sterownikami urządzeń) występują w tej samej wersji w systemach jed-
     no- i wieloprocesorowych (co oznacza, e prawidłowo współpracują z komputerami
     wieloprocesorowymi). To podejście warto stosować podczas pracy nad ka dym opro-
     gramowaniem, zarówno w Win32, jak i przy okazji projektowania sterowników — musisz
     brać pod uwagę kwestie związane z wieloprocesorowością i testować gotowe programy
     na systemach jedno- i wieloprocesorowych.

     Na płycie zawierającej wersję testową Windows 2000 porównanie plików Ntoskrnl.exe
     i Ntkrnlmp.exe lub Ntkrnlpa.exe i Ntkrpamp.exe wyka e, e są one identyczne — są to
     wieloprocesorowe wersje tych samych plików. Innymi słowy, nie istnieją jednoproceso-
     rowe wersje testowe jąder dostarczanych z wersją „checked build”.


      ĆWICZENIE: Sprawdzenie wersji uruchomionego pliku Ntoskrnl
      W przypadku Windows NT mo na sprawdzić wersję uruchomionego pliku Ntoskrnl po-
      przez naciśnięcie zakładki Wersja w programie Diagnostyka Windows NT (Winmsd.exe).
      W Windows 2000 nie ma narzędzia pozwalającego uzyskać tę informację. Jednak e
      podczas ka dego rozruchu systemu dokonywany jest wpis do Dziennika zdarzeń, zapisu-
      jący typ jądra (jedno- lub wieloprocesorowe oraz zwykłe lub testowe). Jest to zilustro-
      wane na rysunku poni ej. (Z menu Start wybierz Programy/Narzędzia administracyjne/
      Podgląd zdarzeń, wybierz Dziennik systemu, a następnie podwójnie naciśnij wpis Dzien-
      nika o identyfikatorze 6009, oznaczającym, e wpisu dokonano przy rozruchu systemu).




      Ten zapis w Dzienniku nie określa, czy uruchomiono wersję jądra zapewniającą PAE
      — mo liwość obsługi pamięci fizycznej większej ni 4 GB (Ntkrnlpa.exe). Jednak
      ta informacja znajduje się rejestrze, w zmiennej o nazwie HKLMSYSTEM Current-
      ControlSetControlSystemStartOptions. W przypadku uruchomienia jądra PAE, zmienna
      HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management
      PhysicalAddressExtension otrzymuje wartość 1.
Kluczowe komponenty systemu             61



     Mo na równie określić, czy uruchomiono wieloprocesorową wersję Ntoskrnl (lub
     Ntkrnlpa). W tym celu trzeba sprawdzić właściwości plików: uruchom Windows
     Explorera, prawym klawiszem myszy naciśnij na pliku Ntoskrnl.exe w katalogu Winnt
     System32, po czym wybierz Właściwości. Następnie naciśnij zakładkę Wersja i wybierz
     Oryginalna nazwa pliku — w przypadku wersji jednoprocesorowej uka e się okno
     dialogowe jak na poni szym rysunku.




     Wreszcie, jak wspomniano wcześniej, mo na sprawdzić, które wersje jądra i warstwy
     HAL zostały wybrane na etapie instalacji. Sprawdzisz to poprzez obejrzenie zawartości
     pliku WinntRepairSetup.log.



Kluczowe komponenty systemu
    Po omówieniu wysokopoziomowej architektury Windows 2000 pora zagłębić się w we-
    wnętrzną strukturę i zadania realizowane przez poszczególne, kluczowe komponenty syste-
    mu. Rysunek 2.3 jest bardziej szczegółową i kompletną wersją diagramu komponentów
    i architektury Windows 2000 zamieszczonego wcześniej (na rysunku 2.2).

    Poni sze podrozdziały prezentują większe elementy tego diagramu. W rozdziale 3. wyja-
    śniamy główne mechanizmy kontrolne systemu (jak mened er obiektów, przerwania, itd.).
    W rozdziale 4. przedstawiamy proces rozruchu i zamykania Windows 2000, natomiast
    rozdział 5. zawiera szczegóły mechanizmów zarządzających, takich jak rejestr, procesy
    usługowe oraz instrumentacje zarządzania Windows (ang. Windows Management
    Instrumentation — WMI). Kolejne rozdziały pokazują jeszcze bardziej szczegółowo
    wewnętrzną strukturę i działanie kluczowych mechanizmów, takich jak procesy i wątki,
    zarządzanie pamięcią, bezpieczeństwo, zarządzanie urządzeniami I/O, zarządzanie pamięcią
    masową, zarządzanie pamięcią podręczną, system plików Windows 2000 (NTFS) oraz
    usługi sieciowe.
62           Rozdział 2. Architektura systemu




Rysunek 2.3. Architektura Windows 2000


Podsystemy środowiskowe i biblioteki podsystemów
             Windows 2000 posiada trzy podsystemy środowiskowe: OS/2, POSIX oraz Win32 (ilu-
             struje to rysunek 2.3). Jak się zaraz oka e, spośród tych trzech Win32 jest podsystemem
             wyjątkowym, poniewa Windows 2000 nie mo e bez niego działać. (Obsługuje on klawia-
             turę, mysz oraz ekran, i musi być obecny nawet w systemach serwerowych pozbawionych
             mo liwości interaktywnej pracy z u ytkownikiem). Dwa pozostałe podsystemy są skonfi-
             gurowane tak, e uruchamiają się na ądanie, podczas gdy Win32 musi działać zawsze.

             Informacja o rozruchu podsystemów znajduje się w kluczu rejestru o nazwie HKLM
             SYSTEMCurrentControlSetControlSession ManagerSubSystems. Rysunek 2.4 ilustruje
             wartości w tym kluczu.

             Pole 4GSWKTGF zawiera podsystemy ładowane podczas rozruchu systemu. Zmienna ta
             zawiera dwa ciągi znaków: 9KPFQYU oraz GDWI. Pole 9KPFQYU zawiera specyfikację pliku
             podsystemu Win32, Csrss.exe (skrót pochodzi od Client/Server Run-Time Subsystem)2.

2
    Nota historyczna: powód, dla którego proces podsystemu Win32 nosi nazwę Csrss.exe, pochodzi z czasów
    początkowego projektu Windows NT, gdzie wszystkie podsystemy miały działać jako wątki pojedynczego,
    ogólnego procesu podsystemów środowiskowych. Gdy podsystemy POSIX i OS/2 umieszczono we własnych
    procesach, nazwa procesu podsystemu Win32 pozostała bez zmian.
Kluczowe komponenty systemu          63




Rysunek 2.4. Edytor rejestru pokazujący informację o rozruchu Windows 2000

          Pole GDWI jest puste (słu y do wewnętrznego testowania) i nie ma adnych efektów.
          Wartość 1RVKQPCN oznacza, e podsystemy OS/2 i POSIX będą uruchamiane na ądanie.
          Zmienna rejestrowa -OQFG zawiera nazwę pliku części podsystemu Win32 trybu jądra,
          Win32k.sys (omawianego w dalszej części rozdziału).

          Zadaniem podsystemu środowiskowego jest zapewnienie dostępu do pewnego zbioru pod-
          stawowych usług systemowych Windows 2000 dla aplikacji. Ka dy podsystem zapewnia
          dostęp do innego zestawu wewnętrznych usług Windows 2000. Oznacza to, e pewnych
          rzeczy, których mo na dokonać w aplikacji zbudowanej z wykorzystaniem jednego z pod-
          systemów, nie mo na zrealizować w aplikacji powstałej dla innego podsystemu. Na przy-
          kład aplikacje Win32 nie mogą korzystać z funkcji HQTM, nale ącej do podsystemu POSIX.

          Ka dy plik wykonywalny (.exe) jest przypisany do jednego i tylko jednego podsystemu.
          W momencie uruchomienia pliku kod tworzący proces analizuje typ podsystemu zapisany
          w nagłówku pliku, dzięki czemu mo e powiadomić odpowiedni podsystem. Ten znacznik
          typu jest określany poprzez opcję 57$5;56'/ polecenia NKPM w pakiecie Microsoft Visual
          C++ i mo e być sprawdzony za pomocą narzędzia Exetype z Windows 2000 Resource Kit.

          Wywołania funkcji nie mogą mieszać podsystemów. Innymi słowy, aplikacja POSIX mo e
          wywoływać jedynie usługi udostępniane przez podsystem POSIX, a aplikacja Win32 mo e
          korzystać jedynie z usług udostępnianych przez podsystem Win32. Jak się oka e, ogra-
          niczenie to jest powodem, dla którego podsystem POSIX, implementujący bardzo ogra-
          niczony zestaw funkcji (tylko POSIX 1003.1), nie jest przydatnym środowiskiem do
          przenoszenia aplikacji z systemów Uniks.

          Jak ju wspomniano, aplikacje u ytkownika nie wywołują usług systemowych Windows
          2000 bezpośrednio. Zamiast tego korzystają z jednej lub więcej bibliotek podsystemów.
          Biblioteki te oferują udokumentowany interfejs, dostępny dla programów korzystają-
          cych z tych bibliotek. Na przykład biblioteki podsystemu Win32 (jak Kernel32.dll,
          Advapi32.dll, User32.dll oraz Gdi32.dll) implementują funkcje Win32 API. Biblioteka
          podsystemu POSIX implementuje interfejs programowy POSIX 1003.1.

          Gdy aplikacja wywołuje funkcję z biblioteki podsystemu, mo liwe są trzy rzeczy:
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka
MS Windows 2000 od środka

Contenu connexe

Tendances

Rozbudowa i naprawa systemu Windows
Rozbudowa i naprawa systemu WindowsRozbudowa i naprawa systemu Windows
Rozbudowa i naprawa systemu Windows
Wydawnictwo Helion
 
Windows Vista PL. Ilustrowany przewodnik
Windows Vista PL. Ilustrowany przewodnikWindows Vista PL. Ilustrowany przewodnik
Windows Vista PL. Ilustrowany przewodnik
Wydawnictwo Helion
 
ABC komputera. Wydanie V
ABC komputera. Wydanie VABC komputera. Wydanie V
ABC komputera. Wydanie V
Wydawnictwo Helion
 
ASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązaniaASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązania
Wydawnictwo Helion
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
Wydawnictwo Helion
 
Windows Vista PL. Biblia
Windows Vista PL. BibliaWindows Vista PL. Biblia
Windows Vista PL. Biblia
Wydawnictwo Helion
 
Windows XP PL. Ilustrowany przewodnik
Windows XP PL. Ilustrowany przewodnikWindows XP PL. Ilustrowany przewodnik
Windows XP PL. Ilustrowany przewodnik
Wydawnictwo Helion
 
Hacking. Sztuka penetracji. Wydanie II
Hacking. Sztuka penetracji. Wydanie IIHacking. Sztuka penetracji. Wydanie II
Hacking. Sztuka penetracji. Wydanie II
Wydawnictwo Helion
 
Profesjonalne programowanie. Część 1. Zrozumieć komputer
Profesjonalne programowanie. Część 1. Zrozumieć komputerProfesjonalne programowanie. Część 1. Zrozumieć komputer
Profesjonalne programowanie. Część 1. Zrozumieć komputer
Wydawnictwo Helion
 

Tendances (10)

Rozbudowa i naprawa systemu Windows
Rozbudowa i naprawa systemu WindowsRozbudowa i naprawa systemu Windows
Rozbudowa i naprawa systemu Windows
 
Windows Vista PL. Ilustrowany przewodnik
Windows Vista PL. Ilustrowany przewodnikWindows Vista PL. Ilustrowany przewodnik
Windows Vista PL. Ilustrowany przewodnik
 
ABC komputera. Wydanie V
ABC komputera. Wydanie VABC komputera. Wydanie V
ABC komputera. Wydanie V
 
ASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązaniaASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązania
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
 
Windows Vista PL. Biblia
Windows Vista PL. BibliaWindows Vista PL. Biblia
Windows Vista PL. Biblia
 
Windows XP PL. Ilustrowany przewodnik
Windows XP PL. Ilustrowany przewodnikWindows XP PL. Ilustrowany przewodnik
Windows XP PL. Ilustrowany przewodnik
 
Hacking. Sztuka penetracji. Wydanie II
Hacking. Sztuka penetracji. Wydanie IIHacking. Sztuka penetracji. Wydanie II
Hacking. Sztuka penetracji. Wydanie II
 
Profesjonalne programowanie. Część 1. Zrozumieć komputer
Profesjonalne programowanie. Część 1. Zrozumieć komputerProfesjonalne programowanie. Część 1. Zrozumieć komputer
Profesjonalne programowanie. Część 1. Zrozumieć komputer
 
Windows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWindows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratora
 

En vedette

Drama jako metoda nauczania i uczenia się
Drama jako metoda nauczania i uczenia sięDrama jako metoda nauczania i uczenia się
Drama jako metoda nauczania i uczenia się
Glana54321
 
Przykładowa prezentacja blok cywilny fragment
Przykładowa prezentacja blok cywilny fragmentPrzykładowa prezentacja blok cywilny fragment
Przykładowa prezentacja blok cywilny fragment
beck_aplikacje
 
Dysk google
Dysk googleDysk google
Dysk google
werjel07
 
Statystyka Po Ludzku
Statystyka Po LudzkuStatystyka Po Ludzku
Statystyka Po Ludzku
freeebook
 
Reakcje utleniania-i-redukcji-jako-szczególny-przypadek-reakcji (1)
Reakcje utleniania-i-redukcji-jako-szczególny-przypadek-reakcji (1)Reakcje utleniania-i-redukcji-jako-szczególny-przypadek-reakcji (1)
Reakcje utleniania-i-redukcji-jako-szczególny-przypadek-reakcji (1)
lastowska
 
Efekty ekonomiczne wprowadzenia SZJ
Efekty ekonomiczne wprowadzenia SZJEfekty ekonomiczne wprowadzenia SZJ
Efekty ekonomiczne wprowadzenia SZJ
Misio Pi
 
Zarządzanie przedsiębiorstwem turystycznym cz. II
Zarządzanie przedsiębiorstwem turystycznym cz. IIZarządzanie przedsiębiorstwem turystycznym cz. II
Zarządzanie przedsiębiorstwem turystycznym cz. II
Magdalena Kachniewska
 

En vedette (17)

Drama jako metoda nauczania i uczenia się
Drama jako metoda nauczania i uczenia sięDrama jako metoda nauczania i uczenia się
Drama jako metoda nauczania i uczenia się
 
Przykładowa prezentacja blok cywilny fragment
Przykładowa prezentacja blok cywilny fragmentPrzykładowa prezentacja blok cywilny fragment
Przykładowa prezentacja blok cywilny fragment
 
Typescript - Object Oriented Approach in JS
Typescript - Object Oriented Approach in JSTypescript - Object Oriented Approach in JS
Typescript - Object Oriented Approach in JS
 
Biblioteka Główna Uniwersytetu Ekonomicznego we Wrocławiu – kierunek nowoczes...
Biblioteka Główna Uniwersytetu Ekonomicznego we Wrocławiu – kierunek nowoczes...Biblioteka Główna Uniwersytetu Ekonomicznego we Wrocławiu – kierunek nowoczes...
Biblioteka Główna Uniwersytetu Ekonomicznego we Wrocławiu – kierunek nowoczes...
 
10 lat w ue bilans (1)
10 lat w ue   bilans (1)10 lat w ue   bilans (1)
10 lat w ue bilans (1)
 
Dysk google
Dysk googleDysk google
Dysk google
 
Obsługa platform xStation i MetaTrader
Obsługa platform xStation i MetaTraderObsługa platform xStation i MetaTrader
Obsługa platform xStation i MetaTrader
 
1 Stosowanie przepisów BHP, ochrony p. poż, ochrony zdrowia oraz udzielanie p...
1 Stosowanie przepisów BHP, ochrony p. poż, ochrony zdrowia oraz udzielanie p...1 Stosowanie przepisów BHP, ochrony p. poż, ochrony zdrowia oraz udzielanie p...
1 Stosowanie przepisów BHP, ochrony p. poż, ochrony zdrowia oraz udzielanie p...
 
Statystyka Po Ludzku
Statystyka Po LudzkuStatystyka Po Ludzku
Statystyka Po Ludzku
 
Sp rp władza ustawodawcza
Sp rp   władza ustawodawczaSp rp   władza ustawodawcza
Sp rp władza ustawodawcza
 
Jak wietrzyć pomieszczenia mieszkalne
Jak wietrzyć pomieszczenia mieszkalneJak wietrzyć pomieszczenia mieszkalne
Jak wietrzyć pomieszczenia mieszkalne
 
Reakcje utleniania-i-redukcji-jako-szczególny-przypadek-reakcji (1)
Reakcje utleniania-i-redukcji-jako-szczególny-przypadek-reakcji (1)Reakcje utleniania-i-redukcji-jako-szczególny-przypadek-reakcji (1)
Reakcje utleniania-i-redukcji-jako-szczególny-przypadek-reakcji (1)
 
Edukacja właczajaca
Edukacja właczajacaEdukacja właczajaca
Edukacja właczajaca
 
Efekty ekonomiczne wprowadzenia SZJ
Efekty ekonomiczne wprowadzenia SZJEfekty ekonomiczne wprowadzenia SZJ
Efekty ekonomiczne wprowadzenia SZJ
 
Zintegrowany system gospodarki odpadami
Zintegrowany system gospodarki odpadamiZintegrowany system gospodarki odpadami
Zintegrowany system gospodarki odpadami
 
Zarządzanie przedsiębiorstwem turystycznym cz. II
Zarządzanie przedsiębiorstwem turystycznym cz. IIZarządzanie przedsiębiorstwem turystycznym cz. II
Zarządzanie przedsiębiorstwem turystycznym cz. II
 
Metodologia badań
Metodologia badańMetodologia badań
Metodologia badań
 

Similaire à MS Windows 2000 od środka

Windows XP. Komendy i polecenia. Praktyczne przykłady
Windows XP. Komendy i polecenia. Praktyczne przykładyWindows XP. Komendy i polecenia. Praktyczne przykłady
Windows XP. Komendy i polecenia. Praktyczne przykłady
Wydawnictwo Helion
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery Windows
Wydawnictwo Helion
 
Mandrake Linux
Mandrake LinuxMandrake Linux
Mandrake Linux
Wydawnictwo Helion
 
Windows XP PL. Kurs
Windows XP PL. KursWindows XP PL. Kurs
Windows XP PL. Kurs
Wydawnictwo Helion
 
Linux dla programistów i użytkowników
Linux dla programistów i użytkownikówLinux dla programistów i użytkowników
Linux dla programistów i użytkowników
Wydawnictwo Helion
 
100 sposobów na Windows XP PL
100 sposobów na Windows XP PL100 sposobów na Windows XP PL
100 sposobów na Windows XP PL
Wydawnictwo Helion
 
Windows XP Pro. Nieoficjalny podręcznik
Windows XP Pro. Nieoficjalny podręcznikWindows XP Pro. Nieoficjalny podręcznik
Windows XP Pro. Nieoficjalny podręcznik
Wydawnictwo Helion
 
.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice
Wydawnictwo Helion
 
Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++
Wydawnictwo Helion
 
Linux. Najlepsze przepisy. Wydanie II
Linux. Najlepsze przepisy. Wydanie IILinux. Najlepsze przepisy. Wydanie II
Linux. Najlepsze przepisy. Wydanie II
Wydawnictwo Helion
 
The Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polskaThe Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polska
Wydawnictwo Helion
 
Asembler. Podręcznik programisty
Asembler. Podręcznik programistyAsembler. Podręcznik programisty
Asembler. Podręcznik programisty
Wydawnictwo Helion
 
Strukturalna organizacja systemów komputerowych. Wydanie V
Strukturalna organizacja systemów komputerowych. Wydanie VStrukturalna organizacja systemów komputerowych. Wydanie V
Strukturalna organizacja systemów komputerowych. Wydanie V
Wydawnictwo Helion
 
Windows Server 2003. Wysoko wydajne rozwiązania
Windows Server 2003. Wysoko wydajne rozwiązaniaWindows Server 2003. Wysoko wydajne rozwiązania
Windows Server 2003. Wysoko wydajne rozwiązania
Wydawnictwo Helion
 
Optymalizacja systemu Windows
Optymalizacja systemu WindowsOptymalizacja systemu Windows
Optymalizacja systemu Windows
Wydawnictwo Helion
 
Win32ASM. Asembler w Windows
Win32ASM. Asembler w WindowsWin32ASM. Asembler w Windows
Win32ASM. Asembler w Windows
Wydawnictwo Helion
 
PHP. Praktyczne skrypty, które oszczędzą Twój czas
PHP. Praktyczne skrypty, które oszczędzą Twój czasPHP. Praktyczne skrypty, które oszczędzą Twój czas
PHP. Praktyczne skrypty, które oszczędzą Twój czas
Wydawnictwo Helion
 
Windows XP Home Edition. Nieoficjalny podręcznik
Windows XP Home Edition. Nieoficjalny podręcznikWindows XP Home Edition. Nieoficjalny podręcznik
Windows XP Home Edition. Nieoficjalny podręcznik
Wydawnictwo Helion
 

Similaire à MS Windows 2000 od środka (20)

Windows XP. Komendy i polecenia. Praktyczne przykłady
Windows XP. Komendy i polecenia. Praktyczne przykładyWindows XP. Komendy i polecenia. Praktyczne przykłady
Windows XP. Komendy i polecenia. Praktyczne przykłady
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery Windows
 
Mandrake Linux
Mandrake LinuxMandrake Linux
Mandrake Linux
 
Windows XP PL. Kurs
Windows XP PL. KursWindows XP PL. Kurs
Windows XP PL. Kurs
 
Linux dla programistów i użytkowników
Linux dla programistów i użytkownikówLinux dla programistów i użytkowników
Linux dla programistów i użytkowników
 
100 sposobów na Windows XP PL
100 sposobów na Windows XP PL100 sposobów na Windows XP PL
100 sposobów na Windows XP PL
 
Windows XP Pro. Nieoficjalny podręcznik
Windows XP Pro. Nieoficjalny podręcznikWindows XP Pro. Nieoficjalny podręcznik
Windows XP Pro. Nieoficjalny podręcznik
 
.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice
 
Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++
 
Linux. Najlepsze przepisy. Wydanie II
Linux. Najlepsze przepisy. Wydanie IILinux. Najlepsze przepisy. Wydanie II
Linux. Najlepsze przepisy. Wydanie II
 
The Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polskaThe Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polska
 
Linux. Komendy i polecenia
Linux. Komendy i poleceniaLinux. Komendy i polecenia
Linux. Komendy i polecenia
 
Asembler. Podręcznik programisty
Asembler. Podręcznik programistyAsembler. Podręcznik programisty
Asembler. Podręcznik programisty
 
Strukturalna organizacja systemów komputerowych. Wydanie V
Strukturalna organizacja systemów komputerowych. Wydanie VStrukturalna organizacja systemów komputerowych. Wydanie V
Strukturalna organizacja systemów komputerowych. Wydanie V
 
Windows Server 2003. Wysoko wydajne rozwiązania
Windows Server 2003. Wysoko wydajne rozwiązaniaWindows Server 2003. Wysoko wydajne rozwiązania
Windows Server 2003. Wysoko wydajne rozwiązania
 
Optymalizacja systemu Windows
Optymalizacja systemu WindowsOptymalizacja systemu Windows
Optymalizacja systemu Windows
 
Win32ASM. Asembler w Windows
Win32ASM. Asembler w WindowsWin32ASM. Asembler w Windows
Win32ASM. Asembler w Windows
 
PHP. Praktyczne skrypty, które oszczędzą Twój czas
PHP. Praktyczne skrypty, które oszczędzą Twój czasPHP. Praktyczne skrypty, które oszczędzą Twój czas
PHP. Praktyczne skrypty, które oszczędzą Twój czas
 
Windows XP PL. Księga eksperta
Windows XP PL. Księga ekspertaWindows XP PL. Księga eksperta
Windows XP PL. Księga eksperta
 
Windows XP Home Edition. Nieoficjalny podręcznik
Windows XP Home Edition. Nieoficjalny podręcznikWindows XP Home Edition. Nieoficjalny podręcznik
Windows XP Home Edition. Nieoficjalny podręcznik
 

Plus de Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
Wydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
Wydawnictwo Helion
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
Wydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Wydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
Wydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Wydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Wydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
Wydawnictwo Helion
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
Wydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
Wydawnictwo Helion
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
Wydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
Wydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
Wydawnictwo Helion
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
Wydawnictwo Helion
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
Wydawnictwo Helion
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
Wydawnictwo Helion
 

Plus de Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

MS Windows 2000 od środka

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI MS Windows 2000 od rodka KATALOG KSI¥¯EK Autorzy: David A. Solomon, Mark E. Russinovich KATALOG ONLINE ISBN: 83-7197-821-9 Tytu³ orygina³u: Inside MS Windows 2000, 3rd Edition ZAMÓW DRUKOWANY KATALOG Format: B5, stron: 784 Zawiera CD-ROM TWÓJ KOSZYK DODAJ DO KOSZYKA Ksi¹¿ka dostarczy Ci unikatowej wiedzy na temat wewnêtrznych mechanizmów dzia³ania systemu Windows 2000. Zosta³a napisana we wspó³pracy z zespo³em tworz¹cym Windows 2000, a jej autorzy mieli pe³en dostêp do kodu ród³owego CENNIK I INFORMACJE systemu. Znajdziesz tutaj informacje niedostêpne w innych ród³ach, pozwalaj¹ce pisaæ wydajniejsze aplikacje przeznaczone dla platformy Windows 2000. Z ksi¹¿ki ZAMÓW INFORMACJE skorzystaj¹ równie¿ administratorzy systemowi. Zrozumienie tajemnic mechanizmów O NOWO CIACH systemu operacyjnego u³atwi im odnalezienie ród³a problemu w przypadku awarii. Poznaj wszystkie tajemnice Windows 2000: ZAMÓW CENNIK • Podstawowe pojêcia: Win32 API, procesy, w¹tki i prace, tryb j¹dra i tryb u¿ytkownika • Architektura systemu — kluczowe komponenty CZYTELNIA • Mechanizmy systemowe: obs³uga przerwañ, mened¿er obiektów, synchronizacja, systemowe w¹tki wykonawcze FRAGMENTY KSI¥¯EK ONLINE • Proces uruchamiania i zamykania systemu • Mechanizmy zarz¹dzania, • Zarz¹dzanie procesami, w¹tkami i pracami • Zarz¹dzanie pamiêci¹ • Zagadnienia zwi¹zane z bezpieczeñstwem systemu • Podsystem wej cia-wyj cia • Zarz¹dzanie pamiêci¹ masow¹, systemy plików • Mened¿er pamiêci podrêcznej • Praca systemu Windows 2000 w sieciach lokalnych i Internecie Je li powa¿nie my lisz o tworzeniu oprogramowania dla Windows 2000 lub chcesz nim w pe³ni profesjonalnie administrowaæ, Microsoft Windows 2000. Od rodka stanowiæ Wydawnictwo Helion bêdzie wa¿n¹ pozycjê w Twojej bibliotece. Bardziej szczegó³owego opisu tego systemu ul. Chopina 6 operacyjnego nie znajdziesz w ¿adnej innej ksi¹¿ce. 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Spis treści Rys historyczny .............................................................................17 Słowo wstępne .............................................................................19 Wstęp...........................................................................................21 Rozdział 1. Zagadnienia i narzędzia ..............................................25 Fundamentalne zagadnienia i pojęcia .................................................................................... 25 Win32 API ................................................................................................................... 25 Usługi, funkcje i procedury ............................................................................................ 27 Procesy, wątki i prace.................................................................................................... 27 Pamięć wirtualna........................................................................................................... 29 Tryb jądra kontra tryb u ytkownika ................................................................................ 31 Obiekty i uchwyty ......................................................................................................... 35 Bezpieczeństwo ............................................................................................................ 36 Rejestr ......................................................................................................................... 37 Unicode........................................................................................................................ 38 Jak zajrzeć do wnętrza Windows 2000? ................................................................................ 38 Narzędzia na dołączonej płycie CD................................................................................. 40 Narzędzie Wydajność .................................................................................................... 40 Windows 2000 Support Tools ........................................................................................ 41 Windows 2000 Resource Kits......................................................................................... 41 Programy uruchomieniowe jądra .................................................................................... 41 Platform Software Development Kit (SDK)..................................................................... 44 Device Driver Kit (DDK)............................................................................................... 44 Narzędzia z witryny System Internals.............................................................................. 45 Podsumowanie ................................................................................................................... 45 Rozdział 2. Architektura systemu .................................................47 Wymagania i cele projektowe .............................................................................................. 47 Model systemu operacyjnego ............................................................................................... 49 Przenośność ................................................................................................................. 51 Symetryczne wieloprzetwarzanie .................................................................................... 52 Skalowalność................................................................................................................ 53
  • 3. 10 Spis treści Zarys architektury............................................................................................................... 54 Pakiety handlowe Windows 2000......................................................................................... 55 Wersja testowa ............................................................................................................. 58 Pliki systemowe związane z maszynami wieloprocesorowymi........................................... 58 Kluczowe komponenty systemu ........................................................................................... 61 Podsystemy środowiskowe i biblioteki podsystemów ....................................................... 62 Ntdll.dll........................................................................................................................ 72 Centrum wykonawcze ................................................................................................... 73 Jądro............................................................................................................................ 75 Warstwa uniezale nienia od sprzętu................................................................................ 77 Sterowniki urządzeń ...................................................................................................... 78 Podglądanie nieudokumentowanych interfejsów .............................................................. 80 Procesy Systemowe....................................................................................................... 84 Podsumowanie ................................................................................................................... 96 Rozdział 3. Mechanizmy systemowe..............................................97 Obsługa pułapek ................................................................................................................. 97 Obsługa przerwań ......................................................................................................... 99 Obsługa wyjątków....................................................................................................... 117 Obsługa wywołań usług systemowych .......................................................................... 124 Mened er obiektów........................................................................................................... 127 Obiekty centrum wykonawczego .................................................................................. 129 Struktura obiektu......................................................................................................... 131 Synchronizacja ................................................................................................................. 148 Synchronizacja jądra ................................................................................................... 149 Synchronizacja centrum wykonawczego........................................................................ 152 Systemowe wątki wykonawcze .......................................................................................... 158 Globalne znaczniki Windows 2000..................................................................................... 161 Lokalne wywołania procedur (LPC) ................................................................................... 164 Podsumowanie ................................................................................................................. 167 Rozdział 4. Uruchamianie i zamykanie systemu........................... 169 Proces uruchamiania ......................................................................................................... 169 Przed uruchomieniem systemu ..................................................................................... 170 Sektor startowy i Ntldr................................................................................................. 172 Inicjalizacja jądra i podsystemów wykonawczych .......................................................... 179 Smss, Csrss i Winlogon ............................................................................................... 183 Tryb awaryjny.................................................................................................................. 185 Ładowanie sterowników w trybie awaryjnym ................................................................ 186 Programy u ytkownika potrafiące obsłu yć tryb awaryjny .............................................. 187 Rejestrowanie rozruchu w trybie awaryjnym ................................................................. 188 Konsola odzyskiwania....................................................................................................... 189 Zamykanie systemu .......................................................................................................... 191 Załamanie systemu ........................................................................................................... 193 Dlaczego Windows 2000 traci stabilność? ..................................................................... 193 Niebieski ekran ........................................................................................................... 194 Pliki zrzutu awaryjnego ............................................................................................... 196 Podsumowanie ................................................................................................................. 199
  • 4. Spis treści 11 Rozdział 5. Mechanizmy zarządzania .......................................... 201 Rejestr ............................................................................................................................. 201 Typy danych stosowane w rejestrze .............................................................................. 202 Struktura logiczna rejestru............................................................................................ 203 Wewnątrz rejestru ....................................................................................................... 207 Usługi.............................................................................................................................. 219 Aplikacje usług ........................................................................................................... 219 Konta usługi ............................................................................................................... 224 Mened er kontroli usług (SCM) ................................................................................... 227 Uruchamianie usług..................................................................................................... 230 Błędy uruchomienia..................................................................................................... 233 Rozruch systemu i ostatnia prawidłowa kopia rejestru .................................................... 234 Awarie usług............................................................................................................... 236 Zakończenie działania usługi........................................................................................ 236 Współdzielone procesy usług ....................................................................................... 237 Programy zarządzania usługami (SCP).......................................................................... 240 Instrumentacja zarządzania Windows (WMI) ...................................................................... 241 Architektura WMI....................................................................................................... 242 Dostawcy ................................................................................................................... 244 Common Information Model i Managed Object Format Language ................................... 245 Przestrzeń nazw WMI ................................................................................................. 247 Skojarzenia klas .......................................................................................................... 248 Implementacja WMI.................................................................................................... 249 Bezpieczeństwo WMI.................................................................................................. 250 Podsumowanie ................................................................................................................. 250 Rozdział 6. Procesy, wątki i zadania ............................................ 251 Informacje o procesie........................................................................................................ 251 Struktury danych......................................................................................................... 251 Zmienne jądra............................................................................................................. 262 Liczniki wydajności..................................................................................................... 264 Funkcje ...................................................................................................................... 264 Narzędzia ................................................................................................................... 265 Funkcja CreateProcess ...................................................................................................... 272 Etap 1. Otwieranie pliku binarnego ............................................................................... 274 Etap 2. Tworzenie obiektu procesu centrum wykonawczego Windows 2000..................... 276 Etap 3. Tworzenie wątku początkowego oraz jego stosu i kontekstu................................ 280 Etap 4. Informowanie podsystemu Win32 o nowym procesie .......................................... 281 Etap 5. Rozpoczęcie wykonywania wątku początkowego................................................ 282 Etap 6. Inicjacja procesu w kontekście nowego procesu.................................................. 282 Informacje o wątku........................................................................................................... 283 Struktury danych......................................................................................................... 283 Zmienne jądra............................................................................................................. 292 Liczniki wydajności..................................................................................................... 292 Funkcje ...................................................................................................................... 293 Narzędzia ................................................................................................................... 293 Funkcja CreateThread ....................................................................................................... 295 Przydzielanie wątkom czasu procesora ............................................................................... 298 Omówienie przydzielania wątkom czasu procesora w Windows 2000.............................. 299 Poziomy priorytetu...................................................................................................... 302
  • 5. 12 Spis treści Funkcje API słu ące do przydzielania czasu procesora ................................................... 304 Narzędzia ................................................................................................................... 304 Priorytety czasu rzeczywistego ..................................................................................... 306 Poziomy przerwań a poziomy priorytetu........................................................................ 307 Stany wątku................................................................................................................ 307 Kwant ........................................................................................................................ 309 Struktury danych słu ące do przydzielania czasu procesora............................................. 312 Ró ne scenariusze przydzielania czasu procesora........................................................... 313 Przełączanie kontekstu................................................................................................. 316 Wątek bezczynny........................................................................................................ 316 Podwy szanie priorytetu .............................................................................................. 317 Zadanie............................................................................................................................ 327 Podsumowanie ................................................................................................................. 331 Rozdział 7. Zarządzanie pamięcią ............................................... 333 Elementy mened era pamięci............................................................................................. 334 Konfigurowanie mened era pamięci ............................................................................. 335 Badanie wykorzystania pamięci.................................................................................... 338 Usługi mened era pamięci ................................................................................................. 341 Rezerwowanie i deklarowanie stron .............................................................................. 342 Blokowanie pamięci .................................................................................................... 343 Ziarnistość alokacji...................................................................................................... 344 Pamięć współdzielona i pliki odwzorowane ................................................................... 344 Zabezpieczanie pamięci ............................................................................................... 346 Kopiowanie przy zapisie .............................................................................................. 347 Funkcje stosu.............................................................................................................. 350 Okienkowe rozszerzenia adresowania ........................................................................... 351 Systemowe pule pamięci ................................................................................................... 352 Listy asocjacyjne......................................................................................................... 359 Weryfikator sterowników............................................................................................. 360 Układ przestrzeni adresowej .............................................................................................. 365 Układ przestrzeni adresowej u ytkownika ..................................................................... 366 Układ systemowej przestrzeni adresowej....................................................................... 370 Tłumaczenie adresów........................................................................................................ 374 Tłumaczenie adresu wirtualnego................................................................................... 375 Katalogi stron ............................................................................................................. 377 Tabele stron procesu i systemu ..................................................................................... 378 Wpisy tabeli stron ....................................................................................................... 380 Bajt w obrębie strony .................................................................................................. 382 Asocjacyjny bufor translacji ......................................................................................... 382 Rozszerzenia fizycznych adresów ................................................................................. 384 Obsługa błędu stron .......................................................................................................... 386 Niewa ne wpisy tabeli stron......................................................................................... 387 Prototypowe wpisy tabeli stron..................................................................................... 387 Stronicowanie operacji wejścia-wyjścia......................................................................... 389 Błąd kolizji strony ....................................................................................................... 390 Pliki stronicowania ...................................................................................................... 391 Deskryptory adresu wirtualnego ......................................................................................... 391 Zestawy robocze............................................................................................................... 394 Polityka w zakresie stronicowania................................................................................. 395 Zarządzanie zestawami roboczymi................................................................................ 396
  • 6. Spis treści 13 Mened er zbioru równowagi i program wymiany ........................................................... 400 Systemowy zestaw roboczy ......................................................................................... 401 Baza danych numerów stron pamięci .................................................................................. 403 Dynamika list stron ..................................................................................................... 405 Program zapisu stron zmodyfikowanych ....................................................................... 409 Struktury danych numerów stron pamięci ...................................................................... 410 Obiekty sekcji................................................................................................................... 413 Podsumowanie ................................................................................................................. 419 Rozdział 8. Bezpieczeństwo ........................................................ 421 Klasy bezpieczeństwa........................................................................................................ 421 Składniki systemu zabezpieczeń......................................................................................... 423 Ochrona obiektów............................................................................................................. 426 Sprawdzanie dostępu ................................................................................................... 427 Identyfikatory bezpieczeństwa...................................................................................... 429 Znaczniki dostępu ....................................................................................................... 430 Personalizacja ............................................................................................................. 434 Znaczniki ograniczone ................................................................................................. 436 Deskryptory bezpieczeństwa i kontrola dostępu ............................................................. 437 Nadzorowanie bezpieczeństwa ........................................................................................... 444 Logowanie ....................................................................................................................... 448 Inicjacja procesu Winlogon .......................................................................................... 449 Logowanie u ytkownika .............................................................................................. 450 Podsumowanie ................................................................................................................. 453 Rozdział 9. System wejścia-wyjścia .............................................. 455 Zało enia projektowe ........................................................................................................ 455 Komponenty systemu wejścia-wyjścia ................................................................................ 456 Mened er wejścia-wyjścia............................................................................................ 459 Sterowniki urządzeń .................................................................................................... 460 Mened er PnP ............................................................................................................ 467 Mened er zasilania ...................................................................................................... 470 Struktury danych wejścia-wyjścia....................................................................................... 476 Obiekty plików ........................................................................................................... 476 Obiekty sterowników i obiekty urządzeń ....................................................................... 479 Pakiety ądań wejścia-wyjścia...................................................................................... 484 Porty ukończenia operacji wejścia-wyjścia .................................................................... 491 Ładowanie, inicjalizacja i instalacja sterownika ................................................................... 493 Wartość początkowa ................................................................................................... 493 Wyliczanie urządzeń ................................................................................................... 494 Węzły devnode ........................................................................................................... 498 Ładowanie sterownika węzłów devnode........................................................................ 499 Instalacja sterownika ................................................................................................... 501 Przetwarzanie operacji wejścia-wyjścia............................................................................... 504 Typy operacji wejścia-wyjścia...................................................................................... 504 ądanie wejścia-wyjścia do sterownika jednowarstwowego ............................................ 507 ądania wejścia-wyjścia do sterowników wielowarstwowych ......................................... 512 Działanie portu ukończenia operacji wejścia-wyjścia...................................................... 515 Synchronizacja............................................................................................................ 517 Podsumowanie ................................................................................................................. 519
  • 7. 14 Spis treści Rozdział 10. Zarządzanie pamięcią masową ................................ 521 Ewolucja pamięci masowej w systemie Windows 2000........................................................ 521 Podział na partycje............................................................................................................ 523 Podział na partycje podstawowe ................................................................................... 524 Podział na partycje dynamiczne.................................................................................... 525 Sterowniki pamięci masowej.............................................................................................. 530 Sterowniki dysku ........................................................................................................ 530 Nazwy urządzeń ......................................................................................................... 531 Zarządzanie dyskami podstawowymi ............................................................................ 532 Zarządzanie dyskami dynamicznymi............................................................................. 533 Monitorowanie wydajności dysku................................................................................. 535 Zarządzanie woluminami zło onymi z kilku partycji............................................................ 536 Woluminy łączone....................................................................................................... 537 Woluminy rozło one ................................................................................................... 537 Woluminy dublowane.................................................................................................. 538 Woluminy RAID-5...................................................................................................... 540 Operacje wejścia-wyjścia woluminu ............................................................................. 541 Przestrzeń nazw woluminów.............................................................................................. 542 Mened er montowania................................................................................................. 543 Punkty montowania..................................................................................................... 544 Montowanie woluminów.............................................................................................. 546 Podsumowanie ................................................................................................................. 550 Rozdział 11. Mened er pamięci podręcznej................................. 551 Kluczowe funkcje Mened era pamięci podręcznej systemu Windows 2000............................ 551 Pojedynczy, scentralizowany system pamięci podręcznej................................................ 552 Mened er pamięci ....................................................................................................... 552 Koherencja pamięci podręcznej .................................................................................... 553 Buforowanie bloków wirtualnych ................................................................................. 553 Buforowanie oparte na strumieniu................................................................................. 555 Obsługa odzyskiwalnego systemu plików ...................................................................... 555 Struktura pamięci podręcznej ............................................................................................. 556 Rozmiar pamięci podręcznej .............................................................................................. 558 Wirtualny rozmiar pamięci........................................................................................... 558 Fizyczny rozmiar pamięci podręcznej ........................................................................... 559 Struktury danych pamięci podręcznej ................................................................................. 562 Struktury danych pamięci podręcznej, odnoszące się do całego systemu........................... 563 Struktury danych pamięci podręcznej odnoszące się do pliku .......................................... 563 Działanie pamięci podręcznej............................................................................................. 567 Buforowanie z opóźnionym zapisem i powolny zapis ..................................................... 567 Inteligentny odczyt z wyprzedzeniem............................................................................ 570 Wątki systemowe ........................................................................................................ 572 Szybkie operacje wejścia-wyjścia ................................................................................. 572 Procedury obsługujące pamięć podręczną ........................................................................... 574 Kopiowanie do (i z) pamięci podręcznej........................................................................ 575 Buforowanie z interfejsami mapowania i spinania .......................................................... 576 Buforowanie z interfejsami bezpośredniego dostępu do pamięci ...................................... 578 Zdławianie zapisu........................................................................................................ 579 Podsumowanie ................................................................................................................. 581
  • 8. Spis treści 15 Rozdział 12. Systemy plików ....................................................... 583 Formaty systemów plików Windows 2000 .......................................................................... 584 CDFS......................................................................................................................... 584 UDF .......................................................................................................................... 584 FAT12, FAT16 i FAT32.............................................................................................. 585 NTFS......................................................................................................................... 587 Architektura sterownika systemu plików ............................................................................. 588 Lokalne sterowniki FSD .............................................................................................. 589 Zdalne sterowniki FSD ................................................................................................ 590 Działanie systemu plików ............................................................................................ 591 Zadania i cechy projektu systemu NTFS ............................................................................. 597 Wymagania systemu plików klasy wy szej.................................................................... 597 Zaawansowane cechy systemu NTFS............................................................................ 599 Sterownik systemu plików NTFS ....................................................................................... 609 Struktura dyskowa systemu plików NTFS........................................................................... 611 Woluminy .................................................................................................................. 611 Klastry ....................................................................................................................... 612 Tablica MFT (Master File Table).................................................................................. 612 Liczby odniesień plików .............................................................................................. 618 Rekordy plików........................................................................................................... 618 Nazwy plików............................................................................................................. 620 Atrybuty rezydentne i nierezydentne ............................................................................. 622 Indeksowanie.............................................................................................................. 625 Kompresja danych i pliki rozrzedzone........................................................................... 627 Punkty reparsowe........................................................................................................ 631 Plik dziennika zmian ................................................................................................... 631 Identyfikatory obiektów ............................................................................................... 632 Śledzenie udziałów...................................................................................................... 633 Zabezpieczenia połączone ............................................................................................ 633 Obsługa odzyskiwania w systemie NTFS............................................................................ 633 Ewolucja projektu systemu plików................................................................................ 634 Rejestracja.................................................................................................................. 637 Odzyskiwanie ............................................................................................................. 642 Odzyskiwanie uszkodzonych klastrów w systemie NTFS ..................................................... 646 System szyfrowania plików ............................................................................................... 650 Rejestrowanie wywołań zwrotnych ............................................................................... 652 Szyfrowanie pliku po raz pierwszy................................................................................ 653 Proces odszyfrowania .................................................................................................. 658 Tworzenie kopii zapasowych plików zaszyfrowanych .................................................... 659 Podsumowanie ................................................................................................................. 660 Rozdział 13. Praca w sieci ........................................................... 661 Wzorcowy model systemów otwartych (OSI)...................................................................... 661 Warstwy OSI.............................................................................................................. 662 Komponenty Windows 2000 do pracy w sieci................................................................ 663 Funkcje API do pracy w sieci............................................................................................. 665 Nazwane potoki i funkcje mailslot ................................................................................ 665 Windows Sockets........................................................................................................ 671 Zdalne wywołanie procedury........................................................................................ 675
  • 9. 16 Spis treści Wspólny system plików internetowych (CIFS)............................................................... 679 NetBIOS .................................................................................................................... 683 Inne funkcje API do pracy w sieci................................................................................. 686 Określanie nazw zasobów sieciowych................................................................................. 688 Ruter MPR................................................................................................................. 689 Sterownik MUP .......................................................................................................... 691 System nazw domen (DNS) ......................................................................................... 692 Sterowniki protokołu......................................................................................................... 693 Sterowniki NDIS .............................................................................................................. 696 Odmiany miniportu NDIS ............................................................................................ 700 Specyfikacja NDIS zorientowana na połączenie ............................................................. 700 Powiązanie....................................................................................................................... 703 Usługi sieciowe ................................................................................................................ 704 Dostęp zdalny ............................................................................................................. 705 Active Directory.......................................................................................................... 705 Network Load Balancing ............................................................................................. 706 Usługa File Replication................................................................................................ 707 Rozproszony system plików ......................................................................................... 708 Rozszerzenia TCP/IP................................................................................................... 709 Podsumowanie ................................................................................................................. 711 Słownik....................................................................................... 713 Skorowidz................................................................................... 751
  • 10. 2 Architektura systemu Po omówieniu pojęć, zagadnień i narzędzi, których znajomość jest konieczna, pora przejść do zało eń projektowych i struktury systemu Microsoft Windows 2000 (dawniej Windows NT). Ten rozdział prezentuje ogólną architekturę systemu — kluczowe komponenty, ich współpracę i kontekst, w jakim działają. Aby zbudować podstawy do zrozumienia we- wnętrznej struktury Windows 2000, musimy omówić zało enia i cele projektowe, które określono przy tworzeniu pierwszego projektu i specyfikacji systemu. Wymagania i cele projektowe Poni sze wymagania nadały kierunek specyfikacji systemu Windows NT w 1989 r.: Stworzyć w pełni 32-bitowy, wielodostępny system operacyjny, zapewniający wielowątkowość z wywłaszczeniem i pamięć wirtualną. Obsługiwać wiele platform i architektur sprzętowych. Zapewnić obsługę i skalowalność symetrycznych systemów wieloprzetwarzania. Stworzyć platformę przetwarzania rozproszonego, funkcjonującą zarówno jako klient, jak i jako serwer. Umo liwić uruchomienie większości istniejących 16-bitowych aplikacji dla MS-DOS oraz Microsoft Windows 3.1. Spełnić rządowe wymagania zgodności ze standardem POSIX 1003.1. Spełnić rządowe i przemysłowe wymagania dotyczące bezpieczeństwa systemu komputerowego. Zapewnić mo liwość adaptacji do warunków rynku międzynarodowego poprzez obsługę standardu Unicode.
  • 11. 48 Rozdział 2. Architektura systemu Zespół projektowy Windows NT uznał, e ka da decyzja dotycząca systemu musi bazować na przyjętych celach projektowych. Są to: Rozszerzalność. Kod musi być napisany w sposób umo liwiający wygodny rozwój, postępujący za zmieniającymi się wymaganiami rynku. Przenośność. System musi obsługiwać wiele platform sprzętowych. Musi tak e istnieć mo liwość relatywnie łatwego przenoszenia go na nowe platformy, zgodnie z trendami rynkowymi. Niezawodność i stabilność. System powinien być odporny zarówno na wewnętrzne awarie, jak i na zagro enia zewnętrzne. Aplikacje nie mogą mieć mo liwości zagro enia systemowi operacyjnemu ani innym aplikacjom. Zgodność. Mimo ze Windows NT ma rozszerzać istniejące technologie, interfejs u ytkownika oraz API powinien być zgodny ze starszymi wersjami Windows oraz z MS-DOS. Windows NT powinien równie dobrze współpracować z innymi systemami, takimi jak Unix, OS/2 czy NetWare. Wydajność. W ramach pozostałych zało eń projektowych system powinien zapewniać wydajność i czas reakcji na najwy szym, mo liwym na danej platformie sprzętowej, poziomie. W miarę zagłębiania się w tajniki wewnętrznej struktury i działania Windows 2000 oka e się, w jaki sposób te początkowe zało enia i wymagania rynkowe zostały z powodzeniem wplecione w konstrukcję systemu. Ale przed dokładną analizą omówimy ogólny model projektowy Windows 2000 oraz jego podobieństwa i ró nice z innymi współczesnymi systemami operacyjnymi. Windows 2000 kontra Consumer Windows Windows 2000 oraz Consumer Windows (Windows 95, Windows 98 i Windows Mille- nium Edition) wchodzą w skład „rodziny systemów operacyjnych Windows”. Rodzina ta posiada wspólny interfejs programowy (Win32 oraz COM), a tak e, w niektórych przypadkach, wspólny kod. Windows 2000, Windows 98 i Windows Millenium Edition korzystają równie ze wspólnego modelu sterowników urządzeń o nazwie Windows Driver Model (WDM). Model ten zostanie bardziej szczegółowo omówiony w rozdziale 9. Od momentu rozpoczęcia prac nad Windows NT Microsoft jasno określał ten system jako strategiczną platformę przyszłości — nie tylko dla serwerów i komputerów w przedsiębiorstwach, ale tak e docelowo dla komputerów domowych. Poni sza lista wymienia pewne ró nice w architekturze oraz zalety Windows 2000 względem Con- sumer Windows: Windows 2000 obsługuje systemy wieloprocesorowe — Consumer Windows nie. System plików Windows 2000 zapewnia bezpieczeństwo (poprzez na przykład uznaniową kontrolę dostępu). Nie mo na tego powiedzieć o systemie plików wykorzystywanym w Consumer Windows. Windows 2000 jest w pełni 32-bitowym systemem operacyjnym — nie zawiera kodu 16-bitowego, poza fragmentami kodu wspierającymi uruchamianie 16-bitowych aplikacji Windows. Systemy Consumer Windows zawierają du ą ilość 16-bitowego kodu odziedziczonego po przodkach: Windows 3.1 i MS-DOS.
  • 12. Model systemu operacyjnego 49 System Windows 2000 jest w pełni wielodostępny — czego nie mo na powiedzieć o znaczącej części Consumer Windows (chodzi tu głównie o 16-bitowy kod odziedziczony po Windows 3.1). Ten nie wielodostępny kod to większość funkcji związanych z grafiką i systemem zarządzania interfejsem u ytkownika (GDI oraz USER). W momencie, gdy aplikacja 32-bitowa uruchomiona w Consumer Windows próbuje wywołać funkcję systemową zaimplementowaną poprzez nie wielodostępny kod 16-bitowy, musi najpierw dokonać ogólnosystemowej blokady (nazywanej mutexem), aby nie dopuścić innych wątków do tego kodu. Co gorsza, aplikacja 16-bitowa utrzymuje tę blokadę podczas pracy. W rezultacie, mimo e jądro Consumer Windows zawiera 32-bitowy mechanizm szeregowania zadań z wywłaszczeniem, aplikacje często wykonywane są jednowątkowo, poniewa większość systemu jest zaimplementowana w postaci nie wielodostępnego kodu. Windows 2000 zapewnia mo liwość uruchomienia 16-bitowych aplikacji Windows w ich własnej przestrzeni adresowej — systemy Consumer Windows zawsze uruchamiają 16-bitowe aplikacje we wspólnej przestrzeni adresowej, przez co mogą one przeszkadzać sobie (i zawieszać się) nawzajem. Wspólna przestrzeń adresowa w Windows 2000 jest widoczna jedynie dla procesów, które korzystają z tego samego segmentu pamięci współdzielonej. (W Win32 API segment pamięci współdzielonej nazywa się obiektem odwzorowania pliku — ang. file mapping object). W systemach Consumer Windows dostęp i zapisywanie w pamięci współdzielonej są mo liwe dla wszystkich procesów. Tak więc ka dy proces mo e wykonać zapis do obiektu odwzorowania pliku. Systemy Consumer Windows posiadają równie krytyczne dla systemu strony pamięci, których modyfikacja jest mo liwa w trybie u ytkownika. Dzięki temu aplikacja u ytkownika jest w stanie doprowadzić do zakłócenia lub załamania pracy systemu. Jedyną rzeczą mo liwą w systemach Consumer Windows, która nigdy nie będzie mo liwa w Windows 2000, jest zdolność uruchamiania wszystkich starszych aplikacji dla MS-DOS i Windows 3.1 (zwłaszcza aplikacji wymagających bezpośredniego do- stępu do sprzętu) oraz 16-bitowych sterowników urządzeń dla MS-DOS-a. Podczas gdy stuprocentowa zgodność z systemami MS-DOS i Windows 3.1 była nadrzędnym zało- eniem w Windows 95, zało eniem w przypadku Windows NT była mo liwość uru- chomienia większości istniejących aplikacji 16-bitowych, przy zachowaniu spójności i niezawodności systemu. Model systemu operacyjnego W większości wielodostępnych systemów operacyjnych aplikacje są oddzielone od samego systemu — kod systemu operacyjnego jest wykonywany w uprzywilejowanym trybie procesora (w tej ksią ce określanym jako tryb jądra), z dostępem do danych systemo- wych oraz sprzętu. Kod aplikacji jest wykonywany w pozbawionym przywilejów trybie procesora (zwanym trybem u ytkownika), z ograniczonym dostępem do interfejsów, danych systemowych oraz bez bezpośredniego dostępu do sprzętu. Gdy program w trybie
  • 13. 50 Rozdział 2. Architektura systemu u ytkownika wywołuje usługę systemową, procesor przechwytuje to wywołanie i prze- łącza wywołujący wątek w tryb jądra. Gdy wykonanie usługi systemowej kończy się, system operacyjny przełącza kontekst wątku z powrotem do trybu u ytkownika i konty- nuuje wykonanie aplikacji. Windows 2000 jest podobny do większości systemów uniksowych w tym sensie, e jest systemem monolitycznym — większość kodu systemu operacyjnego i sterowników urzą- dzeń współdzieli tę samą, chronioną przestrzeń adresową trybu jądra. Oznacza to, e ka dy komponent systemu lub sterownik urządzenia mo e potencjalnie zakłócić inte- gralność danych wykorzystywanych przez inne komponenty systemu. Wszystkie te komponenty systemu operacyjnego są oczywiście w pełni chronione przed działaniem błędnych aplikacji, poniewa aplikacje nie mają bezpośredniego dostępu do kodu i danych uprzywilejowanej części systemu operacyjnego (mimo e mogą wywo- ływać inne usługi jądra). Ta ochrona jest powodem, dla którego Windows 2000 ma repu- tację systemu niezawodnego i stabilnego, zarówno w roli serwera aplikacji, jak i stacji roboczej. Ma reputację jednak szybkiego i sprawnego z punktu widzenia podstawowych usług systemu operacyjnego, jak zarządzanie pamięcią wirtualną, dostęp do plików, obsługa sieci oraz współdzielenie drukarek i plików. Czy Windows 2000 jest systemem z mikrojądrem? Mimo e niektórzy twierdzą inaczej, Windows 2000 nie jest systemem operacyjnym z mikrojądrem w klasycznym sensie tego określenia, oznaczającego system, w którym główne komponenty (jak zarządzanie pamięcią, procesami czy zasobami wejścia- -wyjścia) są osobnymi procesami — ka dy w prywatnej przestrzeni adresowej — opar- tymi na prostym zestawie usług zapewnianych przez mikrojądro. Na przykład system operacyjny Mach, opracowany laboratoriach Carnegie Mellon University, będący współczesnym przykładem architektury z mikrojądrem, zawiera minimalnej wielkości jądro, zapewniające szeregowanie procesów, przekazywanie komunikatów, pamięć wirtualną oraz sterowniki urządzeń. Pozostałe komponenty, włącznie z ró nymi inter- fejsami programowymi, systemami plików i obsługą sieci, funkcjonują w trybie u ytkownika. Jednak e komercyjne implementacje systemu z mikrojądrem Mach z re- guły zezwalają na wykonanie w trybie jądra przynajmniej komponentów obsługują- cych system plików, sieci oraz zarządzanie pamięcią. Powód jest prosty: klasyczna architektura oparta na mikrojądrze jest niepraktyczna ze względów komercyjnych z powodu zbyt małej wydajności. Czy fakt, e tak wiele komponentów Windows 2000 działa w trybie jądra, oznacza, e system ten jest bardziej podatny na awarie ni system z prawdziwym mikrojądrem? Ale skąd. Mo na rozwa yć następujący scenariusz: załó my, e kod obsługujący system pli- ków zawiera błąd, sporadycznie powodujący awarię. W tradycyjnym systemie operacyj- nym lub zmodyfikowanym systemie z mikrojądrem błąd w kodzie trybu jądra, takim jak procedury mened era pamięci lub systemu plików, prawdopodobnie spowoduje załama- nie całego systemu. W klasycznym systemie operacyjnym z mikrojądrem takie kompo- nenty działają w trybie u ytkownika, tak więc teoretycznie błąd oznacza zakończenie procesu komponentu. Ale z praktycznego punktu widzenia system padnie, poniewa przetrwanie awarii takiego krytycznego procesu prawdopodobnie będzie niemo liwe.
  • 14. Model systemu operacyjnego 51 Komponenty trybu jądra Windows 2000 są równie zgodne z paradygmatami projekto- wania zorientowanego obiektowo. Na przykład nie odwołują się nawzajem do swoich wewnętrznych struktur danych. Zamiast tego korzystają z formalnych interfejsów, umo - liwiających dostęp i modyfikację tych struktur danych. Oprócz powszechnego stosowania obiektów do reprezentacji współdzielonych zasobów systemowych, Windows 2000 nie jest systemem obiektowym w ścisłym tego słowa zna- czeniu. Większość kodu systemu operacyjnego napisano w języku C. Ma to uzasadnienie w przenośności oraz powszechnej dostępności narzędzi związanych z tym językiem. C nie obsługuje w bezpośredni sposób konstrukcji znanych z języków obiektowych, jak dyna- miczne przyporządkowywanie typów danych, polimorfizm czy dziedziczenie klas. Dlatego oparta na języku C implementacja obiektów w Windows 2000 korzysta z cech poszcze- gólnych języków obiektowych, ale nie jest od nich zale na. Przenośność System Windows 2000 został zaprojektowany z myślą o obsłudze rozmaitych architektur sprzętowych, włącznie z systemami typu CISC opartymi na procesorach firmy Intel oraz systemami typu RISC. Pierwsza wersja Windows NT obsługiwała architektury x86 oraz MIPS. Obsługa procesora Alpha AXP firmy Digital Equipment Corporation (DEC) została dodana niedługo później. Obsługa czwartej architektury sprzętowej, procesora Motorola PowerPC, została dodana w Windows 3.51. Idąc za zmieniającym się zapotrzebowaniem rynku, obsługę procesorów MIPS oraz PowerPC zarzucono przed rozpoczęciem prac nad systemem Windows 2000. Później firma Compaq cofnęła wsparcie dla architektury Alpha AXP, w wyniku czego system Windows 2000 obsługuje jedynie platformę x86. Kolejną obsługiwaną przez przyszłe wersje Windows 2000 architekturą będzie nowa rodzina pro- cesorów Itanium firmy Intel, pierwsza implementacja architektury 64-bitowej, opracowywana wspólnie przez Intela i Hewlett-Packard pod nazwą IA-64 (od Intel Architecture 64). 64-bitowa wersja Windows zapewni o wiele większą przestrzeń adresową zarówno dla procesów u ytkowni- ka, jak i dla systemu. Mimo e jest to znaczące usprawnienie, mające pozytywny wpływ na skalo- walność systemu, jak dotąd dostosowywanie Windows 2000 do platformy 64-bitowe nie niosło ze sobą konieczności większych zmian w architekturze jądra systemu (innych ni oczywiście zmiany w systemie zarządzania pamięcią). Informacje dotyczące przygotowania obecnie tworzonych pro- gramów na nadejście 64-bitowego systemu Windows zawarte są w części dokumentacji pakietu Platform SDK, pod tytułem „Win64 Programming Preview” (dokumentacja ta jest równie dostęp- na pod adresem msdn.microsoft.com). Ogólne informacje na temat 64-bitowego systemu Windows mo na uzyskać po wpisaniu słowa „64-bit” w wyszukiwarce na www.microsoft. com/windows. Windows 2000 zapewnia przenośność pomiędzy architekturami sprzętowymi na dwa główne sposoby: Windows 2000 ma strukturę warstwową, w której niskopoziomowe fragmenty systemu, zale ne od architektury procesora lub platformy sprzętowej, są odizolowane w postaci oddzielnych modułów, dzięki czemu wy sze warstwy systemu mogą być niezale ne od ró nic między platformami sprzętowymi. Dwoma kluczowymi komponentami, zapewniającymi przenośność systemu operacyjnego, są jądro (zawarte w pliku Ntoskrnl.exe) oraz warstwa uniezale nienia od sprzętu (ang. Hardware Abstraction Layer — HAL, zawarta w pliku Hal.dll). (Obydwa te komponenty zostaną opisane bardziej szczegółowo w dalszej części
  • 15. 52 Rozdział 2. Architektura systemu tego rozdziału). Funkcje zale ne od architektury (takie jak przełączanie kontekstu wątków oraz obsługa pułapek) są zaimplementowane w jądrze. Funkcje, które mogą ró nić się w obrębie tej samej architektury (na przykład ró ne płyty główne), są zaimplementowane w warstwie HAL. Większość systemu Windows 2000 została napisana w języku C, niektóre fragmenty w C++. Asembler stosowano jedynie w tych częściach systemu, które muszą bezpośrednio komunikować się ze sprzętem (na przykład procedury obsługi pułapek i przerwań) lub są krytyczne z punktu widzenia wydajności (jak przełączanie kontekstów). Asembler był stosowany nie tylko w jądrze i warstwie HAL, ale tak e w kilku innych komponentach systemu (jak na przykład procedury wykorzystujące instrukcje przetwarzania potokowego czy implementujące jeden moduł w podsystemie wywołań procedur lokalnych), w części podsystemu Win32 działającej w trybie jądra, a nawet w niektórych bibliotekach trybu u ytkownika, jak kod startu procesu w Ntdll.dll (bibliotece systemowej, która zostanie omówiona później). Symetryczne wieloprzetwarzanie Wielozadaniowość jest techniką, dzięki której system operacyjny umo liwia wykonywanie wielu wątków na jednym procesorze. Jednak, jeśli komputer posiada więcej ni jeden procesor, mo e wykonywać dwa wątki jednocześnie. Tak więc, podczas gdy wielozada- niowy system operacyjny wygląda tak, jakby wykonywał wiele wątków w tym samym czasie, system z wieloprzetwarzaniem rzeczywiście to robi, wykonując po jednym wątku na ka dym z procesorów. Jak ju wspomnieliśmy na początku rozdziału, jednym z kluczowych zało eń Windows NT była dobra obsługa systemów wieloprocesorowych. Windows 2000 jest systemem ope- racyjnym zapewniającym symetryczne wieloprzetwarzanie (ang. simultaneous multipro- cessing — SMP). Nie istnieje procesor nadrzędny — zarówno system operacyjny, jak i wątki u ytkownika mogą być wykonywane na dowolnym procesorze. Wszystkie pro- cesory współdzielą tak e tę samą przestrzeń adresową. Model ten jest przeciwieństwem asymetrycznego wieloprzetwarzania (ang. asymmetric multiprocessing — ASMP), w którym system operacyjny wybiera jeden procesor, na którym wykonuje swój kod, podczas gdy pozostałe procesory wykonują jedynie kod u ytkownika. Ró nice między dwoma mo- delami wieloprzetwarzania ilustruje rysunek 2.1. Mimo e Windows NT zaprojektowano z myślą o obsłudze do 32 procesorów, adna z zasadniczych cech systemu nie ogranicza liczby procesorów do 32 — liczba ta jest oczywistą i wygodną konsekwencją długości standardowego słowa 32-bitowego, stoso- wanego w roli maski bitowej. Rzeczywista liczba obsługiwanych procesorów zale y od wersji Windows 2000. (Ró ne wersje Windows 2000 są opisane w następnym podrozdziale). Liczba ta jest przecho- wywana w rejestrze, w kluczu HKLMSYSTEMCurrentControlSetControlSession ManagerLicensedProcessors. Warto pamiętać, e modyfikacja tej wartości jest pogwał- ceniem licencji systemu i prawdopodobnie spowoduje załamanie systemu przy ponownym uruchomieniu, poniewa modyfikacja rejestru celem umo liwienia obsługi większej liczby procesorów wymaga nie tylko zmiany tej wartości.
  • 16. Model systemu operacyjnego 53 Rysunek 2.1. Wieloprzetwarzanie symetryczne kontra asymetryczne Skalowalność Jednym z kluczowych zagadnień związanych z systemami wieloprocesorowymi jest ska- lowalność. Aby prawidłowo działać na systemie SMP, kod systemu operacyjnego musi odpowiadać ścisłym wytycznym i zasadom. Przydział zasobów oraz inne kwestie wydaj- nościowe są w systemach wieloprocesorowych bardziej skomplikowane ni w jedno- procesorowych i muszą być wzięte pod uwagę przy projektowaniu systemu. Windows 2000 posiada kilka cech zapewniających sukces na polu wieloprocesorowych systemów operacyjnych: Zdolność wykonywania kodu systemu operacyjnego na dowolnym dostępnym procesorze lub na wielu procesorach jednocześnie. Wiele wątków wykonywanych w ramach jednego procesu — mogą one być równolegle przydzielone do ró nych procesorów. Drobnoziarnista synchronizacja procesów zarówno jądra, jak i sterowników urządzeń oraz serwerów, która pozwala większej liczbie komponentów działać równolegle na wielu procesorach. Dodatkowo, Windows 2000 zapewnia mechanizmy (takie jak uzupełniające porty I/O — omówione w rozdziale 9.) umo liwiające efektywną implementację wielowątkowych procesów serwerowych, które mogą być skalowane na systemach wieloprocesorowych. Synchronizacja wieloprocesorowa zostanie omówiona w rozdziale 3. Szczegóły szere- gowania wątków dla wielu procesorów są opisane w rozdziale 6.
  • 17. 54 Rozdział 2. Architektura systemu Zarys architektury Po tym krótkim omówieniu zało eń projektowych Windows 2000 pora skupić uwagę na kluczowych komponentach składających się na jego architekturę. Uproszczony schemat tej architektury ilustruje rysunek 2.2. Warto pamiętać, e ten diagram jest elementarny — nie zawiera wszystkich informacji. Ró ne komponenty systemu Windows 2000 zostaną szczegółowo omówione w dalszej części tego rozdziału. Rysunek 2.2. Uproszczona architektura Windows 2000 Na rysunku 2.2 natychmiast rzuca się w oczy linia oddzielająca fragmenty systemu Win- dows 2000 działające w trybach u ytkownika i jądra. Prostokąty ponad linią reprezentują procesy trybu u ytkownika, zaś komponenty pod linią są usługami systemu operacyjnego działającymi w trybie jądra. Jak wspomniano w rozdziale 1., wątki trybu u ytkownika wykonywane są w chronionej przestrzeni adresowej (choć podczas wykonywania w trybie jądra mają dostęp do przestrzeni systemowej). Tak więc, systemowe procesy pomocnicze, procesy usługowe, aplikacje u ytkownika oraz podsystemy środowiskowe posiadają swoje własne, prywatne przestrzenie adresowe. Cztery podstawowe typy procesów u ytkownika są opisane poni ej: Stałe systemowe procesy pomocnicze (ang. system support processes), takie jak proces logowania oraz mened er sesji, które nie są usługami Windows 2000 (tzn. nie są uruchamiane przez mened era kontroli usług). Procesy usługowe zapewniające usługi Win32, takie jak mechanizm szeregowania zadań (Task Manager) czy Spooler. Wiele aplikacji serwerowych dla Windows 2000, jak na przykład Microsoft SQL Server czy Microsoft Exchange Server, równie zawiera komponenty działające jako usługi. Aplikacje u ytkownika, które mogą nale eć do pięciu rodzajów: Win32, Windows 3.1, MS-DOS, POSIX lub OS/2 1.2. Podsystemy środowiskowe, umo liwiające aplikacjom u ytkownika dostęp do wewnętrznych usług systemu operacyjnego poprzez zestaw funkcji, tworzących środowisko systemu operacyjnego. Windows 2000 zawiera trzy podsystemy środowiskowe: Win32, POSIX oraz OS/2.
  • 18. Pakiety handlowe Windows 2000 55 Na rysunku 2.2 zwraca uwagę komponent o nazwie „Biblioteki podsystemów” poni ej prostokątów „Procesy usługowe” i „Aplikacje u ytkownika”. W Windows 2000 aplikacje u ytkownika nie wywołują wbudowanych usług systemu operacyjnego bezpośrednio. Zamiast tego korzystają z jednej lub więcej podsystemowych bibliotek dynamicznych (ang. subsystem dynamic-link libraries — DLL). Zadaniem biblioteki podsystemowej jest przetłumaczenie udokumentowanej funkcji na odpowiednie wywołanie wewnętrznej (i nieudokumentowanej) usługi systemowej Windows 2000. To tłumaczenie mo e, ale nie musi, być związane z wysłaniem komunikatu do procesu podsystemu środowisko- wego, wykorzystywanego przez aplikację. Do komponentów Windows 2000 działających w trybie jądra nale ą: Centrum wykonawcze (ang. executive) Windows 2000 zawiera podstawowe usługi systemu operacyjnego, jak zarządzanie pamięcią, zarządzanie procesami i wątkami, bezpieczeństwo, I/O oraz komunikacja międzyprocesowa. Jądro (ang. kernel) Windows 2000 zawiera niskopoziomowe funkcje systemu operacyjnego, takie jak szeregowanie wątków, obsługa przerwań i wyjątków oraz synchronizacja wieloprocesorowa. Zapewnia równie zestaw procedur i podstawowych obiektów wykorzystywanych przez centrum wykonawcze do implementacji konstrukcji wy szego poziomu. Do sterowników urządzeń (ang. device drivers) nale ą zarówno sterowniki urządzeń sprzętowych, tłumaczące wywołania funkcji I/O na konkretne operacje I/O zale ne od fizycznego urządzenia, jak i systemy plików oraz sterowniki sieciowe. Warstwa uniezale nienia od sprzętu (ang. hardware abstraction layer — HAL) jest warstwą kodu uniezale niającą jądro, sterowniki urządzeń oraz pozostałą część centrum wykonawczego Windows 2000 od zró nicowania warstwy sprzętowej (jak na przykład ró nice między płytami głównymi). System okien i grafiki implementuje funkcje graficznego interfejsu u ytkownika (lepiej znane jako funkcje podsystemów Win32 USER i GDI), związane z zarządzaniem oknami, kontrolkami interfejsu u ytkownika oraz rysowaniem. Tabela 2.1 zawiera nazwy plików podstawowych komponentów systemu operacyjnego Windows 2000. (Nazwy te warto znać, poniewa w ksią ce znajdują się odwołania do plików systemowych). Ka dy z tych komponentów jest omówiony bardziej szczegółowo w dalszej części tego rozdziału oraz w rozdziałach następnych. Jednak przed zagłębieniem się w szczegóły tych komponentów systemowych warto zbadać ró nice pomiędzy systemem w wersji Windows 2000 Professional, a ró nymi wersjami Windows 2000 Server. Pakiety handlowe Windows 2000 Istnieją cztery edycje systemu Windows 2000: Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server oraz Windows 2000 Datacenter Server. Wersje te ró nią się:
  • 19. 56 Rozdział 2. Architektura systemu Tabela 2.1. Podstawowe pliki systemowe Windows 2000 Nazwa pliku Komponenty Ntoskrnl.exe Centrum wykonawcze i jądro Ntkrnlpa.exe Centrum wykonawcze i jądro obsługujące rozszerzenie adresu fizycznego (PAE), pozwalające na adresowanie do 64 GB pamięci fizycznej Hal.dll Warstwa uniezale nienia od sprzętu Win32k.sys Część podsystemu Win32 działająca w trybie jądra Ntdll.dll Wewnętrzne funkcje wspomagające oraz systemowe łączniki do funkcji wykonawczych Kernel32.dll, Advapi32.dll, Podstawowe biblioteki podsystemu Win32 User32.dll, Gdi32.dll Liczbą obsługiwanych procesorów. Wielkością obsługiwanej pamięci fizycznej. Liczbą obsługiwanych jednocześnie połączeń sieciowych. Warstwami usługowymi, dołączanymi do edycji Server, ale nie do edycji Professional. Ró nice te są zestawione w tabeli 2.2. Komponentami, które nie ró nią się pomiędzy ró nymi wersjami Windows 2000, są podstawowe pliki systemowe: kod jądra, Ntoskrnl.exe (oraz wersja PAE, Ntkrnlpa.exe); biblioteki warstwy HAL, sterowniki urządzeń oraz podstawowe narzędzia i biblioteki systemowe. Wszystkie te pliki są takie same dla wszystkich edycji Windows 2000. Na przykład nie istnieją specjalne, serwerowe wersje warstwy HAL. Jednak e niektóre z tych komponentów działają ró nie, w zale ności od wersji systemu, z którą współpracują. Systemy Windows 2000 Server są optymalizowane ze względu na maksymalną przepustowość, konieczną w roli wysokowydajnych serwerów aplikacyjnych, podczas gdy Windows 2000 Professional, mimo i posiada mo liwości serwerowe, jest optymalizowany ze względu na czas reakcji przy pracy z u ytkownikiem. Na przykład na bazie typu produktu, podczas rozruchu systemu podejmowane są ró ne decyzje doty- czące przydziału zasobów, takich jak liczba i rozmiar stert systemowych (lub pul), liczba wewnętrznych, systemowych wątków roboczych oraz rozmiar systemowej podręcznej pamięci danych. Równie decyzje podejmowane podczas pracy systemu, jak sposób obsługi pochodzących od systemu i procesów ądań dotyczących pamięci, ró nią się pomiędzy edycjami Windows 2000 Server i Windows 2000 Professional. Nawet pewne szczegóły szeregowania wątków są ró ne między tymi dwiema rodzinami systemów. Jeśli istnieją znaczące ró nice w działaniu pomiędzy dwiema edycjami, są one wyszczególnione w odpowiednich rozdziałach tej ksią ki. O ile nie zaznaczymy inaczej, wszystkie informacje zawarte w tej ksią ce dotyczą zarówno edycji Windows 2000 Server, jak i Windows 2000 Professional. Skoro kod jądra jest identyczny we wszystkich edycjach Windows 2000, to skąd system „wie”, która wersja została uruchomiona? Poprzez wartości zapisane w rejestrze pod nazwami 2TQFWEV6[RG i 2TQFWEV5WKVG, w kluczu HKLMSYSTEMCurrentControlSet
  • 20. Pakiety handlowe Windows 2000 57 Tabela 2.2. Ró nice między wersjami Windows 2000 Professional i Server Edycja Liczba Obsługiwana Liczba Dodatkowe obsługiwanych pamięć jednoczesnych, warstwy procesorów fizyczna klienckich usługowe połączeń sieciowych Windows 2000 2 4 GB 10* Professional Windows 2000 4 4 GB Nieograniczona Mo liwość prowadzenia Server kontrolera domeny, usługa katalogowa, programowy system RAID, serwer protokołu dynamicznej konfiguracji serwerów (ang. Dynamic Host Configuration Protocol — DHCP), serwer rozproszonego systemu plików (ang. Distributed File System — DFS), usługi certyfikacyjne, usługi zdalnej instalacji oraz terminali Windows 2000 8 8 GB Nieograniczona dwuwęzłowy klaster Advanced Server Windows 2000 32 64 GB** Nieograniczona dwuwęzłowy klaster, Datacenter Server narzędzie mened era kontroli procesów*** * Ustęp w Umowie Licencyjnej u ytkownika Windows 2000 Professional (zawartej w pliku WinntSystem32 Eula.txt) mówi: „Licencjobiorca mo e zezwolić na połączenie ze Stacją Roboczą co najwy ej dziesięciu (10) komputerów lub innych urządzeń elektronicznych (ka de z nich będzie nazywane „Urządzeniem”) w celu uzyskania dostępu i korzystania z usług Produktu, wyłącznie takich, jak usługi plikowe i usługi drukowania, internetowe usługi informacyjne oraz usługi dostępu zdalnego (łącznie ze wspólnym korzystaniem z połączeń i usługami telefonicznymi)”. Ograniczenie to dotyczy współdzielenia pl ików i wydruków oraz dostępu zdalnego, ale nie do internetowych usług in formacyjnych (ang. Internet Information Services). ** Ograniczenie teoretyczne — rzeczywisty li mit mo e być mniejszy, ze względu na dostępność sprzętu. *** Więcej informacji na temat narzędzia mened era kontroli procesów znajduje się w rozdziale 6. ControlProductOptions. 2TQFWEV6[RG określa, czy system jest wersją Windows 2000 Professional, czy Windows 2000 Server (dowolnej edycji). Dopuszczalne wartości tej zmiennej są podane w tabeli 2.3. Rezultat jest zapisany w globalnej zmiennej systemowej /O2TQFWEV6[RG, dostępnej dla sterowników urządzeń dzięki funkcji trybu jądra, o nazwie /O+U6JKU#P0V#U5[UVGO, udokumentowanej w pakiecie Windows 2000 DDK. Tabela 2.3. Wartości zmiennej rejestrowej ProductType Edycja Windows 2000 Wartość ProductType Windows 2000 Professional 9KP06 Windows 2000 Server (kontroler domeny) .CPOCP06 Windows 2000 Server (tylko serwer) 5GTXGT06
  • 21. 58 Rozdział 2. Architektura systemu Inna zmienna rejestru, 2TQFWEV5WKVG, pozwala rozró nić edycje Windows 2000 Server, Advanced Server oraz Datacenter Server, jak równie określa, czy zainstalowano usługi terminalowe (w przypadku systemów Server). W systemach Windows 2000 Professional ta zmienna jest pusta. Programy u ytkownika, aby określić, na której edycji Windows 2000 są uruchomione, mogą skorzystać z funkcji Win32 o nazwie 8GTKH[8GTUKQP+PHQ, opisanej w dokumentacji pakietu Platform SDK. Sterowniki urządzeń mogą skorzystać z funkcji trybu jądra, o nazwie 4VN)GV8GTUKQP, udokumentowanej w Windows 2000 DDK. Wersja testowa Istnieje specjalna, wspomagająca wykrywanie błędów, edycja Windows 2000 Professional nosząca nazwę wersji testowej (ang. checked build). Wersja ta jest dostępna jedynie z prenumeratą biblioteki MSDN Professional (lub Universal). Jej celem jest wsparcie projektantów sterowników urządzeń — wersja testowa zapewnia bardziej ścisłe wychwyty- wanie błędów w funkcjach trybu jądra, wywoływanych przez sterowniki urządzeń i inny kod systemowy. Na przykład, jeśli sterownik (lub inny fragment kodu w trybie jądra) wykonuje błędne wywołanie funkcji, która sprawdza poprawność parametrów (jak na przykład ądanie URKPNQEM na niewłaściwym poziomie przerwań), system przerwie wyko- nywanie w momencie wykrycia błędu, nie dopuszczając do zakłócenia integralności struktur danych i ewentualnego, późniejszego załamania systemu. Wersja testowa jest efektem rekompilacji kodu źródłowego Windows 2000 z parametrem kompilacji &'$7) ustawionym na 647'. Wiele dodatkowego kodu w plikach powstało w re- zultacie zastosowania makra #55'46, zdefiniowanego w pliku nagłówkowym Ntddk.h i udo- kumentowanego w materiałach dostarczanych z DDK. Makro to sprawdza warunek (taki jak poprawność struktury danych lub parametru), a jeśli sprawdzane wyra enie ma wartość logiczną (#.5', makro wywołuje funkcję trybu jądra 4VN#UUGTV, która korzysta z funkcji &DI2TKPV celem przekazania tekstu komunikatu o błędzie do programu uruchomieniowego jądra (jeśli takowy jest obecny), po czym „pyta” u ytkownika co robić (przerwać, zignoro- wać, zakończyć proces czy zakończyć wątek). Jeśli system nie został uruchomiony z pro- gramem uruchomieniowym jądra (przez zastosowanie opcji '$7) w pliku Boot.ini) i aden taki program aktualnie nie działa, pora ka testu #55'46 powoduje załamanie systemu. Mimo e Microsoft nie rozpowszechnia wersji testowej systemów Windows 2000 Server, Advanced Server ani Datacenter Server, mo na ręcznie zastąpić kod jądra Windows 2000 Server wersją testową i ponownie uruchomić system z testowym jądrem. (Mo na tak zrobić z pozostałymi plikami systemowymi, ale większość projektantów korzystających z testowej edycji potrzebuje jedynie rozszerzonej wersji jądra — a nie wszystkich ste- rowników urządzeń, narzędzi i bibliotek). Pliki systemowe związane z maszynami wieloprocesorowymi Sześć spośród plików systemowych 1 jest innych w systemie wieloprocesorowym ni w jednoprocesorowym. (zob. tabela 2.4.) Podczas instalacji odpowiedni plik jest kopiowany 1 W katalogu I386UNIPROC na płycie dystrybucyjnej Windows 2000 znajduje się plik o nazwie Winsrv.dll — mimo e ten plik znajduje się w katalogu o nazwie UNIPROC, co sugeruje, e istnieje wersja jednoprocesorowa, w rzeczywistości istnieje tylko jedna wersja tego pliku dla systemów jedno- i wieloprocesorowych.
  • 22. Pakiety handlowe Windows 2000 59 do lokalnego katalogu WinntSystem32. Aby sprawdzić, które pliki zostały skopiowane, mo na obejrzeć zawartość pliku WinntRepairSetup.log, zawierającego nazwy wszystkich plików skopiowanych na lokalny dysk systemowy, wraz ze ście ką źródłową tych plików. Tabela 2.4. Pliki systemu wieloprocesorowego kontra pliki systemu jednoprocesorowego Nazwa pliku Nazwa wersji jednoprocesorowej Nazwa wersji wieloprocesorowej na dysku systemowym na płycie CD na płycie CD Ntoskrnl.exe I386Ntoskrnl.exe I386Ntkrnlmp.exe Ntkrnlpa.exe Ntkrnlpa.exe w I386Driver.cab Ntkrpamp.exe w I386Driver.cab Hal.dll Zale nie od typu systemu (lista wersji Zale nie od typu systemu (lista wersji HAL znajduje się w tabeli 2.5.) HAL znajduje się w tabeli 2.5.) Win32k.sys I386UNIPROCWin32k.sys I386Win32k.sys Ntdll.dll I386UNIPROCNtdll.dll I386Ntdll.dll Kernel32.dll I386UNIPROCKernel32.dll I386Kernel32.dll Powodem istnienia jednoprocesorowych wersji tych kluczowych plików systemowych jest wydajność — synchronizacja wieloprocesorowa jest z natury bardziej zło ona i cza- sochłonna ni korzystanie z jednego procesora, tak więc specjalne, jednoprocesorowe wersje kluczowych plików pozwalają uniknąć tego nakładu w systemach z jednym pro- cesorem (które składają się na większość komputerów pracujących pod kontrolą Win- dows 2000). Interesujące jest, e podczas gdy jedno- i wieloprocesorowe wersje pliku Ntoskrnl powstały poprzez kompilację kodu źródłowego z odpowiednimi opcjami, to jednoprocesorowe wersje plików Ntdll.dll i Kernel32.dll powstały poprzez zastąpienie instrukcji .1%- oraz 70.1%-, u ywanych w architekturze x86 do synchronizacji wątków, instrukcjami 012 (które nic nie robią). ĆWICZENIE: Obserwacja plików związanych z systemem wieloprocesorowym Pliki, których inne wersje są wymagane dla systemu wieloprocesorowego, mo na obej- rzeć, przeglądając szczegóły sterowników w Mened erze urządzeń: 1. Otwórz Właściwości systemu (poprzez wybranie ikony System w Panelu Sterowania lub przez naciśnięcie prawego klawisza myszy na ikonie Mój Komputer na pulpicie i wybranie Właściwości). 2. Wybierz zakładkę Sprzęt. 3. Wybierz Mened er urządzeń. 4. Rozwiń obiekt Komputer. 5. Podwójnie naciśnij uchwyt poni ej pola Komputer. 6. Wybierz zakładkę Sterownik. 7. Naciśnij Szczegóły sterownika
  • 23. 60 Rozdział 2. Architektura systemu Pozostałe pliki systemowe składające się na Windows 2000 (włącznie z narzędziami, bibliotekami i sterownikami urządzeń) występują w tej samej wersji w systemach jed- no- i wieloprocesorowych (co oznacza, e prawidłowo współpracują z komputerami wieloprocesorowymi). To podejście warto stosować podczas pracy nad ka dym opro- gramowaniem, zarówno w Win32, jak i przy okazji projektowania sterowników — musisz brać pod uwagę kwestie związane z wieloprocesorowością i testować gotowe programy na systemach jedno- i wieloprocesorowych. Na płycie zawierającej wersję testową Windows 2000 porównanie plików Ntoskrnl.exe i Ntkrnlmp.exe lub Ntkrnlpa.exe i Ntkrpamp.exe wyka e, e są one identyczne — są to wieloprocesorowe wersje tych samych plików. Innymi słowy, nie istnieją jednoproceso- rowe wersje testowe jąder dostarczanych z wersją „checked build”. ĆWICZENIE: Sprawdzenie wersji uruchomionego pliku Ntoskrnl W przypadku Windows NT mo na sprawdzić wersję uruchomionego pliku Ntoskrnl po- przez naciśnięcie zakładki Wersja w programie Diagnostyka Windows NT (Winmsd.exe). W Windows 2000 nie ma narzędzia pozwalającego uzyskać tę informację. Jednak e podczas ka dego rozruchu systemu dokonywany jest wpis do Dziennika zdarzeń, zapisu- jący typ jądra (jedno- lub wieloprocesorowe oraz zwykłe lub testowe). Jest to zilustro- wane na rysunku poni ej. (Z menu Start wybierz Programy/Narzędzia administracyjne/ Podgląd zdarzeń, wybierz Dziennik systemu, a następnie podwójnie naciśnij wpis Dzien- nika o identyfikatorze 6009, oznaczającym, e wpisu dokonano przy rozruchu systemu). Ten zapis w Dzienniku nie określa, czy uruchomiono wersję jądra zapewniającą PAE — mo liwość obsługi pamięci fizycznej większej ni 4 GB (Ntkrnlpa.exe). Jednak ta informacja znajduje się rejestrze, w zmiennej o nazwie HKLMSYSTEM Current- ControlSetControlSystemStartOptions. W przypadku uruchomienia jądra PAE, zmienna HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management PhysicalAddressExtension otrzymuje wartość 1.
  • 24. Kluczowe komponenty systemu 61 Mo na równie określić, czy uruchomiono wieloprocesorową wersję Ntoskrnl (lub Ntkrnlpa). W tym celu trzeba sprawdzić właściwości plików: uruchom Windows Explorera, prawym klawiszem myszy naciśnij na pliku Ntoskrnl.exe w katalogu Winnt System32, po czym wybierz Właściwości. Następnie naciśnij zakładkę Wersja i wybierz Oryginalna nazwa pliku — w przypadku wersji jednoprocesorowej uka e się okno dialogowe jak na poni szym rysunku. Wreszcie, jak wspomniano wcześniej, mo na sprawdzić, które wersje jądra i warstwy HAL zostały wybrane na etapie instalacji. Sprawdzisz to poprzez obejrzenie zawartości pliku WinntRepairSetup.log. Kluczowe komponenty systemu Po omówieniu wysokopoziomowej architektury Windows 2000 pora zagłębić się w we- wnętrzną strukturę i zadania realizowane przez poszczególne, kluczowe komponenty syste- mu. Rysunek 2.3 jest bardziej szczegółową i kompletną wersją diagramu komponentów i architektury Windows 2000 zamieszczonego wcześniej (na rysunku 2.2). Poni sze podrozdziały prezentują większe elementy tego diagramu. W rozdziale 3. wyja- śniamy główne mechanizmy kontrolne systemu (jak mened er obiektów, przerwania, itd.). W rozdziale 4. przedstawiamy proces rozruchu i zamykania Windows 2000, natomiast rozdział 5. zawiera szczegóły mechanizmów zarządzających, takich jak rejestr, procesy usługowe oraz instrumentacje zarządzania Windows (ang. Windows Management Instrumentation — WMI). Kolejne rozdziały pokazują jeszcze bardziej szczegółowo wewnętrzną strukturę i działanie kluczowych mechanizmów, takich jak procesy i wątki, zarządzanie pamięcią, bezpieczeństwo, zarządzanie urządzeniami I/O, zarządzanie pamięcią masową, zarządzanie pamięcią podręczną, system plików Windows 2000 (NTFS) oraz usługi sieciowe.
  • 25. 62 Rozdział 2. Architektura systemu Rysunek 2.3. Architektura Windows 2000 Podsystemy środowiskowe i biblioteki podsystemów Windows 2000 posiada trzy podsystemy środowiskowe: OS/2, POSIX oraz Win32 (ilu- struje to rysunek 2.3). Jak się zaraz oka e, spośród tych trzech Win32 jest podsystemem wyjątkowym, poniewa Windows 2000 nie mo e bez niego działać. (Obsługuje on klawia- turę, mysz oraz ekran, i musi być obecny nawet w systemach serwerowych pozbawionych mo liwości interaktywnej pracy z u ytkownikiem). Dwa pozostałe podsystemy są skonfi- gurowane tak, e uruchamiają się na ądanie, podczas gdy Win32 musi działać zawsze. Informacja o rozruchu podsystemów znajduje się w kluczu rejestru o nazwie HKLM SYSTEMCurrentControlSetControlSession ManagerSubSystems. Rysunek 2.4 ilustruje wartości w tym kluczu. Pole 4GSWKTGF zawiera podsystemy ładowane podczas rozruchu systemu. Zmienna ta zawiera dwa ciągi znaków: 9KPFQYU oraz GDWI. Pole 9KPFQYU zawiera specyfikację pliku podsystemu Win32, Csrss.exe (skrót pochodzi od Client/Server Run-Time Subsystem)2. 2 Nota historyczna: powód, dla którego proces podsystemu Win32 nosi nazwę Csrss.exe, pochodzi z czasów początkowego projektu Windows NT, gdzie wszystkie podsystemy miały działać jako wątki pojedynczego, ogólnego procesu podsystemów środowiskowych. Gdy podsystemy POSIX i OS/2 umieszczono we własnych procesach, nazwa procesu podsystemu Win32 pozostała bez zmian.
  • 26. Kluczowe komponenty systemu 63 Rysunek 2.4. Edytor rejestru pokazujący informację o rozruchu Windows 2000 Pole GDWI jest puste (słu y do wewnętrznego testowania) i nie ma adnych efektów. Wartość 1RVKQPCN oznacza, e podsystemy OS/2 i POSIX będą uruchamiane na ądanie. Zmienna rejestrowa -OQFG zawiera nazwę pliku części podsystemu Win32 trybu jądra, Win32k.sys (omawianego w dalszej części rozdziału). Zadaniem podsystemu środowiskowego jest zapewnienie dostępu do pewnego zbioru pod- stawowych usług systemowych Windows 2000 dla aplikacji. Ka dy podsystem zapewnia dostęp do innego zestawu wewnętrznych usług Windows 2000. Oznacza to, e pewnych rzeczy, których mo na dokonać w aplikacji zbudowanej z wykorzystaniem jednego z pod- systemów, nie mo na zrealizować w aplikacji powstałej dla innego podsystemu. Na przy- kład aplikacje Win32 nie mogą korzystać z funkcji HQTM, nale ącej do podsystemu POSIX. Ka dy plik wykonywalny (.exe) jest przypisany do jednego i tylko jednego podsystemu. W momencie uruchomienia pliku kod tworzący proces analizuje typ podsystemu zapisany w nagłówku pliku, dzięki czemu mo e powiadomić odpowiedni podsystem. Ten znacznik typu jest określany poprzez opcję 57$5;56'/ polecenia NKPM w pakiecie Microsoft Visual C++ i mo e być sprawdzony za pomocą narzędzia Exetype z Windows 2000 Resource Kit. Wywołania funkcji nie mogą mieszać podsystemów. Innymi słowy, aplikacja POSIX mo e wywoływać jedynie usługi udostępniane przez podsystem POSIX, a aplikacja Win32 mo e korzystać jedynie z usług udostępnianych przez podsystem Win32. Jak się oka e, ogra- niczenie to jest powodem, dla którego podsystem POSIX, implementujący bardzo ogra- niczony zestaw funkcji (tylko POSIX 1003.1), nie jest przydatnym środowiskiem do przenoszenia aplikacji z systemów Uniks. Jak ju wspomniano, aplikacje u ytkownika nie wywołują usług systemowych Windows 2000 bezpośrednio. Zamiast tego korzystają z jednej lub więcej bibliotek podsystemów. Biblioteki te oferują udokumentowany interfejs, dostępny dla programów korzystają- cych z tych bibliotek. Na przykład biblioteki podsystemu Win32 (jak Kernel32.dll, Advapi32.dll, User32.dll oraz Gdi32.dll) implementują funkcje Win32 API. Biblioteka podsystemu POSIX implementuje interfejs programowy POSIX 1003.1. Gdy aplikacja wywołuje funkcję z biblioteki podsystemu, mo liwe są trzy rzeczy: