Temat wykładu
Temat wykładu
Elementy systemu operacyjnego Windows
Zagadnienia
Zagadnienia
" Struktura systemu Windows
" Usługi, funkcje i procedury
" Procesy i wątki w Windows
" Podsystem Win32
" Przykład - projekt aplikacji Win32 API
1
Struktura systemu Windows NT
Struktura systemu Windows NT
Csrss.exe
Csrss.exe
Ntdll.dll
Ntdll.dll
HAL.DLL
HAL.DLL
NTOSKRNL.EXE
NTOSKRNL.EXE
2
Elementy systemu pracujące w trybie jądra
" Centrum wykonawcze (ang. Executive) zawiera podstawowe usługi systemu
operacyjnego, jak zarządzanie pamięcią, zarządzanie procesami i wątkami,
bezpieczeństwo, wejście/wyjście oraz komunikacja międzyprocesowa;
" Jądro (ang. Kernel) zawiera niskopoziomowe funkcje systemu operacyjnego, takie
jak: szeregowanie wątków, obsługa przerwań i wyjątków oraz synchronizacja
wieloprocesorowa. Zapewnia równie\ zestaw procedur i podstawowych obiektów
wykorzystywanych przez centrum wykonawcze do implementacji konstrukcji
wy\szego poziomu;
" Sterowniki urządzeń (ang. Device drivers) nale\ą do tego zbioru zarówno
sterowniki urządzeń sprzętowych, tłumaczące wywołania funkcji wej/wyj na
konkretne operacje wej/wyj zale\ne od rodzaju urządzenia, jak i systemy plików oraz
sterowniki sieciowe.
3
Elementy systemu pracujące w trybie jądra
" Warstwa uniezale\nienia od sprzętu (ang. Hadrware Abstraction Layer
HAL) jest warstwą kodu uniezale\niającą jądro, sterowniki urządzeń oraz pozostałą
część centrum wykonawczego Windows od zró\nicowanej warstwy sprzętowej;
" System okien i grafiki implementuje funkcje graficznego interfejsu u\ytkownika
(lepiej znane jako funkcje podsystemu Win32 USER i GDI), związane z
zarządzaniem oknami, kontrolkami interfejsu u\ytkownika oraz rysowaniem.
4
Elementy systemu pracujące w trybie jądra
Funkcje centrum wykonawczego
" Funkcje opublikowane i dostępne w trybie u\ytkownika;
Funkcje te nazywają się usługami systemowymi i są udostępniane za
pośrednictwem Ntdll.dll istnieje ponad 200 takich funkcji;
Większość z tych funkcji jest dostępna poprzez Win32 API i interfejsy innych
podsystemów środowiskowych;
Niektóre usługi nie są dostępne za pośrednictwem \adnej udokumentowanej funkcji
systemowej, np. usługi LPC oraz ró\nego rodzaju funkcje zapytań, jak
NtQueryInformationXXX, funkcje specjalizowane, jak NtCreatePagingFile itd;
Biblioteka ta zawiera równie\ szereg funkcji pomocniczych, jak:
Moduł uruchamiający programy (nazwy rozpoczynają się od Ldr);
Funkcje komunikacji procesu podsystemu Win32 (nazwy rozpoczynają się od
Csr);
5
Ogólne funkcje biblioteczne (nazwy rozpoczynają się od Rtl).
Elementy systemu pracujące w trybie jądra
Funkcje centrum wykonawczego
" Funkcje dostępne jedynie z trybu jądra;
Funkcje te są opublikowane i udokumentowane w pakietach Windows 2003 Sp1
DDK oraz Windows Installable File System (IFS) Kit;
" Funkcje udostępniane i dostępne z trybu jądra, ale nie
udokumentowane w pakietach Windows 2003 Sp1 DDK oraz Windows
Installable File System (IFS) Kit;
Funkcje wywoływane przez sterownik video w czasie rozruchu systemu nazwy tych
funkcji rozpoczynają się od Inbv.
6
Elementy systemu pracujące w trybie jądra
Funkcje centrum wykonawczego
" Funkcje, które są dostępne jako symbole globalne, ale nie są
udostępnione;
Nale\ą do nich wewnętrzne funckje pomocnicze, wywoływane z poziomu Ntoskrnl,
jak funkcje o nazwach rozpoczynających się od Iop (wewnętrzne funkcje pomocnicze
zarządcy wej/wyj) lub Mi (wewnętrzne funkcje pomocnicze systemu zarządzania
pamięcią);
" Funkcje określane jako wewnętrzne w obrębie jakiegoś modułu, które
nie są symbolami globalnymi.
7
Komunikacja aplikacji z urządzeniami wejścia-
Komunikacja aplikacji z urządzeniami wejścia-
wyjścia pod Windows
wyjścia pod Windows
8
Warstwy obsługi wejścia/wyjścia
" Środowisko API
" Środowisko API
Dla większości aplikacji jest to API Win32. Wywołuje ona w imieniu aplikacji jedną
lub kilka funkcji wykonawczych w celu zrealizowania określonego zadania
(KERNEL32.DLL);
" Podsystem wejścia/wyjścia dla API
" Podsystem wejścia/wyjścia dla API
Są to wewnętrzne funkcje wykonawcze, do których aplikacja ma dostęp poprzez API
Win32 lub inny interfejs środowiska operacyjnego. Do zestawu tego nale\ą np.
NtReadFile, NtWriteFile;
" Menad\er wejścia/wyjścia
" Menad\er wejścia/wyjścia
Wykonuje dwa wa\ne zadania: pierwsze polega na przekierowaniu \ądań
wejścia/wyjścia do właściwego sterownika trybu jądra. Drugie to obsługa statusu
informacyjnego dla ka\dego \ądania wejścia/wyjścia.
9
Warstwy obsługi wejścia/wyjścia
" Sterowniki urządzeń trybu jądra
" Sterowniki urządzeń trybu jądra
Sterowniki przekształcają \ądania klienta na rozkazy zrozumiałe przez sprzęt.
Nale\y jednak pamiętać, \e rozkazy sprzętowe wysyłane przez sterowniki nie są
bezpośrednio przekazywane do urządzenia lecz do warstwy HAL, która przekazuje
je do urządzania;
" Procedury obsługi sterownika
" Procedury obsługi sterownika
Jest zbiór funkcji warstwy HAL pozwalających sterownikowi na realizację zadań
niezale\nie od specyfiki sprzętu. Większość z nazw tych funkcji rozpoczyna się
prefiksem Io, Ex, Mm, Hal lub FsRtl (pozostałe są rzadko u\ywane);
" Procedura dostępu wejścia/wyjścia warstwy HAL
" Procedura dostępu wejścia/wyjścia warstwy HAL
Spełnia funkcję izolującą sterownik od sprzętu. Przekształca rozkazy generowane
przez sterownik na rozkazy specyficzne dla platformy sprzętowej, zrozumiałe dla
urządzeń danej maszyny.
10
Usługi, funkcje i procedury
" Funkcje Win32 API
" Funkcje Win32 API
Udokumentowane procedury interfejsu Win32 API. Na przykład: CreateProcess,
CreateFile czy GetMessage;
" Usługi systemowe (lub wykonawcze usługi systemowe)
" Usługi systemowe (lub wykonawcze usługi systemowe)
Wewnętrzne funkcje systemu Windows, które mogą być wykonywane w trybie
u\ytkownika. Na przykład NtCreateProcess jest wewnętrzną usługą systemową,
wywoływaną przez funkcję Win32 o nazwie CreateProcess, słu\ącą do powoływania
do \ycia nowego procesu;
" Dodatkowe funkcje (lub procedury) jądra
" Dodatkowe funkcje (lub procedury) jądra
Podprocedury składników systemu Windows działających w trybie jądra. Na
przykład ExAllocatePool jest procedurą wywoływaną przez sterowniki urządzeń
celem alokacji pamięci na stercie systemowej Windows.
11
Usługi, funkcje i procedury
" Usługi Win32
" Usługi Win32
Procesy uruchomione przez system kontroli Windows. Na przykład usługa
szeregowania zadań jest procesem działającym w trybie u\ytkownika, obsługującym
polecenie at (podobnie jak at lub cron w systemie UNIX/LINUX);
" DLL (biblioteka dynamiczna)
" DLL (biblioteka dynamiczna)
Zestaw wykonywalnych procedur połączonych w jeden plik binarny, dynamicznie
ładowany przez aplikację korzystającą z tych procedur;
Przykładami są Msvcrt.dll (biblioteka procedur języka C) oraz Kernel32.dll
(jedna z bibliotek podsystemu Win32 API),
Przewagą bibliotek dynamicznych nad statycznymi jest to, \e z jednej biblioteki
mo\e korzystać kilka aplikacji,
System Windows zapewnie załadowanie do pamięci tylko jednej kopii kodu
biblioteki, który jest współdzielony przez wszystkie aplikacje.
12
Procesy i wątki w Windows
" Program
" Program
Statyczna sekwencja instrukcji zapisana w pliku przechowywanym w urządzeniu
pamięci masowej;
" Proces
" Proces
Jest to całość zasobów, z których korzystają wątki składające się na pojedynczą
instancję programu załadowaną do pamięci;
" Wątek
" Wątek
Jest to zawarty w procesie byt, który system Windows mo\e skierować do
wykonania.
13
Procesy i wątki w Windows
Na najwy\szym poziomie abstrakcji proces Windows składa się z:
" Prywatna wirtualna przestrzeń adresowa, będąca zbiorem adresów pamięci
wirtualnej, z której mo\e korzystać proces;
" Program wykonywalny, który oznacza początkowe kod i dane, odwzorowane w
wirtualną przestrzeń adresową procesu;
" Lista otwartych uchwytów do ró\nych zasobów systemowych, takich jak
semafory, porty komunikacyjne czy pliki, dostępnych dla wszystkich wątków
procesu.
14
Procesy i wątki w Windows
Na najwy\szym poziomie abstrakcji proces Windows składa się z:
" Kontekst związany z bezpieczeństwem, tzw. znacznik dostępu (ang. Access
Token), identyfikujący u\ytkownika, grupy bezpieczeństwa oraz poziomy zaufania
związane z procesem;
" Unikalny identyfikator, zwany identyfikatorem procesu (wewnętrznie zwany
identyfikatorem klienta);
" Przynajmniej jeden wątek wykonywalny.
15
Procesy i wątki w Windows
Na wątek składają się następujące składniki:
" Zawartość zestawu rejestrów procesora, reprezentująca stan procesora;
" Dwa stosy, jeden dla wątku wykonywanego w trybie jądra, drugi dla trybu
u\ytkownika;
" Prywatny obszar pamięci zwany obszarem prywatnym wątku (ang. Thread-
local storage TLS), wykorzystywany przez podsystemy oraz biblioteki
statyczne i dynamiczne;
" Unikalny identyfikator zwany identyfikatorem wątku (wewnętrznie równie\
zwany identyfikatorem klienta identyfikatory procesów i wątków są
generowane w tej samej przestrzenie nazw, więc nie pokrywają się);
" Wątki mają czasem swój własny kontekst bezpieczeństwa, często
wykorzystywany przez wielowątkowe aplikacje serwerowe. Kontekst
bezpieczeństwa związany jest z klientem, z którym związany jest wątek.
16
Procesy i wątki w Windows
Podstawowe typy procesów u\ytkownika:
" Stałe systemowe procesy pomocnicze (ang. System Support Process), takie
jak proces logowania oraz zarządca sesji, które nie są usługami Windows (tzn. nie
są uruchamiane przez zarządcę kontroli usług (ang. Service Control Manager);
" Procesy usługowe zapewniające usługi Win32, takie jak mechanizm
szeregowania zadań (ang. Task Manager) czy Spooler. Wiele aplikacji serwerowych
dla Windows takich, jak np. Microsoft SQL Server czy Microsoft Exchange Server,
równie\ zawiera komponenty działające jako usługi.
17
Procesy i wątki w Windows
Podstawowe typy procesów u\ytkownika:
" Aplikacje u\ytkownika, które mogą nale\eć do jednego z rodzajów
podsystemów, np. Win32 czy POSIX;
" Podsystemy środowiskowe, umo\liwiające aplikacjom u\ytkownika dostęp do
wewnętrznych usług systemu operacyjnego poprzez zestaw funkcji, tworzących
środowisko systemu operacyjnego.
18
Podsystem Win32
Elementy podsystemu Win32:
" Proces podsystemu środowiskowego (Csrss.exe) zapewnia:
Obsługę okien konsoli (tekstowych);
Tworzenie oraz niszczenie procesów i wątków;
Częściową obsługę procedur 16-bitowej wirtualnej maszyny DOS-a
(VDM);
Ró\ne funkcje, jak: GetTempFileName, DefineDosDevices,
ExitWindowsEx oraz kilka funkcji związanych z obsługą języków
narodowych.
19
Podsystem Win32
Elementy podsystemu Win32:
" Sterownik urządzeń trybu jądra (Win32k.sys) zawiera:
Zarządcę okien, który kontroluje wyświetlanie okien, zarządza ekranem,
odbiera dane z klawiatury, myszy i innych urządzeń oraz przekazuje
komunikaty u\ytkownika do aplikacji;
Interfejs urządzeń graficznych (ang. Graphics Device Interface GDI),
który jest biblioteką funkcji dla graficznych urządzeń wyjściowych.
Zawiera funkcje słu\ące do rysowania linii, tekstu i figur oraz operacji
graficznych.
20
Podsystem Win32
Elementy podsystemu Win32:
" Biblioteki systemowe (jak Kernel32.dll, Advapi32.dll, User32.dll i Gdi32.dll)
tłumaczące udokumentowane funkcje Win32 API na odpowiednie wywołania
nieudokumentowanych usług systemowych trybu jądra, z plików Ntoskrnl.exe i
Win32k.sys;
" Sterowniki urządzeń graficznych są zale\nymi od sprzętu sterownikami
kart graficznych, drukarek i miniportów.
21
Podsystem Win32 API
" Win32 API jest to interfejs programów u\ytkowych Win32, stanowiący część
zestawu narzędzi do tworzenia oprogramowania;
" Pozwala on na napisanie dowolnej aplikacji wykorzystującej w pełni
dostępne środowisko 32-bitowe;
" Oprócz wymienionego interfejsu, w skład zestawu Win32 wchodzi wiele
innych interfejsów, umo\liwiających stosowanie ró\norodnych technik
programowania.
Przykładem takiego interfejsu mo\e być zorientowany obiektowo Microsoft
Foundation Classes (MFC), pozwalający na wykorzystanie funkcji Windows 32 z
poziomu C++ (lub innego języka zorientowanego obiektowo).
22
Podsystem Win32 API
Funkcje udostępniane poprzez interfejs Win32 mo\emy podzielić na
następujące kategorie:
" Zarządzanie systemem Windows.
Zawarte są tu funkcje i komunikaty do zarządzania zasobami systemu operacyjnego
Windows;
Są wśród nich: okna, schowki, wspólne okienka dialogowe, kursory, menu NT,
ikony, akceleratory klawiatur, interfejsy dokumentów zło\onych (MDI), komunikaty i
kolejki komunikatów, obsługa myszy, malowanie i rysowanie, prostokąty, zegary,
klasa window, właściwości i procedury okien;
" Sterowanie oknami.
Znajdują się tu interfejsy do zarządzania elementami związanymi ze sterowaniem
funkcjami okien - takimi, jak np.: sterowanie animacją, przeciąganie pól list,
sterowanie nagłówkami.
23
Podsystem Win32 API
Funkcje udostępniane poprzez interfejs Win32 mo\emy podzielić na
następujące kategorie:
" Powłoka konsoli.
Zawarte są tu funkcje i komunikaty do programowania z poziomu powłoki;
Powłoka jest aplikacją pozwalającą na grupowanie, uruchamianie i sterowanie
innymi aplikacjami systemu operacyjnego Microsoft Windows;
Oferowane funkcje i komunikaty umo\liwiają tworzenie aplikacji Panelu
sterowania, a ponadto kontrolę wersji oprogramowania, rozszerzanie programu
File Manager;
" Interfejs urządzeń graficznych.
Udostępnia on całe zestawy funkcji do tworzenia i animacji zaawansowanych
24
obiektów graficznych.
Podsystem Win32 API
Funkcje udostępniane poprzez interfejs Win32 mo\emy podzielić na
następujące kategorie:
" Usługi systemowe.
System Windows oferuje wiele standardowych i co wa\ne - stabilnych metod pracy z
plikami, przekazywania informacji poprzez sieć komputerową, danych aplikacji,
systemów bezpieczeństwa, mechanizmów obsługi wyjątków, procesów, wątków,
metod IPC, a tak\e metod debugowania aplikacji, monitorowania wydajności i
tworzenia kopii zapasowych serwera.
25
Podsystem Win32 API
Funkcje udostępniane poprzez interfejs Win32 mo\emy podzielić na
następujące kategorie:
" Usługi sieciowe.
Funkcje sieciowe z systemu Win32 są niezale\ne od typu sieci;
Mogą być wykorzystywane w aplikacjach do otwierania i zamykania połączeń
sieciowych, pozyskiwania informacji na temat bie\ącej konfiguracji sieci, do
zarządzania domeną;
Usługa sieciowa API potrafi obsługiwać funkcje programu LAN Manager,
dynamiczną wymianę danych poprzez sieć i interfejs Window Socket.
26
Podsystem Win32 API
Funkcje udostępniane poprzez interfejs Win32 mo\emy podzielić na
następujące kategorie:
" Usługi multimedialne.
Funkcje sieciowe z systemu Win32 są niezale\ne od typu sieci;
Win32 API udostępnia interfejsy niskiego i wysokiego poziomu do tworzenia
aplikacji multimedialnych;
Pozwalają one na obsługę funkcji audio (zarówno na wysokim jak i na niskim
poziomie), odczytywanie zapisywanie plików multimedialnych, usługi multimedialne,
wykorzystanie zegara multimedialnego, obsługę joysticka.
27
Podsystem Win32 API
Funkcje udostępniane poprzez interfejs Win32 mo\emy podzielić na
następujące kategorie:
" Zdalne wywoływanie procedur.
Win32 API oferuje zdalne wywołania procedur - RPC (ang. Remote Procedure
Call), w celu umo\liwienia aplikacjom uruchamiania funkcji umieszczonych na
zdalnych komputerach, znajdujących się w dowolnym punkcie sieci komputerowej;
RPC mo\e być skonfigurowany do pracy z jednym bądz kilkoma środkami
transportu, usługami nazewniczymi i serwerami bezpieczeństwa.
28
Sposoby wywołania funkcji z biblioteki Win32
" Funkcja jest w całości zaimplementowana w trybie u\ytkownika w
bibliotece podsystemowej.
Nie jest wysyłany \aden komunikat do procesu podsystemu ani nie jest wywoływane
\adna usługa wewnętrzna systemu.
Funkcja zostaje wykonana w trybie u\ytkownika, a rezultat zostaje zwrócony do
procesu wywołującego.
Do takich funkcji nale\ą:
GetCurrentProcess zawsze zwraca wartość -1, która oznacza aktulany proces
dla wszystkich funkcji związanych z procesami,
GetCurrentProcessId poniewa\ identyfikator procesu nie zmienia się podczas
jego wykonywania, pobierany jest więc spośród danych lokalnych, bez potrzeby
wywoływania jądra.
29
Sposoby wywołania funkcji z biblioteki Win32
" Funkcja wymaga jednego lub większej liczby wywołań centrum
wykonawczego.
Przykładowo funkcje ReadFile oraz WriteFile związane są z wywoływaniem
wewnętrznych (nieudokumentowanych) usług systemu wej/wyj Windows o nazwach,
odpowiednio NtReadFile oraz NtWriteFile (tzw. Native API).
" Funkcja wymaga wykonania pewnych operacji przez proces
podsystemu środowiskowego.
Procesy podsystemów środowiskowych, działających w trybie u\ytkownika, są
odpowiedzialne za stan aplikacji klienta, działającej pod ich kontrolą,
W tym przypadku do podsystemu wysyłane jest \ądanie typu klient-serwer. Wymusza
ono wykonanie zało\onej operacji. Biblioteka podsystemu czeka na odpowiedz i po
jej otrzymaniu powraca do programu wywołującego.
30
Dziękuję
Dziękuję
za
za
uwagę
uwagę
31
Wyszukiwarka
Podobne podstrony:
Sieci komputerowe wyklady dr FurtakWykład 05 Opadanie i fluidyzacjaWYKŁAD 1 Wprowadzenie do biotechnologii farmaceutycznejmo3 wykladyJJZARZĄDZANIE WARTOŚCIĄ PRZEDSIĘBIORSTWA Z DNIA 26 MARZEC 2011 WYKŁAD NR 3Wyklad 2 PNOP 08 9 zaoczneWyklad studport 8Kryptografia wykladBudownictwo Ogolne II zaoczne wyklad 13 ppozwyklad09Sporzadzanie rachunku przepływów pienieżnych wykład 1 i 2fcs wyklad 5Wyklad08 Zaopatrz wWodeWyklad3więcej podobnych podstron