Darmowy fragment publikacji:
Tytuł oryginału: Windows Internals, Part 1: System architecture, processes, threads,
memory management, and more (7th Edition)
Tłumaczenie: Piotr Pilch (wstęp, rozdz. 1, 3 – 6), Zbigniew Waśko (rozdz. 2, 7)
ISBN: 978-83-283-3901-9
Authorized translation from the English language edition, entitled: WINDOWS INTERNALS, PART
l: SYSTEM ARCHITECTURE, PROCESSES, THREADS, MEMORY MANAGEMENT, AND
MORE, Seventh Edition; ISBN 0735684189; by Pavel Yosifovich; and by Alex Ionescu; and by Mark E.
Russinovich; and David A. Solomon; published by Pearson Education, Inc, publishing as Microsoft
Press. Copyright © 2017 by Pavel Yosifovich, Alex Ionescu, Mark E. Russinovich and David A.
Solomon
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including photocopying, recording or by any information storage
retrieval system, without permission from Pearson Education, Inc.
Polish language edition published by HELION S.A. Copyright © 2018.
Microsoft and the trademarks listed at https://www.microsoft.com on the “Trademarks” webpage are
trademarks of the Microsoft group of companies. All other marks are property of their respective
owners.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani
za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo
HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe
z wykorzystania informacji zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/winod7
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
• Kup książkę
• Poleć książkę
• Oceń książkę
• Księgarnia internetowa
• Lubię to! » Nasza społeczność
Spis tre(cid:258)ci
Rozdzia(cid:239) 1.
Wprowadzenie ............................................................................................ 13
Zagadnienia i narz(cid:218)dzia .............................................................................. 19
Wersje systemu operacyjnego Windows ..............................................................................19
Windows 10 i przyszłe wersje systemu Windows ........................................................21
Windows 10 i platforma OneCore .................................................................................22
Podstawowe pojęcia i terminy ...............................................................................................22
Interfejs API systemu Windows .....................................................................................22
Usługi, funkcje i programy ..............................................................................................26
Procesy ...............................................................................................................................27
Wątki ..................................................................................................................................37
Zadania ...............................................................................................................................40
Pamięć wirtualna ..............................................................................................................40
Porównanie trybu jądra i trybu użytkownika ...............................................................43
Hipernadzorca ...................................................................................................................47
Oprogramowanie sprzętowe ...........................................................................................49
Usługi terminalowe i wiele sesji ......................................................................................49
Obiekty i dojścia ................................................................................................................50
Zabezpieczenia ..................................................................................................................51
Rejestr .................................................................................................................................53
Unicode ..............................................................................................................................53
Analizowanie wewnętrznych mechanizmów systemu Windows .....................................55
Monitor wydajności i Monitor zasobów .......................................................................56
Debugowanie jądra ...........................................................................................................58
Windows Software Development Kit ............................................................................64
Windows Driver Kit .........................................................................................................64
Narzędzia z witryny Sysinternals ...................................................................................65
Podsumowanie .........................................................................................................................65
Poleć książkęKup książkęSPIS TRE(cid:165)CI
Rozdzia(cid:239) 2. Architektura systemu .................................................................................. 67
Wymagania i cele projektowe ................................................................................................67
Model systemu operacyjnego .................................................................................................68
Opis architektury systemu .....................................................................................................69
Przenośność .......................................................................................................................72
Wieloprocesorowość symetryczna .................................................................................73
Skalowalność .....................................................................................................................75
Różnice między wersjami kliencką i serwerową ..........................................................76
Wersja Checked build (kompilacja testowa) ................................................................79
Krótki opis architektury z mechanizmami bezpieczeństwa opartymi na wirtualizacji ....81
Kluczowe komponenty systemu ............................................................................................84
Podsystemy środowiskowe i biblioteki podsystemów ................................................84
Inne podsystemy ...............................................................................................................91
Centrum wykonawcze ......................................................................................................96
Jądro ....................................................................................................................................99
Warstwa abstrakcji sprzętowej .....................................................................................102
Sterowniki urządzeń .......................................................................................................105
Procesy systemowe .........................................................................................................112
Podsumowanie .......................................................................................................................124
Rozdzia(cid:239) 3. Procesy i zadania ....................................................................................... 125
Tworzenie procesu ................................................................................................................125
Argumenty funkcji CreateProcess* ..............................................................................127
Tworzenie nowoczesnych procesów systemu Windows ..........................................128
Tworzenie innych rodzajów procesów ........................................................................128
Wewnętrzne elementy procesów .........................................................................................129
Chronione procesy ................................................................................................................137
Protected Process Light (PPL) ......................................................................................138
Obsługa zewnętrznych procesów przez rozszerzenie PPL .......................................143
Procesy minimalne i procesy Pico ......................................................................................144
Procesy minimalne .........................................................................................................144
Procesy Pico .....................................................................................................................145
Programy Trustlet (bezpieczne procesy) ...........................................................................147
Struktura programu Trustlet ........................................................................................148
Metadane zasad programów Trustlet ..........................................................................149
Atrybuty programów Trustlet ......................................................................................150
Programy Trustlet wbudowane w system ...................................................................151
Tożsamość programów Trustlet ...................................................................................151
Usługi izolowanego trybu użytkownika ......................................................................152
Wywołania systemowe dostępne dla programów Trustlet ......................................153
Przepływ funkcji CreateProcess ..........................................................................................155
Etap 1. Przekształcanie i sprawdzanie poprawności parametrów i flag .................157
Etap 2. Otwieranie obrazu do wykonania ...................................................................162
Etap 3. Tworzenie obiektu procesu wykonawczego systemu Windows ................165
6
Poleć książkęKup książkęSPIS TRE(cid:165)CI
Etap 4. Tworzenie początkowego wątku oraz jego stosu i kontekstu .....................171
Etap 5. Przeprowadzanie inicjalizacji
powiązanej z podsystemem systemu Windows .......................................................174
Etap 6. Rozpoczęcie wykonywania wątku początkowego .........................................176
Etap 7. Przeprowadzanie inicjalizacji procesu w kontekście nowego procesu ......176
Kończenie procesu .................................................................................................................183
Program ładujący obrazy ......................................................................................................184
Wczesna inicjalizacja procesu .......................................................................................186
Przekierowywanie i rozwiązywanie nazw bibliotek DLL .........................................189
Baza danych załadowanych modułów .........................................................................194
Analizowanie importu ...................................................................................................199
Inicjalizacja procesu po imporcie .................................................................................200
Technologia SwitchBack ................................................................................................201
Mechanizm API Sets ......................................................................................................204
Zadania ....................................................................................................................................206
Limity zadań ....................................................................................................................207
Obsługa zadania ..............................................................................................................209
Zadania zagnieżdżone ....................................................................................................209
Kontenery systemu Windows (silosy serwerowe) .....................................................213
Podsumowanie .......................................................................................................................222
Rozdzia(cid:239) 4. W(cid:200)tki ......................................................................................................... 223
Tworzenie wątków ................................................................................................................223
Wewnętrzne mechanizmy wątków .....................................................................................224
Struktury danych ............................................................................................................224
Powstanie wątku .............................................................................................................236
Sprawdzanie aktywności wątków ........................................................................................237
Ograniczenia wątków chronionych procesów ...........................................................242
Planowanie wątków ...............................................................................................................243
Przegląd planowania w systemie Windows ................................................................243
Poziomy priorytetów ......................................................................................................245
Stany wątków ...................................................................................................................252
Baza danych dyspozytora ..............................................................................................258
Kwant ...............................................................................................................................260
Zwiększanie priorytetu ..................................................................................................268
Przełączanie kontekstu ..................................................................................................286
Warianty planowania .....................................................................................................288
Wątki bezczynności ........................................................................................................292
Wstrzymanie wątków .....................................................................................................296
„Głębokie zamrożenie” ..................................................................................................296
Wybór wątku ...................................................................................................................298
Systemy wieloprocesorowe ...........................................................................................300
Wybór wątku w systemach wieloprocesorowych ......................................................316
7
Poleć książkęKup książkęSPIS TRE(cid:165)CI
Rozdzia(cid:239) 5.
8
Wybór procesora ............................................................................................................317
Planowanie heterogeniczne (big.LITTLE) ..................................................................320
Planowanie oparte na grupach ............................................................................................322
Planowanie dynamiczne ze sprawiedliwym udostępnianiem ..................................323
Limity wykorzystania procesora ...................................................................................327
Dynamiczne dodawanie i usuwanie procesorów .......................................................330
Fabryki procesów roboczych (pule wątków) .....................................................................332
Tworzenie fabryki wątków roboczych .........................................................................333
Podsumowanie .......................................................................................................................336
Zarz(cid:200)dzanie pami(cid:218)ci(cid:200) ................................................................................ 337
Wprowadzenie do menedżera pamięci ..............................................................................337
Składniki menedżera pamięci .......................................................................................338
Strony małe i duże ..........................................................................................................339
Sprawdzanie wykorzystania pamięci ...........................................................................341
Synchronizacja wewnętrzna ..........................................................................................344
Usługi menedżera pamięci ...................................................................................................345
Stany stron i przydzielanie pamięci .............................................................................347
Ładunek deklaracji i limit deklaracji ............................................................................350
Blokowanie pamięci .......................................................................................................350
Ziarnistość alokacji .........................................................................................................351
Pamięć współdzielona i pliki mapowane ....................................................................351
Ochrona pamięci ............................................................................................................354
Zapobieganie wykonywaniu danych ...........................................................................356
Kopiowanie przy zapisie ................................................................................................359
Okienkowe poszerzanie przestrzeni adresowej ..........................................................361
Sterty w trybie jądra (systemowe pule pamięci) ................................................................363
Rozmiary pul ...................................................................................................................363
Monitorowanie wykorzystania puli .............................................................................365
Listy asocjacyjne ..............................................................................................................369
Menedżer sterty .....................................................................................................................370
Sterty procesu ..................................................................................................................371
Typy stert .........................................................................................................................372
Sterta NT ..........................................................................................................................372
Synchronizacja sterty .....................................................................................................373
Sterta o małej fragmentacji ............................................................................................373
Sterta segmentowa ..........................................................................................................374
Bezpieczeństwo stert ......................................................................................................379
Funkcje debugowania sterty ..........................................................................................380
Mechanizm pageheap ....................................................................................................381
Sterta odporna na błędy .................................................................................................385
Układy wirtualnej przestrzeni adresowej ...........................................................................386
Układy przestrzeni adresowej na platformie x86 .......................................................388
Układ systemowej przestrzeni adresowej na platformie x86 ...................................391
Poleć książkęKup książkęSPIS TRE(cid:165)CI
Przestrzeń sesji na platformie x86 ................................................................................391
Systemowe wpisy tabeli stron .......................................................................................393
Układ przestrzeni adresowej na platformie ARM .....................................................394
Układ przestrzeni adresowej 64-bitowej .....................................................................394
Ograniczenia adresowania wirtualnego na platformie x64 ......................................396
Dynamiczne zarządzanie systemową wirtualną przestrzenią adresową ................397
Przydziały systemowej wirtualnej przestrzeni adresowej .........................................402
Układ przestrzeni adresowej użytkownika .................................................................403
Tłumaczenie adresów ............................................................................................................409
Tłumaczenie adresów wirtualnych na platformie x86 ..............................................409
Asocjacyjny bufor translacji ..........................................................................................415
Tłumaczenie adresów wirtualnych na platformie x64 ..............................................418
Tłumaczenie adresów wirtualnych na platformie ARM ...........................................419
Obsługa błędów strony .........................................................................................................420
Niewłaściwe wpisy PTE .................................................................................................422
Prototypowe wpisy PTE ................................................................................................423
Operacje wejścia-wyjścia w stronicowaniu .................................................................425
Błąd strony kolidującej ..................................................................................................425
Błędy stron klastrowanych ............................................................................................426
Pliki stronicowania .........................................................................................................427
Ładunek deklaracji i systemowy limit deklaracji .......................................................432
Ładunek deklaracji a rozmiar pliku stronicowania ...................................................435
Stosy .........................................................................................................................................438
Stosy użytkownika ..........................................................................................................438
Stosy jądra ........................................................................................................................439
Stos DPC ..........................................................................................................................440
Deskryptory adresów wirtualnych ......................................................................................440
Struktury VAD procesu .................................................................................................441
Rotacja deskryptorów adresów wirtualnych ...............................................................443
NUMA ..............................................................................................................................443
Obiekty sekcji .........................................................................................................................444
Zestawy robocze .....................................................................................................................452
Stronicowanie na żądanie ..............................................................................................452
Logiczny prefetcher i funkcja ReadyBoot ...................................................................453
Strategia rozmieszczania ................................................................................................456
Zarządzanie zestawami roboczymi ..............................................................................457
Menedżer zestawu równowagi i program wymiany ..................................................461
Systemowe zestawy robocze ..........................................................................................462
Powiadomienia o stanie pamięci ..................................................................................463
Baza danych numerów stron pamięci ................................................................................465
Dynamika list stron ........................................................................................................469
Priorytet stronicowy .......................................................................................................477
Moduł zapisujący strony zmodyfikowane i zmapowane ..........................................479
9
Poleć książkęKup książkęSPIS TRE(cid:165)CI
Rozdzia(cid:239) 6.
10
Struktury danych PFN ...................................................................................................481
Rezerwacja pliku stronicowania ...................................................................................485
Ograniczenia pamięci fizycznej ...........................................................................................488
Limity pamięci w klienckich wersjach systemu Windows .......................................489
Kompresja pamięci ................................................................................................................491
Ilustracja kompresji ........................................................................................................492
Architektura kompresji ..................................................................................................495
Partycje pamięci .....................................................................................................................498
Scalanie pamięci .....................................................................................................................501
Etap wyszukiwania .........................................................................................................502
Etap klasyfikacji ..............................................................................................................503
Etap scalania stron ..........................................................................................................504
Konwersja wpisu PTE z prywatnego na współdzielony ............................................505
Zwalnianie stron scalonych ...........................................................................................506
Enklawy pamięci ....................................................................................................................510
Interfejs programowy .....................................................................................................511
Przygotowywanie enklaw pamięci ...............................................................................512
Konstruowanie enklawy ................................................................................................512
Wczytywanie danych do enklawy ................................................................................514
Inicjalizacja enklawy .......................................................................................................515
Proaktywne zarządzanie pamięcią (mechanizm SuperFetch) ........................................515
Komponenty ....................................................................................................................516
Śledzenie i rejestrowanie ................................................................................................518
Scenariusze ......................................................................................................................519
Priorytet strony oraz ponowne bilansowanie .............................................................520
Niezawodność działania ................................................................................................522
Funkcja Ready Boost ......................................................................................................523
Funkcja Ready Drive ......................................................................................................524
Dublowanie procesu .......................................................................................................525
Podsumowanie .......................................................................................................................527
System operacji wej(cid:258)cia-wyj(cid:258)cia ............................................................... 529
Komponenty systemu operacji wejścia-wyjścia ................................................................529
Menedżer operacji wejścia-wyjścia ..............................................................................531
Typowe przetwarzanie operacji wejścia-wyjścia ........................................................532
Poziomy żądań przerwania IRQL i wywołania DPC .......................................................535
Poziomy żądań przerwania ...........................................................................................535
Wywołania DPC .............................................................................................................537
Sterowniki urządzeń ..............................................................................................................539
Typy sterowników urządzeń .........................................................................................539
Struktura sterownika ......................................................................................................545
Obiekty sterowników i obiekty urządzeń ....................................................................548
Otwieranie urządzeń ......................................................................................................555
Poleć książkęKup książkęSPIS TRE(cid:165)CI
Przetwarzanie operacji wejścia-wyjścia ..............................................................................559
Typy operacji wejścia-wyjścia .......................................................................................560
Pakiety żądań operacji wejścia-wyjścia IRP ................................................................563
Żądanie operacji wejścia-wyjścia wysyłane do jednowarstwowego sterownika
urządzenia .....................................................................................................................574
Żądania operacji wejścia-wyjścia kierowane do sterowników z warstwami ..........586
Operacja wejścia-wyjścia agnostyczna względem wątków .......................................589
Anulowanie operacji wejścia-wyjścia ..........................................................................589
Porty ukończenia operacji wejścia-wyjścia .................................................................594
Określanie priorytetu operacji wejścia-wyjścia ..........................................................599
Powiadomienia kontenerów .........................................................................................606
Driver Verifier ........................................................................................................................606
Opcje weryfikacji powiązane z operacjami wejścia-wyjścia .....................................608
Opcje weryfikacji związane z pamięcią .......................................................................609
Menedżer technologii PnP ...................................................................................................614
Poziom obsługi technologii Plug and Play .................................................................615
Wyliczanie urządzeń ......................................................................................................615
Stosy urządzeń .................................................................................................................618
Obsługa technologii Plug and Play przez sterowniki ................................................625
Instalacja sterownika Plug and Play .............................................................................627
Ładowanie i instalowanie ogólnego sterownika ................................................................631
Ładowanie sterowników ................................................................................................631
Instalacja sterownika ......................................................................................................633
Środowisko WDF ..................................................................................................................634
Środowisko KMDF .........................................................................................................635
Środowisko UMDF .........................................................................................................644
Menedżer zasilania ................................................................................................................648
Stany Connected Standby i Modern Standby .............................................................652
Działanie menedżera zasilania ......................................................................................652
Kontrola zasilania urządzenia przez aplikację i sterownik .......................................657
Środowisko zarządzania zasilaniem .............................................................................658
Żądania dostępności zasilania .......................................................................................660
Podsumowanie .......................................................................................................................662
Rozdzia(cid:239) 7. Bezpiecze(cid:241)stwo ......................................................................................... 663
Klasy bezpieczeństwa ............................................................................................................663
Kryteria oceny zaufanych systemów komputerowych (TCSEC) ............................663
Wspólne kryteria ............................................................................................................665
Składniki systemu zabezpieczeń ..........................................................................................666
Bezpieczeństwo oparte na wirtualizacji ..............................................................................669
Ochrona poświadczeń ....................................................................................................670
Ochrona urządzenia .......................................................................................................676
11
Poleć książkęKup książkęOchrona obiektów .................................................................................................................678
Sprawdzanie dostępu .....................................................................................................681
Identyfikatory zabezpieczeń ..........................................................................................684
Wirtualne konta usług ...................................................................................................706
Deskryptory zabezpieczeń i kontrola dostępu ...........................................................711
Dynamiczna kontrola dostępu .....................................................................................728
Interfejs AuthZ .......................................................................................................................728
Warunkowe wpisy ACE .................................................................................................730
Prawa i przywileje konta .......................................................................................................731
Prawa konta .....................................................................................................................732
Przywileje .........................................................................................................................732
Superprzywileje ...............................................................................................................739
Tokeny dostępowe procesów i wątków ..............................................................................740
Inspekcje zabezpieczeń .........................................................................................................740
Inspekcje dostępu do obiektów ....................................................................................742
Globalne zasady inspekcji ..............................................................................................745
Ustawienia zaawansowanych zasad inspekcji ............................................................747
Kontenery aplikacji ...............................................................................................................748
Przegląd aplikacji UWP .................................................................................................748
Kontener aplikacji ...........................................................................................................751
Logowanie ...............................................................................................................................774
Inicjacja procesu Winlogon ..........................................................................................776
Etapy logowania użytkownika ......................................................................................777
Wzmocnione uwierzytelnianie .....................................................................................783
Biometria w systemie Windows ...................................................................................784
Windows Hello ...............................................................................................................786
Kontrola konta użytkownika i wirtualizacja ......................................................................787
Wirtualizacja systemu plików i rejestru ......................................................................788
Podwyższanie uprawnień ..............................................................................................794
Osłabianie exploitów .............................................................................................................801
Zasady osłabiania procesów ..........................................................................................803
Integralność przepływu sterowania .............................................................................808
Asercje bezpieczeństwa ..................................................................................................821
Identyfikacja aplikacji ...........................................................................................................826
AppLocker ..............................................................................................................................827
Zasady ograniczeń oprogramowania ..................................................................................832
Ochrona przed poprawkami jądra ......................................................................................834
PatchGuard ......................................................................................................................835
HyperGuard ....................................................................................................................839
Podsumowanie .......................................................................................................................841
Skorowidz ................................................................................................. 842
SPIS TRE(cid:165)CI
12
Poleć książkęKup książkęROZDZIA(cid:146) 1.
Zagadnienia i narz(cid:218)dzia
W rozdziale zostaną zaprezentowane zagadnienia i terminy związane z systemem operacyjnym
Microsoft Windows, które będą wykorzystywane w książce, takie jak interfejs API systemu
Windows, procesy, wątki, pamięć wirtualna, tryb jądra i tryb użytkownika, obiekty, dojścia,
zabezpieczenia i rejestr. Zostaną również przedstawione narzędzia, których możesz użyć
do poznawania wewnętrznych mechanizmów systemu Windows, takie jak debugger jądra,
Monitor wydajności oraz kluczowe narzędzia oferowane przez witrynę Windows Sysinternals
(http://www.microsoft.com/technet/sysinternals). Poza tym wyjaśnimy, jak zastosować zestawy
Windows Driver Kit (WDK) oraz Windows Software Development Kit (SDK) w roli zasobów
służących do znajdowania dodatkowych informacji o wewnętrznych mechanizmach
systemu Windows.
Zadbaj o zrozumienie wszystkiego, co zaprezentowano w tym rozdziale, ponieważ
w przypadku reszty książki założono, że tak będzie.
Wersje systemu operacyjnego Windows
W książce omówiono najnowsze wersje systemów operacyjnych Microsoft Windows
przeznaczonych dla klientów i serwerów, a mianowicie system Windows 10 (wersja 32-bitowa dla
procesorów x86 i ARM oraz wersja 64-bitowa dla procesorów x64) oraz system Windows Server
2012 R2 (dostępny tylko w wersji 64-bitowej). Jeśli nie zostało to wyraźnie określone, treść książki
dotyczy wszystkich tych wersji. W roli podstawowych informacji w tabeli 1.1 wyszczególniono
nazwy systemów Windows wraz z numerem wewnętrznym ich wersji oraz datą opublikowania.
Począwszy od systemu Windows 7, numery wersji wydają się schodzić z dobrze zdefiniowanej
drogi. W jego przypadku numer wersji to 6.1, a nie 7. Gdy w momencie pojawienia się systemu
Windows Vista numer wersji podniesiono na 6.0, z powodu popularności systemu Windows XP
niektóre aplikacje nie były w stanie wykryć poprawnego systemu operacyjnego, ponieważ projektanci
zastosowali sprawdzanie głównego numeru większego lub równego 5 oraz dodatkowego numeru
większego lub równego 1, co w przypadku systemu Windows Vista nie było spełnione. Wyciągając
z tego lekcję, w celu zminimalizowania takich niezgodności firma Microsoft zdecydowała się
określić główny numer wersji jako 6 oraz dodatkowy numer wersji jako 2 (większe niż 1).
W wypadku systemu Windows 10 numer wersji został jednak uaktualniony do 10.0.
Poleć książkęKup książkęWINDOWS OD (cid:165)RODKA
TABELA 1.1. Wersje systemu operacyjnego Windows
Nazwa produktu
Windows NT 3.1
Windows NT 3.5
Windows NT 3.51
Windows NT 4.0
Windows 2000
Windows XP
Windows Server 2003
Windows Server 2003 R2
Windows Vista
Windows Server 2008
Windows 7
Windows Server 2008 R2
Windows 8
Windows Server 2012
Windows 8.1
Windows Server 2012 R2
Windows 10
Windows 10 version 1511
Windows 10 version 1607 (Anniversary Update)
Windows Server 2016
Numer wewn(cid:218)trzny
wersji
3.1
3.5
3.51
4.0
5.0
5.1
5.2
5.2
6.0
6.0 (Service Pack 1)
6.1
6.1
6.2
6.2
6.3
6.3
10.0 (kompilacja 10240)
10.0 (kompilacja 10586)
10.0 (kompilacja 14393)
10.0 (kompilacja 14393)
Data opublikowania
Lipiec 1993 r.
Wrzesień 1994 r.
Maj 1995 r.
Lipiec 1996 r.
Grudzień 1999 r.
Sierpień 2001 r.
Marzec 2003 r.
Grudzień 2005 r.
Styczeń 2007 r.
Marzec 2008 r.
Październik 2009 r.
Październik 2009 r.
Październik 2012 r.
Październik 2012 r.
Październik 2013 r.
Październik 2013 r.
Lipiec 2015 r.
Listopad 2015 r.
Lipiec 2016 r.
Październik 2016 r.
Uwaga. Począwszy od systemu Windows 8, funkcja API GetVersionEx systemu Windows
zwraca domyślnie jego numer wersji jako 6.2 (Windows 8) niezależnie od faktycznie używanego
systemu operacyjnego (funkcja ta jest też określona jako niezalecana). Ma to na celu
zminimalizowanie problemów ze zgodnością, ale również jest to wskaźnik, że w większości
sytuacji sprawdzanie wersji systemu nie jest najlepszym rozwiązaniem. Wynika to z tego,
że niektóre komponenty mogą być instalowane niestandardowo bez zgodności z oficjalną
wersją systemu Windows. Jeśli jednak wymagasz informacji o faktycznej wersji systemu
operacyjnego, możesz ją uzyskać za pomocą funkcji VerifyVersionInfo lub nowszych
pomocniczych interfejsów API wersji, takich jak IsWindows8OrGreater, IsWindows8Point1OrGreater,
IsWindows10OrGreater i IsWindowsServer oraz innych podobnych. Dodatkowo zgodność
z systemem operacyjnym może zostać wskazana w manifeście pliku wykonywalnego,
co powoduje zmianę wyników działania funkcji VerifyVersionInfo.
20
Poleć książkęKup książkęROZDZIA(cid:146) 1. (cid:132) ZAGADNIENIA I NARZ(cid:125)DZIA
Informacje o wersji systemu Windows możesz wyświetlić za pomocą narzędzia ver działającego
w trybie wiersza poleceń lub przy użyciu narzędzia winver z interfejsem graficznym. Poniżej
zaprezentowano zrzut ekranu narzędzia winver uruchomionego w systemie Windows 10 Home
(wersja 1607).
Powyższe okno zawiera też numer kompilacji systemu Windows (w przykładzie 14393.1358),
który może być przydatny dla uczestników programu Windows Insider (osób, które zarejestrowały
się w celu uzyskania możliwości zaznajomienia się z wcześniejszymi wersjami testowymi systemu
Windows). Numer kompilacji może być też pomocny przy zarządzaniu aktualizacjami zabezpieczeń,
ponieważ informuje o tym, jaki zainstalowano poziom poprawek.
Windows 10 i przysz(cid:239)e wersje systemu Windows
W przypadku systemu Windows 10 firma Microsoft zadeklarowała, że będzie aktualizować
system Windows szybciej, niż następowało to wcześniej. Nie pojawi się oficjalnie Windows 11.
Zamiast tego w ramach usługi Windows Update (lub innego modelu usług dla przedsiębiorstw)
istniejący system Windows 10 zostanie zaktualizowany do nowszej wersji. Gdy pisano książkę,
nastąpiły dwie takie aktualizacje: w listopadzie 2015 r. (aktualizacja znana jako wersja 1511,
odwołująca się do roku i miesiąca udostępnienia) oraz w lipcu 2016 r. (wersja 1607, która jest
znana również pod marketingową nazwą Anniversary Update).
Uwaga. Wewnętrznie firma Microsoft w dalszym ciągu falowo tworzy wersje systemu
Windows. Na przykład początkowa wersja systemu Windows 10 miała nazwę kodową
Threshold 1, natomiast aktualizacja z listopada 2015 r. nosiła nazwę Threshold 2. Trzy
kolejne fazy aktualizacji mają nazwy Redstone 1 (wersja 1607), Redstone 2 i Redstone 3.
21
Poleć książkęKup książkęWINDOWS OD (cid:165)RODKA
Windows 10 i platforma OneCore
Przez lata zostało rozwiniętych kilka wariantów systemu Windows. Oprócz najpopularniejszego
systemu Windows działającego na komputerach PC, dostępna jest konsola do gier Xbox 360
z odmianą systemu Windows 2000. Urządzenie Windows Phone 7 wyposażone jest w wariant
oparty na systemie Windows CE (system operacyjny czasu rzeczywistego firmy Microsoft).
Utrzymywanie i rozszerzanie wszystkich tych baz kodu jest oczywiście utrudnione. W związku
z tym firma Microsoft zdecydowała się na połączenie w jedno jąder oraz pomocniczych plików
binarnych podstawowej platformy. Proces ten rozpoczął się w przypadku systemów Windows 8
i Windows Phone 8, które korzystają ze wspólnego jądra (systemy Windows 8.1 i Windows
Phone 8.1 mają jednakowy interfejs API środowiska uruchomieniowego systemu Windows).
Proces łączenia zakończono w systemie Windows 10. Uzyskana wspólna platforma nosi nazwę
OneCore. Działa ona na komputerach PC, telefonach, konsoli do gier Xbox One oraz
na urządzeniach HoloLens i Internet of Things (IoT), takich jak Raspberry Pi 2.
Oczywiście wszystkie te rodzaje urządzeń różnią się znacząco od siebie. W wypadku części
z nich niektóre funkcje są po prostu niedostępne. Na przykład obsługa myszy lub fizycznej
klawiatury w przypadku urządzenia HoloLens nie ma sensu, dlatego nie możesz oczekiwać
obecności odpowiednich komponentów w wersji systemu Windows 10 przeznaczonej dla tego
urządzenia. Jednakże jądro, sterowniki i binaria podstawowej platformy są zasadniczo takie same
(wraz z ustawieniami opartymi na rejestrze i/lub zasadach, które mają sens ze względu na wydajność
lub z innych powodów). Tego rodzaju przykładowa zasada zostanie zaprezentowana w punkcie
„Mechanizm API Sets” rozdziału 3., „Procesy i zadania”.
W książce obszernie omówiono wewnętrzne mechanizmy jądra platformy OneCore,
niezależnie od tego, na jakim urządzeniu działa. Eksperymenty opisane w książce koncentrują się
jednak na komputerze stacjonarnym wyposażonym w mysz i klawiaturę (głównie ze względu na
wygodę), ponieważ nie jest łatwe (a czasami oficjalnie niemożliwe) przeprowadzenie doświadczeń
w przypadku innych urządzeń, takich jak telefony lub konsola Xbox One.
Podstawowe poj(cid:218)cia i terminy
W poniższych punktach dokonano wprowadzenia do najbardziej fundamentalnych pojęć
obecnych w systemie Windows, które mają kluczowe znaczenie dla zagadnień omówionych
w pozostałej części książki. Wiele pojęć, takich jak procesy, wątki i pamięć wirtualna, objaśniono
szczegółowo w kolejnych rozdziałach.
Interfejs API systemu Windows
Interfejs programowania aplikacji API (ang. Application Programming Interface) systemu
Windows to systemowy interfejs programowania trybu użytkownika zapewniający dostęp do
rodziny systemów operacyjnych Windows. Przed wprowadzeniem 64-bitowych wersji systemu
Windows interfejs programowania 32-bitowych wersji tego systemu nosił nazwę Win32 API,
aby odróżnić go od oryginalnego 16-bitowego interfejsu API systemu Windows, który był
interfejsem programowania pierwotnych 16-bitowych wersji systemu Windows. W książce
termin interfejs API systemu Windows odnosi się zarówno do 32-bitowych, jak i 64-bitowych
interfejsów programowania.
22
Poleć książkęKup książkęROZDZIA(cid:146) 1. (cid:132) ZAGADNIENIA I NARZ(cid:125)DZIA
Uwaga. Czasami w miejsce terminu interfejs API systemu Windows używamy terminu
Win32 API. Oba terminy odnoszą się jednak do wariantów 32- i 64-bitowych.
Uwaga. Interfejs API systemu Windows opisano w dokumentacji zestawu SDK systemu
Windows (zajrzyj do punktu „Windows Software Development Kit” zamieszczonego
w dalszej części rozdziału). Dokumentacja jest dostępna bezpłatnie pod adresem
https://developer.microsoft.com/en-us/windows/desktop/develop. Dołączono ją również
do wszystkich poziomów subskrypcji w portalu Microsoft Developer Network (MSDN),
z którym związany jest program wsparcia projektantów aplikacji. Znakomity opis tego,
jak utworzyć podstawowy interfejs API systemu Windows, zamieszczono w książce
Windows via C/C++. Fifth Edition napisanej przez Jeffreya Richtera i Christophe’a
Nasarre’a (Microsoft Press, 2007 r.).
Warianty interfejsu API systemu Windows
Pierwotnie interfejs API systemu Windows składał się wyłącznie z funkcji napisanych w stylu
języka C. Obecnie projektanci mogą skorzystać z tysięcy takich funkcji. Język C był naturalnym
wyborem w początkach istnienia systemu Windows, ponieważ stanowił najmniejszy wspólny
mianownik (oznacza to, że kod napisany w tym języku był dostępny również z poziomu innych
języków), a ponadto był na tyle niskopoziomowy, aby udostępniać usługi systemu operacyjnego.
Wadą była niewielka liczba funkcji oraz brak spójności nazewniczej i logicznego grupowania
(na przykład przestrzenie nazw w języku C++). Rezultatem tych trudności było utworzenie kilku
nowszych interfejsów API korzystających z innego mechanizmu API, czyli modelu COM
(ang. Component Object Model).
Model COM został pierwotnie zaprojektowany w celu umożliwienia aplikacjom pakietu
Microsoft Office komunikacji i wymiany danych między dokumentami (na przykład osadzanie
wykresu Excela w dokumencie Worda lub prezentacji programu PowerPoint). Taka możliwość
nosi nazwę funkcji OLE (ang. Object Linking and Embedding). Oryginalnie funkcja ta została
zaimplementowana za pomocą starego mechanizmu przesyłania komunikatów systemu
Windows o nazwie Dynamic Data Exchange (DDE). Mechanizm ten z natury był ograniczony,
dlatego opracowano nową metodę komunikacji, czyli model COM. Tak naprawdę, początkowo
w momencie opublikowania około 1993 r. miał on nazwę OLE 2.
Model COM oparty jest na dwóch podstawowych zasadach. Po pierwsze, klienty komunikują się
z obiektami (czasami nazywanymi obiektami serwerowymi COM) za pośrednictwem interfejsów,
czyli odpowiednio zdefiniowanych kontraktów z zestawem logicznie powiązanych metod grupowanych
w ramach mechanizmu rozsyłania tabeli wirtualnej, który w wypadku kompilatorów języka C++
stanowi też typowy sposób implementowania rozsyłania funkcji wirtualnych. Efektem tego jest
zgodność binarna oraz usunięcie problemów z przekłamywaniem nazw kompilatora. W konsekwencji
możliwe jest wywołanie tych metod w wielu językach (i kompilatorach), takich jak C, C++, Visual
Basic, .NET, Delphi oraz innych. Po drugie, implementacja komponentów ładowana jest dynamicznie
zamiast statycznego powiązania jej z klientem.
Termin serwer modelu COM odnosi się zwykle do biblioteki Dynamic Link Library (DLL) lub
pliku wykonywalnego (EXE), gdzie implementowane są klasy modelu COM. Model ten oferuje inne
ważne funkcje powiązane z zabezpieczeniami, marshallingiem realizowanym między procesami,
23
Poleć książkęKup książkęWINDOWS OD (cid:165)RODKA
modelem wątkowości itp. Obszerne omówienie modelu COM wykracza poza zakres książki.
Znakomitą prezentację tego modelu można znaleźć w książce Essential COM autorstwa
Dona Boxa (Addison-Wesley, 1998 r.).
Uwaga. Przykłady interfejsów API dostępnych za pośrednictwem modelu COM obejmują
DirectShow, Windows Media Foundation, DirectX, DirectComposition, Windows Imaging
Component (WIC) oraz Background Intelligent Transfer Service (BITS).
Architektura Windows Runtime
W systemie Windows 8 wprowadzono nowy interfejs API oraz wspierające środowisko
uruchomieniowe o nazwie Windows Runtime (określane czasem za pomocą skrótu WinRT,
którego nie należy mylić z wycofaną wersją Windows RT systemu operacyjnego Windows
opartego na architekturze ARM). Architektura Windows Runtime składa się z usług platformy
kierowanych szczególnie do projektantów tak zwanych aplikacji Windows Apps (znanych
wcześniej pod nazwami Metro Apps, Modern Apps, Immersive Apps i Windows Store Apps).
Aplikacje Windows Apps mogą być przeznaczone dla wielu wariantów urządzeń, począwszy
od niewielkich urządzeń IoT i telefonów, a skończywszy na tabletach, laptopach i komputerach
stacjonarnych, a nawet takich urządzeniach, jak konsola Xbox One i Microsoft HoloLens.
Z perspektywy interfejsu API architektura WinRT zbudowana jest na bazie modelu COM,
poszerzając jego podstawową infrastrukturę o różne rozszerzenia. Na przykład w architekturze
tej dostępne są kompletne metadane typów (przechowywane w plikach WINMD oraz oparte na
formacie metadanych środowiska .NET), które rozszerzają podobne pojęcie obecne w modelu
COM znane jako biblioteki typów. Z punktu widzenia projektu interfejsów API architektura
WinRT jest znacznie bardziej spójna niż klasyczne funkcje API systemu Windows, oferując
hierarchie przestrzeni nazw, jednolite nazewnictwo oraz wzorce programistyczne.
W przeciwieństwie do zwykłych aplikacji systemu Windows (nazywanych obecnie
aplikacjami dla komputerów stacjonarnych z systemem Windows lub klasycznymi aplikacjami
systemu Windows), aplikacje Windows Apps podlegają nowym regułom.
Relacja między różnymi interfejsami API i aplikacjami nie jest bezpośrednia. Aplikacje dla
komputerów stacjonarnych mogą korzystać z podzbioru interfejsów API architektury WinRT.
Z kolei aplikacje Windows Apps mogą używać podzbioru interfejsów API architektury Win32
i modelu COM. W dokumentacji portalu MSDN znajdziesz szczegóły dotyczące tego, jakie interfejsy
API są dostępne z poziomu każdej platformy aplikacji. Zauważ jednak, że na podstawowym
poziomie binarnym interfejs API architektury WinRT w dalszym ciągu bazuje na starszych
binariach i interfejsach API systemu Windows, nawet pomimo tego, że dostępność określonych
interfejsów API może nie być udokumentowana lub wspierana. Nie jest to nowy natywny
interfejs API systemu, lecz podobnie jak w przypadku środowiska .NET, nadal korzysta on
z tradycyjnego interfejsu API systemu Windows.
Aplikacje napisane w językach C++, C# (lub innych językach .NET) oraz JavaScript mogą
z łatwością stosować interfejsy API architektury WinRT, co zawdzięczają projekcjom językowym
opracowanym z myślą o tej architekturze. W wypadku języka C++ firma Microsoft utworzyła
niestandardowe rozszerzenie o nazwie C++/CX, które upraszcza korzystanie z typów architektury
WinRT. Zwykła warstwa współdziałania modelu COM przeznaczona dla środowiska .NET (z kilkoma
wspierającymi rozszerzeniami uruchomieniowymi) umożliwia dowolnemu językowi .NET
24
Poleć książkęKup książkęROZDZIA(cid:146) 1. (cid:132) ZAGADNIENIA I NARZ(cid:125)DZIA
zastosowanie interfejsów API architektury WinRT w naturalny i prosty sposób, tak jakby to było
czyste środowisko .NET. Z myślą o projektantach używających języka JavaScript opracowano
rozszerzenie WinJS zapewniające dostęp do architektury WinRT, choć nadal muszą oni używać
kodu HTML do budowania interfejsu użytkownika aplikacji.
Uwaga. Nawet pomimo tego, że kod HTML może być używany w aplikacjach Windows
Apps, w dalszym ciągu ma on postać lokalnej aplikacji klienckiej, a nie aplikacji internetowej
uzyskiwanej z serwera WWW.
(cid:165)rodowisko .NET Framework
Środowisko .NET Framework stanowi część systemu Windows. W tabeli 1.2 podano
informacje o wersji tego środowiska zainstalowanego jako część danej wersji systemu
Windows. Nowsza wersja środowiska może zostać jednak zainstalowana w nowszych
wersjach systemu operacyjnego.
TABELA 1.2. Domyślne instalacje środowiska .NET Framework w systemie Windows
Wersja systemu Windows
Windows 8
Windows 8.1
Windows 10
Windows 10 (wersja 1511)
Windows 10 (wersja 1607)
Wersja (cid:258)rodowiska .NET Framework
4.5
4.5.1
4.6
4.6.1
4.6.2
Środowisko .NET Framework złożone jest z następujących dwóch podstawowych
komponentów:
(cid:132) Common Language Runtime (CLR). Jest to mechanizm uruchomieniowy środowiska
.NET, który obejmuje kompilator Just In Time (JIT) dokonujący translacji instrukcji
CIL (ang. Common Intermediate Language) na język maszynowy bazowego procesora
sprzętowego, a także zarządcę „odśmiecania” pamięci, weryfikowanie typów,
zabezpieczenia dostępu do kodu itp. Mechanizm implementowany jest jako serwer
wewnątrzprocesowy modelu COM (biblioteka DLL), a ponadto korzysta z różnych
rozwiązań zapewnianych przez interfejs API systemu Windows.
.NET Framework Class Library (FCL). Jest to duża kolekcja typów implementujących
funkcjonalność, która jest zwykle wymagana przez aplikacje klienta i serwera, taką jak
usługi interfejsu użytkownika, obsługa sieci, dostęp do bazy danych itp.
(cid:132)
Oferując takie oraz inne elementy, w tym nowe języki programowania wysokiego poziomu
(C#, Visual Basic, F#) oraz narzędzia wspierające, środowisko .NET Framework poprawia
efektywność pracy projektanta, a ponadto zwiększa bezpieczeństwo i niezawodność w obrębie
aplikacji opartych na tym środowisku. Na rysunku 1.1 pokazano relację między środowiskiem
.NET Framework i systemem operacyjnym.
25
Poleć książkęKup książkęWINDOWS OD (cid:165)RODKA
RYSUNEK 1.1. Diagram prezentuje relację między środowiskiem .NET i systemem operacyjnym Windows
Us(cid:239)ugi, funkcje i programy
Kilka terminów w dokumentacji programisty i użytkownika systemu Windows ma odmienne
znaczenie w różnych kontekstach. Na przykład termin usługa może odwoływać się do
umożliwiającego wywołanie programu w systemie operacyjnym, sterownika urządzenia lub
procesu serwerowego. Następująca lista pozwala się zorientować, jakie znaczenie w książce
mają określone terminy:
(cid:132) Funkcje interfejsu API systemu Windows. Są to udokumentowane podprogramy
w interfejsie API systemu Windows umożliwiające wywołanie. Przykładowe funkcje
obejmują CreateProcess, CreateFile i GetMessage.
(cid:132) Natywne usługi systemowe (lub wywołania systemowe). Są to nieudokumentowane
usługi bazowe w systemie operacyjnym, które mogą być wywoływane w trybie
użytkownika. Na przykład usługa NtCreateUserProcess to wewnętrzna usługa
systemowa, jaką wywołuje funkcja CreateProcess systemu Windows w celu
utworzenia nowego procesu.
(cid:132) Funkcje obsługi jądra (lub programy). Są to podprogramy wewnątrz systemu
operacyjnego Windows, które mogą być wywoływane tylko w trybie jądra (zostanie
zdefiniowany w dalszej części rozdziału). Na przykład ExAllocatePoolWithTag to
program wywoływany przez sterowniki urządzeń w celu przydziału pamięci ze stert
systemu Windows (nazywanych pulami).
(cid:132) Usługi systemu Windows. Są to procesy uruchamiane przez menedżer sterowania
usługami systemu Windows. Na przykład usługa Harmonogram zadań działa w obrębie
procesu trybu użytkownika, który obsługuje polecenie schtasks (podobne do poleceń
at i cron systemu UNIX). Zauważ, że choć w rejestrze sterowniki urządzeń systemu
Windows są definiowane jako „usługi”, w książce nie są one postrzegane w ten sposób.
(cid:132) Biblioteki DLL (ang. Dynamic Link Library). Są to umożliwiające wywołanie
podprogramy połączone razem jako plik binarny, który może być dynamicznie
ładowany przez aplikacje korzystające z podprogramów. Przykłady takich bibliotek
obejmują biblioteki Msvcrt.dll (biblioteka uruchomieniowa języka C) i Kernel32.dll
(jedna z bibliotek podsystemu interfejsu API systemu Windows). Komponenty
26
Poleć książkęKup książkęROZDZIA(cid:146) 1. (cid:132) ZAGADNIENIA I NARZ(cid:125)DZIA
i aplikacje trybu użytkownika systemu Windows intensywnie używają bibliotek DLL.
W porównaniu z bibliotekami statycznymi biblioteki DLL oferują korzyść polegającą
na tym, że aplikacje mogą je współużytkować, a system Windows zapewnia, że
w przypadku aplikacji odwołujących się do kodu biblioteki DLL w pamięci znajduje się
tylko jedna jego kopia. Zauważ, że komponenty Assembly środowiska .NET bibliotek są
kompilowane jako biblioteki DLL, lecz bez żadnych niezarządzanych, wyeksportowanych
podprogramów. Zamiast tego w celu uzyskania dostępu do odpowiednich typów
i elementów członkowskich mechanizm CLR dokonuje analizy skompilowanych
metadanych.
Procesy
Choć na pierwszy rzut oka programy i procesy wyglądają podobnie, fundamentalnie się różnią.
Program to statyczna sekwencja instrukcji, natomiast proces to kontener zestawu zasobów
używanych podczas wykonywania instancji programu. Na najwyższym poziomie abstrakcji
proces systemu Windows składa się z następujących elementów:
(cid:132) Prywat
Pobierz darmowy fragment (pdf)