Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00307 005349 19045248 na godz. na dobę w sumie
Windows od środka. Architektura systemu, procesy, wątki, zarządzanie pamięcią i dużo więcej. Wydanie VII - książka
Windows od środka. Architektura systemu, procesy, wątki, zarządzanie pamięcią i dużo więcej. Wydanie VII - książka
Autor: , , , Liczba stron: 864
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-3901-9 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> systemy operacyjne >> windows server
Porównaj ceny (książka, ebook (-35%), audiobook).

Systemy operacyjne Windows 10 i Windows Server 2016 bardzo różnią się od swoich poprzedników. Są bardziej złożone, a niektóre zastosowane rozwiązania można określić jako zaawansowane i wysublimowane. Zwłaszcza znajomość wewnętrznych mechanizmów systemu, architektury jądra i systemowego modelu bezpieczeństwa okazuje się niezwykle istotna dla programistów i inżynierów ds. bezpieczeństwa. Bez tej wiedzy trudno mówić o prawdziwie niezawodnej pracy oprogramowania tworzonego dla maszyn pracujących pod kontrolą najnowszych wersji systemu Windows.

Ta książka jest pierwszym tomem klasycznego przewodnika po wewnętrznych mechanizmach podstawowych komponentów systemu Windows. Omówiono w niej architekturę systemu Windows, sposoby implementowania i modyfikacji procesów, przetwarzania wątków oraz korzystania z pamięci fizycznej i wirtualnej. Sporo miejsca poświęcono operacjom wejścia-wyjścia oraz integracji ze sterownikami poszczególnych urządzeń. Szczegółowo przedstawiono zabezpieczenia wbudowane w system. Projektanci oprogramowania, specjaliści ds. bezpieczeństwa oraz administratorzy systemów informatycznych znajdą tu wiele ważnych informacji, dzięki którym dogłębnie zrozumieją sposób działania systemu, co pozwoli im na podejmowanie lepszych decyzji.

Najważniejsze zagadnienia:

Windows od podszewki - poznaj i zrozum!

Znajdź podobne książki Ostatnio czytane w tej kategorii

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)

Gdzie kupić całą publikację:

Windows od środka. Architektura systemu, procesy, wątki, zarządzanie pamięcią i dużo więcej. Wydanie VII
Autor:
, , ,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: