Strubný obsah Pohled do historie Pdedmluva Úvod Kapitola 1: Principy a nástroje Kapitola 2: Architektura systému Kapitola 3: Mechanismy systému Kapitola 4: Mechanismy správy Kapitola 5: Spoušt?ní a vypínání Kapitola 6: Procesy, vlákna a úlohy Kapitola 7: Správa pam?ti Kapitola 8: Bezpe:nost Kapitola 9: V/V systém Kapitola 10: Správa úložišP Kapitola 11: Správce mezipam?ti Kapitola 12: Souborové systémy Kapitola 13: Práce v síti Kapitola 14: Analýza výpisu pam?ti pdi havárii Slovní:ek pojmS Rejstdík
17 21 23 27 61 109 203 269 307 389 497 551 629 669 705 805 865 893 925
Obsah Pohled do historie Pdedmluva Úvod Od autorS Od nakladatelství Od :eského vydavatele
17 21 23 25 26 26
Kapitola 1
Principy a nástroje
1.1 Verze opera:ních systémS Windows 1.2 Základní principy a pojmy Rozhraní API systému Windows Služby, funkce a rutiny Procesy, vlákna a úlohy Virtuální pam?P Režim jádra versus uživatelský režim Terminálové služby a více relací Objekty a manipulátory Zabezpe:ení
27
28 29 29 30 32 39 41 46 47 47
6
Obsah
Registr Sada Unicode
1.3 Cesta do nitra systému Windows Nástroj Performance (Výkon) Sada Windows Support Tools Sady Windows Resource Kit Lad?ní jádra Sada Platform Software Development Kit (SDK) Sada Device Driver Kit (DDK) Nástroje sídla Sysinternals 1.4 Záv?r
48 49
50 51 52 52 52 57 58 58 59
Kapitola 2
Architektura systému
2.1 Požadavky a cíle návrhu 2.2 Model opera:ního systému 2.3 Pdehled architektury Pdenositelnost Symetrický multiprocesing Škálovatelnost Rozdíly mezi klientskými a serverovými verzemi Ov?dovací sestavení 2.4 Klí:ové komponenty systému Subsystémy prostdedí a knihovny DLL subsystémS Ntdll.dll Výkonná :ást Jádro Vrstva abstrakce hardwaru Ovlada:e zadízení Procesy systému 2.5 Záv?r
61
62 63 64 66 67 72 73 75 77 78 87 88 90 92 94 98 108
Kapitola 3
Mechanismy systému
3.1 Odesílání zachycení Odesílání pderušení Odesílání výjimek Odesílání systémových služeb 3.2 Správce objektS Objekty výkonné :ásti Struktura objektS 3.3 Synchronizace Synchronizace pdi vysoké úrovni IRQL Synchronizace pdi nízké úrovni IRQL
109
110 112 133 142 146 149 150 171 172 176
7
Obsah
3.4 Pracovní vlákna systému 3.5 Globální pdíznaky Windows 3.6 Lokální volání procedur 3.7 Trasování událostí jádra 3.8 Wow64 Rozvržení adresového prostoru procesS Wow64 Systémová volání Odesílání výjimek Uživatelská zp?tná volání Pdesm?rování systému souborS Pdesm?rování a zrcadlení registru Požadavky na dízení I/O Aplikace s 16bitovým instalátorem Tisk Omezení 3.9 Záv?r
186 188 191 194 197 198 198 198 198 199 199 200 201 201 201 201
Kapitola 4
Mechanismy správy
4.1 Registr Zobrazení a úpravy registru Používání registru Datové typy registru Logická struktura registru ešení potíží s registrem Vnitdní fungování registru 4.2 Služby Aplikace služeb Ú:ty služeb Správce dízení služeb Spoušt?ní služeb Chyby pdi spoušt?ní Pdijetí spušt?ní a poslední známé dobré verze Selhání služeb Vypnutí služeb Sdílené procesy služeb Programy dízení služeb 4.3 Windows Management Instrumentation Architektura WMI Poskytovatelé Spole:ný informa:ní model (CIM) a jazyk formátu spravovaných objektS (MOF) Obor názvS WMI Pdidazování tdíd Implementace WMI
203
204 204 205 205 207 212 217 232 232 237 243 245 249 250 251 252 253 255 256 257 258 259 262 264 265
8
Obsah
Zabezpe:ení WMI 4.4 Záv?r
267 268
Kapitola 5
Spoušt?ní a vypínání
5.1 Proces spoušt?ní Po:áte:ní fáze spoušt?ní na x86 a x64 Spoušt?cí sektor a Ntldr na systémech x86/x64 Proces spoušt?ní na architektude IA64 Inicializace jádra a subsystémS výkonné :ásti SMSS, CSRSS a Winlogon Automaticky spoušt?né obrazy 5.2 ešení potíží se startem a spoušt?ním Poslední známá dobrá konfigurace Stav nouze Konzola pro zotavení ešení obvyklých potíží se spoušt?ním 5.3 Vypnutí 5.4 Záv?r
269
270 270 274 283 284 288 291 292 292 293 297 299 304 306
Kapitola 6
Procesy, vlákna a úlohy
6.1 Vnitdní fungování procesS Datové struktury Prom?nné jádra Výkonnostní :íta:e Pdíslušné funkce 6.2 Tok funkce CreateProcess Fáze 1: Otevdení obrazu, který se má vykonat Fáze 2: Tvorba objektu procesu výkonné :ásti Windows Fáze 3: Vytvodení po:áte:ního vlákna a jeho zásobníku a kontextu Fáze 4: Upozorn?ní subsystému Windows na nový proces Fáze 5: Spušt?ní vykonávání po:áte:ního vlákna Fáze 6: Vykonání inicializace procesu v kontextu nového procesu 6.3 Vnitdní fungování vláken Datové struktury Prom?nné jádra Výkonnostní :íta:e Související funkce Zrození vlákna 6.4 PrSzkum :innosti vláken 6.5 Plánování vláken Pdehled plánování Windows Úrovn? priorit
307
308 308 315 315 316 318 320 322 326 327 328 328 330 330 337 337 338 339 339 342 342 344
9
Obsah
Rozhraní API plánování v systému Windows Pdíslušné nástroje Priority reálného :asu Stavy vláken Databáze odesílatele Kvantum Scénáde plánování Pdepínání kontextu Ne:inné vlákno Zvyšování priority Víceprocesorové systémy Algoritmy plánování vláken na víceprocesorových systémech
6.6 Objekty úloh 6.7 Záv?r
346 347 349 350 353 355 359 362 362 363 371 380
382 387
Kapitola 7
Správa pam?ti
7.1 Úvod do správce pam?ti Sou:ásti správce pam?ti Interní synchronizace Konfigurování správce pam?ti Kontrola využití pam?ti 7.2 Služby poskytované správcem pam?ti Velké a malé stránky Rezervování a sv?dování stránek Uzamykání pam?ti Granularita alokování Sdílená pam?P a mapované soubory Chrán?ní pam?ti Ochrana stránky pomocí zákazu provád?ní Kopírování pdi zápisu Správce haldy Rozšídení adresování pomocí okna 7.3 Pam?Pové fondy systému Konfigurování velikostí fondS Sledování využití fondu Vedlejší seznamy Nástroj pro ov?dování ovlada:S 7.4 len?ní virtuálního adresového prostoru Rozložení uživatelského adresového prostoru na platform? x86 Rozložení systémového adresového prostoru na platform? x86 Prostor relace na platform? x86 Položky systémové stránkovací tabulky len?ní 64bitových adresových prostorS
389
390 390 392 392 393 396 397 398 399 400 400 402 403 407 408 413 415 416 419 422 424 428 430 431 432 436 436
10
Obsah
7.5 Pdekládání adres Pdeklad virtuálních adres na platform? x86 Vedlejší pdekladová vyrovnávací pam?P Rozšídení fyzické adresy (PAE) Pdeklad virtuálních adres na platform? IA-64 Pdeklad virtuálních adres na platform? x64 7.6 Obsluha chyb stránky Neplatné položky PTE Prototypové položky PTE V/V operace pdi stránkování Kolizní výpadky stránek Stránkovací soubory 7.7 Deskriptory virtuální adresy 7.8 Objekty úseku 7.9 Pracovní sady Stránkování na žádost 7.10 Logický systém pdedb?žného na:ítání Strategie umisPování ízení pracovní sady Správce vyvážení a vlákno odkládacího mechanismu Pracovní sada systému 7.11 Databáze :ísel rámcS stránek Dynamika seznamS stránek Zapisova: modifikovaných stránek Datová struktura PFN Upozorn?ní pdi nízkém a vysokém stavu pam?ti 7.12 Záv?r
437 437 448 449 450 451 452 454 455 456 457 458 462 464 470 471 471 475 476 479 480 482 485 487 488 492 495
Kapitola 8
Bezpe:nost
8.1 Sou:ásti bezpe:nostního systému 8.2 Ochrana objektS Kontroly pdístupu Bezpe:nostní deskriptory a kontrola pdístupu 8.3 Práva ú:tu a oprávn?ní Práva ú:tu Oprávn?ní Super oprávn?ní 8.4 Bezpe:nostní audit 8.5 Pdihlášení Inicializace procesu Winlogon Postup pdihlašování uživatele 8.6 Zásady pro omezení softwaru 8.7 Záv?r
497
501 505 506 519 529 530 531 537 538 541 542 543 547 549
11
Obsah
Kapitola 9
V/V systém
9.1 Sou:ásti V/V systému Správce V/V Obvyklé zpracování V/V 9.2 Ovlada:e zadízení Druhy ovlada:S zadízení Struktura ovlada:e Objekty ovlada:e a objekty zadízení Otevírání zadízení 9.3 Zpracování vstupu a výstupu Typy V/V Synchronní a asynchronní V/V Pakety V/V požadavkS V/V požadavky pro jednovrstvý ovlada: V/V požadavky pro vrstvené ovlada:e Porty ukon:ení V/V Nástroj pro ov?dování ovlada:S 9.4 Správce Plug and Play (PnP) Úrovn? podpory Plug and Play Ovlada: a podpora Plug and Play Zavedení, inicializace a instalace ovlada:e Instalace ovlada:e 9.5 Správce napájení innost správce napájení Jak ovlada: dídí napájení zadízení 9.6 Záv?r
551
552
554 555
556 556 562 564 569 574 575 575 578 584 590 598 602 603 604 605 607 616 620 622 626 626
Kapitola 10
Správa úložišP
10.1 Terminologie 10.2 Diskové ovlada:e Zavad?: Ntldr Ovlada:e tdídy disk, port a miniport Ovlada:e iSCSI Ovlada:e vícecestného V/V (MPIO) Objekty zadízení typu disk Správce oddílS 10.3 Správa svazkS Základní disky Dynamické disky Správa víceoddílových svazkS Jmenný prostor svazku
629
630 630 631 631 633 633 635 636 637 638 641 647 653
12
Obsah
Pdípojné body V/V operace ve svazku Služba virtuálního disku Služba stínové kopie svazku
10.4 Záv?r
654 660 661 663
668
Kapitola 11
Správce mezipam?ti
11.1 Klí:ové vlastnosti správce mezipam?ti Jedna centralizovaná mezipam?P systému Správce pam?ti Soudržnost (koherence) mezipam?ti Odkládání virtuálních blokS Odkládání na bázi proudu Podpora zotavitelných souborových systémS 11.2 Správa virtuální pam?ti pro mezipam?P 11.3 Velikost mezipam?ti LargeSystemCache Virtuální velikost mezipam?ti Velikost pracovní sady mezipam?ti Fyzická velikost mezipam?ti 11.4 Datové struktury mezipam?ti Celosystémové datové struktury mezipam?ti Datové struktury mezipam?ti pro jednotlivé soubory 11.5 Rozhraní souborového systému Kopírování dat do mezipam?ti a nazp?t Odkládání do mezipam?ti s využitím mapovacího a zachycovacího rozhraní Odkládání do mezipam?ti pomocí rozhraní pro pdímý pdístup do pam?ti 11.6 Rychlý V/V 11.7 Dopdedné :tení a zápis na pozadí Inteligentní dopdedné :tení Zpožd?ný zápis z mezipam?ti a lenivé zapisování Omezení zápisu Systémová vlákna 11.8 Záv?r
669
670 670 671 671 673 673 673 674 676 677 678 679 681 683 683 685 689 690 691 694 694 697 697 699 702 703 704
Kapitola 12
Souborové systémy
12.1 Formáty souborových systémS Windows CDFS UDF FAT12, FAT16 a FAT32 NTFS 12.2 Architektura ovlada:e souborového systému
705
707 707 707 708 711 711
13
Obsah
Lokální ovlada:e FSD Vzdálené ovlada:e FSD Fungování souborového systému Explicitní souborová V/V operace Ovlada:e filtru souborového systému
12.3 ešení potíží se souborovým systémem Základní versus pokro:ilý režim programu Filemon Program Filemon a techniky dešení potíží 12.4 Vlastnosti a cíle návrhu systému NTFS Požadavky na špi:kový souborový systém Pokro:ilé vlastnosti systému NTFS 12.5 Ovlada: souborového systému NTFS 12.6 Struktura disku NTFS Svazky Clustery Hlavní souborová tabulka Referen:ní :ísla souborS Souborové záznamy Jména souborS Rezidentní a nerezidentní atributy Komprese dat a dídké soubory Soubor výkazS zm?n Indexování Identifikátory objektS Sledování kvót Spole:né zabezpe:ení Body zm?ny zpracování 12.7 Podpora obnovy v systému NTFS Evoluce návrhu souborového systému Protokolování Služba protokolového souboru (LFS) Obnovení Obnova vadných clusterS systémem NTFS 12.8 Bezpe:nost šifrovacího souborového systému První šifrování souboru Proces dešifrování Zálohování šifrovaných souborS 12.9 Záv?r
712 713 716 717 722
728 729 729 735 735 736 747 749 750 750 751 757 758 760 763 766 770 771 773 774 775 777 777 778 780 781 786 790 794 797 802 803 804
Kapitola 13
Práce v síti
13.1 SíPová architektura Windows Referen:ní model OSI SíPové komponenty Windows
805
806 806 807
14
Obsah
13.2 SíPová rozhraní API Sokety Windows Vzdálené volání procedury Rozhraní API pro pdístup k webu Pojmenovaná propojení a poštovní pdihrádky NetBIOS Další síPová rozhraní API 13.3 Podpora vícenásobných redirektorS Sm?rova: pro více síPových prostdedí Vícenásobný poskytovatel UNC 13.4 Rozklad jmen Systém doménových jmen (DNS) Internetová jmenná služba Windows (WINS) Rozšídení TCP/IP 13.5 Ovlada:e NDIS Variace ovlada:e miniportu NDIS Ovlada:e NDIS orientované na spojení Vzdálené rozhraní NDIS QOS 13.6 Vazby 13.7 Vrstvené síPové služby Vzdálený pdístup Služba Active Directory Vyrovnávání zatížení sít? Služba replikování souborS Distribuovaný souborový systém 13.8 Záv?r
809 810 816 821 823 830 833 834 835 838 839 839 840 844 847 852 852 854 856 857 858 859 859 860 861 862 864
Kapitola 14
Analýza výpisu pam?ti pdi havárii
14.1 Co zpSsobuje havárie Windows? 14.2 Modrá obrazovka 14.3 Soubory s výpisem pam?ti pdi havárii Generování výpisu pam?ti pdi havárii 14.4 Hlášení o chybách systému Windows 14.5 Pdímá analýza havárie 14.6 Základní analýza výpisu pam?ti pdi havárii Program Notmyfault Základní analýza výpisu pam?ti pdi havárii Podrobná analýza 14.7 Použití nástrojS pro dešení havárií Pdete:ení vyrovnávací pam?ti a speciální fond Pdepsání kódu a ochrana systémového kódu pded zápisem 14.8 Pokro:ilá analýza výpisu pam?ti pdi havárii
865
866 867 870 873 873 875 876 876 877 879 881 881 884 886
15
Obsah
Poškození zásobníku Zamrzlý nebo nereagující systém Když se žádný výpis pdi havárii nevytvodí
Slovní:ek pojmS Rejstdík
886 887 891
893 925
Pohled do historie Opµt jsem vdµ²ný Davidu Solomonovi a Marku Russinovichi za to, že mi poskytli p½íležitost napsat nµkolik slov o jejich nejnovµjším vydání série knih o vnit½ní architektu½e Windows (Windows Internals). Poslední kniha vyšla již p½ed t½emi lety a za tu dobu se objevily dvµ základní vµci: podstatná aktualizace klientského sytému a další dost d¾ležitá aktualizace serverového systému, která se právµ p½ipravuje ke vstupu na trh. Dva základní problémy, se kterými se auto½i této knihy museli vyrovnat, bylo zachytit implementaci vývoje systému Microsoft Windows NT a dokumentovat zp¾sob, kterým zabudování nových rys¾ ovlivnilo každou verzi. Musím p½iznat, že auto½i knihy se svého úkolu zhostili velmi dob½e a v knize poskytli spoustu p½íklad¾ a vysvµtlení. Poprvé jsem se setkal s Davidem Solomonem, když jsem pracoval ve spole²nosti Digital Equipment Corporation na opera²ním systému VMS pro VAX; to mu bylo teprve 16. Od té doby se ú²astnil vývoje opera²ního systému a školení o vnit½ní architektu½e opera²ního systému. S Markem Russinovichem jsem se setkal pozdµji, ale o jeho odborných znalostech v oblasti opera²ních systém¾ jsem dob½e vµdµl. Poda½ily se mu úžasné vµci, jako nap½íklad jeho systém NTFS, který pracuje pod Microsoft Win-
18
Pohled do historie
dows 98 a jeho „živý“ ladicí program jádra, který lze použít pro nahlížení do spuštµného systému Windows.
(zleva doprava) David Solomon, David Cutler a Mark Russinovich
Windows NT zahájily v ½íjnu 1988 s cílem vytvo½it p½enosný systém, který by obsahoval kompatibilitu OS/2, bezpe²nost, PSIX, sou²asné zpracování více proces¾, integrovanou práci v sítích a spolehlivost. Po p½íchodu Windows 3.0 a jejich velkém úspµchu se cílem systému stalo obsahovat kompatibilitu Windows p½ímo a odsunout OS/2 jako subsystém. P¾vodnµ jsme si mysleli, že bychom mohli vyprodukovat první systém Windows NT za nµjaké dva roky. Nakonec nám to však zabralo ²ty½i a p¾l roku a první verze se objevila v létµ 1993. Tato verze podporovala procesory Intel i386, Intel i486 a MIPS R400. O šest týdn¾ pozdµji jsme uvedli podporu i pro procesory Alpha Digital. První verze Windows NT byla vµtší a pomalejší, než se o²ekávalo, takže dalším velkým pokrokem byl projekt nazvaný Daytona, pojmenovaný podle dálnice na Floridµ. Hlavním cílem této verze bylo zredukovat velikost systému, zvýšit rychlost systému a samoz½ejmµ také zvýšit spolehlivost. Za šest mµsíc¾ po uvolnµní Windows NT 3.5 na podzim 1994 jsme uvedli Windows NT 3.51, aktualizovanou verzi obsahující podporu pro procesory IBM PowerPC. Cílem pro další verzi Windows NT bylo aktualizovat uživatelské rozhraní tak, aby bylo kompatibilní s Windows 95 a aby v nµm byly za²lenµny technologie Cairo, které se už ve firmµ Microsoft nµkolik let vyvíjely. Vývoj tohoto systému trval další dva roky a byl uveden na trh v létµ 1996 jako Windows NT 4.0. Následující verze NT byla p½ejmenována na Windows 2000 a byla posledním systémem, pro který byly systémy klienta i serveru uvedeny sou²asnµ. Tato verze byla vystavµna na stejné technologii Windows NT jako verze p½edchozí a mµla nµkteré významné nové rysy, jako nap½íklad aktivní adresá½. Vyprodukovat Windows 2000 trvalo t½i a p¾l roku a byla to verze Windows NT, která byla v té dobµ nejvíce testovaná a vylaÅovaná. Windows 2000 byly kulminací jedenácti rok¾ vývoje a implementací ²ty½ r¾zných architektur.
Pohled do historie
Ke konci vývoje Windows 2000 jsme zahájili ambiciózní plán implementovat nové verze klientského a serverového systému, které by obsahovaly nové vylepšené zákaznické rysy a zlepšily schopnosti serveru. P½i práci na tµchto plánech vyplynulo zcela jasnµ, že implementace tµchto serverových rys¾ by zp¾sobila zpoždµní v implementaci klientských rys¾, a proto se uvedení tµchto systém¾ rozdµlilo. V srpnu 2002 byla uvedena verze Windows XP Professional a Windows XP Home Edition a o rok pozdµji, v b½eznu 2003 byla uvedena verze Microsoft Windows Server 2003. Kromµ architektury Intel x86 obsahovaly tyto systémy také podporu pro Intel IA-64, ²ímž se Windows NT poprvé posunuly k 64bitovému zpracovávání. Tato kniha je kone²nou prací o vnit½ních strukturách a práci Windows XP a Windows Server 2003. Mimo to však také nabízí pohled do budoucnosti Windows – k posunu do 64bitového zpracovávání tím, že se vµnuje architektu½e x64 (AMD64) uvedené v roce 2003 a ohlašované podpo½e Intelu (EM64T) v únoru 2004. Verze klienta i serveru plnµ podporující x64 se plánuje na první polovinu roku 2005 a tato kniha obsahuje mnoho zajímavých pohled¾ do detail¾ jeho implementace. Architektura x64 je po²átkem nové éry pro Windows NT v dobµ, kdy architektura x86 už jeví známky stárnutí. Tato architektura nabízí kompatibilitu 32bitové x86 p½i rychlosti takové, aby chránila starší investice do softwaru, a poskytuje schopnosti 64bitového adresování pro ty nejnovµjší aplikace. Tím se ochrání investice do 32bitového softwaru, ale zárove¹ dostanou Windows NT zbrusu nový rys, který jim pom¾že p½ežít v dalším desetiletí i potom. A²koli systém Windows NT prošel za posledních pár let nµkolika zmµnami, z¾stává zcela založen na základnµ kódu Windows NT. S tím, jak šel ²as a vynalézaly se stále nové a nové vµci, zmµnila se implementace mnoha vnit½ních rys¾ dost zásadnµ. Auto½i odvedli výbornou práci, když asimilovali detaily z kódové základny Windows NT a jejich r¾zné implementace od verze k verzi a od platformy k platformµ a p½i výbµru p½íklad¾ a nástroj¾, které ²tená½¾m umožní pochopit, jak to všechno pracuje. Každý vývojá½ opera²ních systém¾, který svou práci bere vážnµ, by mµl tuto knihu mít na stole. David N. Cutler samostatný programátor Microsoft Corporation
19
Pedmluva Microsoft Windows stály v centru mého života celých posledních 14 let. V tuto dobu se opera²ní systém od verze k verzi neustále vyvíjel do ší½ky i do hloubky. Vývoj Windows je v dnešním svµtµ jedním z nejd¾ležitµjších a nejkomplexnµjších projekt¾. Na vývoji Windows pracuje kolem 5 000 inženýr¾. V témµ½ všech kulturách tvo½í uživatelé Windows celé spektrum od tµch nejd¾ležitµjších pr¾myslových odvµtví až po ty nejmenší dµti. Uživatelé Windows vyžadují neustálá vylepšení v témµ½ každém ohledu – od schopnosti zvládat ty nejvµtší servery až po schopnost být tak jednoduché, aby je mohly používat i p½edškolní dµti. Windows zahrnují verze mnoha tvar¾ a velikostí, od zapouzd½ených verzí až po správu datových center. Všechny tyto produkty používají stejné vnit½ní struktury jádra Windows, které se vyvíjejí a vylepšují s každou novou verzí. Toto je ta nejúplnµjší kniha o vnit½ní architektu½e jádra Windows. Chcete-li se dozvµdµt, jak Windows pracují uvnit½, a to co nejrychleji, pak je toto kniha pro vás. Snažit se pochopit, jak všechny sou²ásti tak obrovského produktu fungují, je nadmíru tµžký úkol. Ale když za²nete u koncepcí jádra systému a odsud budete postupovat dále, je ta skláda²ka mnohem jednodušší. Stejnµ tak jak se vyvíjely Windows samotné, vyvíjela se i povaha této knihy, která vychází již ve ²tvrtém vydání. Celá léta jsme užívali d½ívµjší vydání této knihy ke školení nových zamµstnanc¾ firmy Microsoft, takže tento materiál je opravdu vyzkoušený a funguje. Pokud jste jako já, rádi zjišÆujete, jak vµci fungují. Mnµ osobnµ nikdy nesta²ily knihy, které jen popisují, jak nµco pracuje, nebo nabízejí „tipy a triky“. Když pochopíte,
22
Pedmluva
jak nµco pracuje uvnit½, víte, jak to lépe používat, umíte zlepšit výkon a bezpe²nost, dokážete odhalit p½í²iny selhání a taky je to mnohem zábavnµjší. Pokud jste jako já a chcete vidµt Windows „svle²ené z k¾že“, pak jste na správném místµ. Dave a Mark odvedli p½i podrobném popisu detail¾ vnit½ní struktury Windows výbornou práci. Nástroje, které popisují, jsou skvµlým zdrojem pro práci p½i výuce i diagnostikování. Až si tuhle knihu p½e²tete, budete mnohem lépe rozumµt tomu, jak zapadají opera²ní systémy dohromady, jaká jsou v systému nejnovµjší vylepšení a jak z nich získat co nejvíc. Ta cesta byla dlouhá – a ještµ stále pokra²uje. Tak se dejte do ²tení a pono½te se do hlubin jednoho z nejúžasnµjších opera²ních systém¾, který byl kdy vytvo½en. Jim Allchin viceprezident, Platforms Microsoft Corporation
Úvod Kniha Vnit»ní archtektura Microsoft Windows, jež je p½ekladem ²tvrého vydání anglického originálu Microsoft Windows Internals, je ur²ena pokro²ilým po²íta²ovým profesionál¾m (vývojá½¾m i správc¾m systém¾), kte½í chtµjí pochopit, jak pracují vnit½ní sou²ásti jádra opera²ních systém¾ Microsoft Windows 2000, Windows XP a Microsoft Windows Server 2003. S tµmito znalostmi mohou vývojá½i lépe rozumµt d¾vod¾m pro konkrétní rozhodnutí p½i výstavbµ aplikací pro platformu Windows. Tyto znalosti mohou také vývojá½¾m pomoci ½ešit komplexní problémy. Správci systém¾ mohou tyto informace využít také, protože když pochopí, jak opera²ní systém funguje „uvnit½“, bude jim jasnµjší chování a výkonnost systému a snadnµji se jim budou hledat p½í²iny problém¾. Jestliže si tuto knihu p½e²tete, lépe pochopíte, jak Windows fungují a pro² se chovají tak, jak se chovají.
Struktura knihy První dvµ kapitoly (Principy a nástroje a Architektura systému) pokládají základy vysvµtlením pojm¾ a popisem princip¾, které se vyskytují v celé knize. Následující t½i kapitoly – Mechanismy systému, Mechanismy správy a Spouštµní a vypínání – popisují klí²ové základní mechanismy systému. Dalších osm kapitol vysvµtluje komponenty jádra opera²ního systému. Poslední kapitola se týká analýzy výpisu pamµti p½i havárii.
24
Úvod
Historie knihy Toto je ²tvrté vydání knihy, která se p¾vodnµ jmenovala Inside Windows NT (Microsoft Press, 1992) a napsala ji Helen Custerová (ještµ p½ed prvním vydáním Microsoft Windows NT 3.1). Inside Windows NT byla první knihou publikovanou o Windows NT a poskytovala základní vhled do architektury a návrhu systému. Druhé vydání této knihy (Microsoft Press 1998) napsal David Solomon a v ²eském p½ekladu ji vydal Computer Press pod názvem Windows NT pro administrátory a vývojá»e. Bylo aktualizováno, aby obsahovalo Windows NT 4.0 a bylo mnohem podrobnµjší. Inside Windows 2000, t½etí vydání (Microsoft Press 2000) napsali David Solomon a Mark Russinovich. Obsahovalo nová témata, jako spouštµní a vypínání, vnit½ní architekturu služeb, vnit½ní architekturu registru, ovlada²e systému soubor¾ a práci v síti a zmµny jádra ve Windows 2000, jako t½eba Windows Driver Model (WDM), Plug and Play, správu napájení, Windows Management Instrumentation (WMI), šifrování, objekty úloh a terminálové služby.
Zmgny ve dtvrtém vydání Toto poslední, ²tvrté vydání, nyní v originále nazvané Microsoft Windows Internals bylo aktualizováno tak, aby obsahovalo zmµny jádra u²inµné ve Windows XP a Windows Server 2003, v²etnµ podpory 64bitového systému. Byla aktualizována ²ást experiment¾ tak, aby odrážela zmµny v nástrojích a byly dodány nové experimenty, jež využívají nových nástroj¾, které nebyly ještµ k dispozici v dobµ t½etího vydání. Jelikož úrove¹ zmµn jádra od Windows 2000 do tµchto verzí byla relativnµ malá (ve srovnání se zmµnami mezi Windows NT 4.0 a Windows 2000), velká vµtšina tohoto textu je platná pro Windows 2000, Windows XP a Windows Server 2003. Proto pokud není specifikováno jinak, všechno platí pro všechny tyto t½i verze.
Experimenty I bez p½ístupu ke zdrojovému kódu se dá dozvµdµt hodnµ o vnit½ní struktu½e Windows z nástroj¾, které máme k dispozici, jako nap½íklad debugger jádra. Když je možné použít nµjaký nástroj pro odhalení nebo demonstrování nµjakých aspekt¾ chování vnit½ních struktur Windows, jsou kroky pro vyzkoušení nástroje popsány v odstave²cích nazvaných Experimenty. Ty se vyskytují po celé knize a my vám doporu²ujeme si je vyzkoušet p½i ²etbµ knihy – viditelné d¾kazy toho, jak Windows uvnit½ fungijí, vám p½iblíží celou problematiku názornµji než jen ²etba.
Témata, kterými se nezabýváme Windows jsou obrovský a složitý opera²ní systém. Tato kniha nepokrývá všechno d¾ležité pro vnit½ní strukturu Windows, ale místo toho se soust½edí na komponenty základny systému. Nap½íklad zde nepopisujeme COM+, infrastrukturu objektovµ orientovaného programování Windows, ani .NET Frameworking, základnu další generace aplikací s ½ízeným kódem.
Úvod
Protože toto je kniha o vnit½ní struktu½e, nejedná se o uživatelskou p½íru²ku nebo p½íru²ku pro správce, nepopisuje, jak Windows používat, konfigurovat nebo v nich programovat.
Varování a upozorngní Protože tato kniha popisuje nedokumentované chování vnit½ní architektury a ²innost opera²ního systému Windows (nap½. vnit½ní struktury jádra a funkce), podléhá tento obsah zmµnám ve verzích. (Externí rozhraní, jako nap½íklad Windows API, nepodléhají nekompatibilním zmµnám.) „Podléhání zmµnám“ nemusí znamenat, že detaily popsané v knize budou u r¾zných verzí jiné, ale nelze se spoléhat na to, že se mµnit v¾bec nebudou. Jakýkoli software, který pracuje na tµchto nedokumentovaných rozhraních, nemusí nutnµ pracovat v budoucích verzích Windows. A co je ještµ horší, software, který bµží v režimu jádra (jako ovlada²e za½ízení) a používá nedokumentovaná rozhraní, m¾že zkolabovat, když jej spustíte na novµjší verzi Windows.
Podpora Všechny informace v této knize by mµly být p½esné. Kdybyste p½ece jen narazili na problém, obraÆte se na zdroje, které uvádíme dále.
Od autor Tato kniha není dokonalá. Bezpochyby se v ní nalézají nµjaké nep½esnosti, nebo jsme možná vynechali nµjaká témata, kterými jsme se zabývat mµli. Pokud najdete nµco, o ²em si myslíte, že je to nesprávné, nebo si myslíte, že by zdµ mµl být materiál, který tu není, neváhejte a napište nám na
[email protected]. Aktualizace a opravy budou k dispozici na stránce www.sysinternals.com/windowsinternals.
25
26
Úvod
Od nakladatelství Microsoft také poskytuje opravy pro knihy na Internetu na následující adrese: http://www.microsoft.com/learning/support
Pro p½ipojení p½ímo ke službµ Microsoft Learning Knowledge Base a pro zadání dotazu týkajícího se problému, se kterým jste se setkali, si najdµte http://www.microsoft.com/learning/support/search.asp.
Kromµ toho, že zašlete reakce a poznámky p½ímo autor¾m, m¾žete také sv¾j komentá½, dotazy nebo nápady týkající se prezentace nebo používání této knihy zaslat do nakladatelství Microsoft: poštovní adresa: Microsoft Press Attn.: Windows Internals Editors One Microsoft Way Redmond, WA 98052-6399 e-mail:
[email protected]
Podpora produktu se na výše zmínµných adresách neposkytuje. Informace týkající se podpory Microsoft Windows naleznete na stránkách www.microsoft.com/windows. M¾žete také využít telefonické služby standardní podpory na ²ísle (425) 635-7011 ve všední dny od 6 do 18 hodin (tichomo½ského ²asu) nebo podpory online na support.microsoft.com/support.
Od deského vydavatele Také nakladatelství Computer Press, které pro vás tuto knihu p½eložilo, stojí o zpµtnou vazbu a bude na vaše podnµty a dotazy reagovat. M¾žete se obrátit na následující adresy: Computer Press redakce po²íta²ové literatury námµstí 28. dubna 48 635 00 Brno-Bystrc nebo
[email protected].
Další informace a p½ípadné opravy ²eského vydání knihy najdete v budoucnu na adrese http://knihy.cpress.cz/k1190. Prost½ednictvím uvedené adresy m¾žete též naší redakci zaslat komentá½ nebo dotaz týkající se knihy. Na vaše reakce se srde²nµ tµšíme.