<<

SystemSystem operacyjnyoperacyjny WindowsWindows XPXP • Perspektywa historyczna • Podstawy projektu • Elementy systemu Jądro Egzekutor • Podsystemy środowiskowe • System plików • Interfejs programowy

Wiesław Płaczek Systemy Operacyjne: Wykład 13 1 PerspektywaPerspektywa historycznahistoryczna • Sierpień 1981: firma wypuściła system operacyjny DOS 1.0 (4000 linii kodu asemblera, 8 KB pamięci) dla pierwszego komputera osobistego (PC) IBM, z mikroprocesorem Intel 8086. • Przez kolejne lata DOS, pomimo pojawiania się kolejnych, ulepszonych wersji, pozostawał w tyle za rozwojem technologicznym sprzętu; np. kolejne procesory Intela: 80286, 80386, 80486, pomimo wielu istotnych jakościowo zmian, były traktowane przez DOS jedynie jako „szybki 8086”. •We wczesnych latach 1980-tych Microsoft rozpoczął prace na graficznym interfejsem użytkownika (graphical user interface – GUI) dla systemu DOS, który mógłby rywalizować z systemem Macintosh – rezultatem tego był GUI o nazwie Windows 3.0 (przed 1990), dalsze wcielenia to Windows 95/98/Me. •W połowie lat 1980-tych Microsoft i IBM rozpoczęły pracę nad wielozadaniowym systemem nowej generacji, o nazwie OS/2, który mógłby w pełni wykorzystać możliwości oferowane przez procesor Intel 80286. • W roku 1988 Microsoft wycofał się z projektu OS/2 i rozpoczął pracę nad własnym systemem, wynajmując do tego Dave’a Cutlera, konstruktora systemu operacyjnego VMS dla komputerów VAX firmy DEC. • Pierwsza wersja nowego systemu o nazwie Windows NT („new technology”) z numerem 3.1 została wypuszczona w roku 1993 (używała GUI Windows 3.1). • Dalszym rozwinięciem systemu Windows NT był Windows 2000 (rok 2000). • Windows XP jest uaktualnieniem Windows 2000 oraz zastępuje Windows 95/98. Wiesław Płaczek Systemy Operacyjne: Wykład 13 2 PodstawyPodstawy projektuprojektu • Windows XP jest wielozadaniowym systemem operacyjnym z wywłaszczaniem, ma organizację 32- lub 64-bitową i jest przeznaczony dla procesorów Intel IA32/IA64, AMD K6/K7 i późniejszych. Stosuje model klient-serwer na podobieństwo systemu operacyjnego Mach. Jest systemem wielostanowiskowym (multiuser), realizującym jednoczesny dostęp za pośrednictwem usług rozproszonych lub wielu egzemplarzy GUI. Jest pierwszą wersją systemu Windows dostarczaną w postaci 64-bitowej. Istnieją dwie wersje biurkowe: Windows XP Professional oraz Windows XP Personal (Home Edition) – bez bardziej zaawansowanych cech. Od roku 2002 istnieją wersje serwerowe XP o nazwie Windows .Net –służą do obsługi farm serwerów WWW, serwerów druku i plików, klastrów systemów i wielkich maszyn w centrach danych (do 64 GB pamięci operacyjnej i do 32 procesorów IA32 lub do 128 GB i 64 procesorów IA64). •Główne cele projektowe systemu: bezpieczeństwo, niezawodność, zgodność z aplikacjami Windows i POSIX, duża wydajność, rozszerzalność, przenośność, dostosowanie do wymogów międzynarodowych.

Wiesław Płaczek Systemy Operacyjne: Wykład 13 3 PodstawyPodstawy projektuprojektu –– .d.c.d. • Bezpieczeństwo: Wymagania bezpieczeństwa przewyższyły standardy projektowe systemu Windows NT 4.0, który uzyskał poziom klasy bezpieczeństwa C2. Szeroko zakrojone przeglądanie i testowanie kodu połączono z użyciem automatycznych narzędzi analizy potencjalnie słabych punktów. • Niezawodność: Dokonano dogłębnego przeglądu kodu metodami ręcznymi i automatycznymi. Windows XP dokładniej weryfikuje moduły sterujące. Posiada lepsze możliwości wychwytywania błędów oprogramowania w kodzie poziomu użytkownika. Aplikacje, moduły sterujące i urządzenia pochodzące z obcych źródeł poddaje procesowi surowego atestowania. Sprowadza (przez Internet) środki zaradzania problemom. Lepsze rozwiązania w graficznym interfejsie użytkownika (GUI). • Zgodność z aplikacjami Windows i POSIX: Warstwa zgodności usytuowana między aplikacjami a API Win32 sprawia, że XP wygląda na w pełni zgodny z poprzednimi wersjami Windows. Dostępny jest podsystem POSIX o nazwie Interix –umożliwia kompilowanie i wykonywanie popularnego oprogramowania zgodnego z systemem . Wiesław Płaczek Systemy Operacyjne: Wykład 13 4 PodstawyPodstawy projektuprojektu –– c.d.c.d. • Duża wydajność: Podsystemy XP mogą wydajnie komunikować się między sobą za pomocą lokalnego wywołania procedury (LPC) umożliwiającego wysoko wydajne przekazywanie komunikatów. Możliwość wywłaszczania wątków w podsystemach XP przez wątki o wyższym priorytecie pozwala szybko reagować na zdarzenia zewnętrzne. Windows XP zaprojektowano do wieloprzetwarzania symetrycznego (SMP) – na komputerze wieloprocesorowym kilka wątków może działać równolegle. Windows XP stosuje różnorodne techniki zwiększania wydajności systemu: asynchroniczne wejście-wyjście, optymalizowane protokoły sieciowe, grafika oparte na kodzie jądra, wyrafinowane techniki przechowywania podręcznego danych systemu plików, lepsze algorytmy i procesorowe struktury danych itd. • Przenośność (portability) –możliwość przenoszenia z jednej architektury sprzętowej na inną ze stosunkowo niewielkimi zmianami. Większość systemu napisana w językach C i C++. Kod zależny od procesora jest wyizolowany w bibliotece dołączanej dynamicznie (DLL) zwanej warstwą abstrakcji sprzętu (hardware abstraction layer – HAL) – uniezależnienie reszty systemu od różnic sprzętowych (warstwa HAL działa bezpośrednio na sprzęcie; górne warstwy Windows XP zależą od warstwy HAL, a nie od znajdującego się pod nią sprzętu). Wiesław Płaczek Systemy Operacyjne: Wykład 13 5 PodstawyPodstawy projektuprojektu –– c.d.c.d. • Rozszerzalność (extensibility) – architektura warstwowa: Egzekutor (executive) Windows XP, działa w trybie jądra (chronionym) i dostarcza podstawowych usług systemowych. Powyżej egzekutora działa w trybie użytkownika kilka podsystemów usługowych, m.in. podsystemy środowiskowe emulujące różne systemy operacyjne (np. MS-DOS, MS-Windows, POSIX). Modularna struktura pozwala dodawać do systemu następne podsystemy środowiskowe bez naruszania egzekutora. Ładowalne moduły sterujące w systemie WE/WY umożliwiają dodawanie nowych systemów plików, nowych typów urządzeń WE/WY oraz nowych rodzajów sieci podczas działania systemu. • Zaplecze międzynarodowe: Uwzględnia różne cechy lokalne poprzez interfejs API zaplecza języków narodowych (national language support – NLS). Interfejs API NLS dostarcza specjalizowanych procedur formatowania daty, czasu, kwot pieniężnych itp. – odpowiednio do lokalnych zwyczajów. Oryginalnym kodem znaków w Windows XP jest UNICODE (16-bitowy). Napisy systemowe przechowywane są w plikach zasobów, które można zastąpić w celu dostosowania systemu do różnych języków. Możliwe jest współbieżne korzystanie z wielu ustawień lokalnych. Wiesław Płaczek Systemy Operacyjne: Wykład 13 6 ElementyElementy systemusystemu Proces Aplikacje Aplikacje Aplikacje Aplikacje Aplikacje rejestracyjny systemu OS/2 systemu Win16 systemu Win32 systemu DOS systemu POSIX

Podsystem Podsystem Win16 bezpieczeństwa MS-DOS Podsystem OS/2 VDM VDM POSIX Pakiet uwierzytelniania Podsystem Baza danych zarządcy Win32 Tryb bezpieczeństwa kont użytkownika Egzekutor Zarządca WE/WY Monitor Zarządca Udogodnienie automa- Zarządca System plików Zarządca bezpie- Zarządca wywoływania tycznego pamięci czeństwa procesów procedur Zarządca obiektów instalo- pamięci odniesień wirtualnej lokalnych Zarządca wirtualnej wania okien Moduły obsługi urządzeń Jądro Moduły Moduły obsługi sterujące urządzeń sieci Tryb graficznych Warstwa abstrakcji sprzętu (HAL) jądra Sprzęt Wiesław Płaczek Systemy Operacyjne: Wykład 13 7 JJąądrodro • Jądro (kernel) Windows XP stanowi podstawę egzekutora i podsystemów. • Strony jądra nie są nigdy usuwane z pamięci, a jego działanie nie jest nigdy wywłaszczane. •Jądro ma cztery główne obowiązki: planowanie procesów; obsługa przerwań i sytuacji wyjątkowych; synchronizacja procesora; podejmowanie działań naprawczych po awarii zasilania. •Jądro jest obiektowe – wykonuje zadania posługując się obiektami jądrowymi. Typ obiektu – zdefiniowany w systemie typ danych mający zbiór atrybutów (wartości danych) i zbiór metod (np. funkcji lub operacji). Obiekt – konkret typu obiektowego. • Procesy i wątki: Proces dysponuje przestrzenią adresową i informacjami do inicjowania wątków, takimi jak podstawowy priorytet oraz przypisanie jednego lub większej liczby procesorów; każdy proces ma jeden lub więcej wątków. Wątek jest jednostką wykonywania zarządzaną przez jądro – ma własny stan planowania, w tym priorytet, przypisanie do procesora i informacje rozliczeniowe; może się znajdować w jednym z sześciu stanów: gotowości (ready) , pogotowia (standby) (bezpośrednio przed wykonaniem), aktywności (running) , oczekiwania, przejściowym (transition) (oczekiwanie na niezbędne zasoby) i zakończenia. Wiesław Płaczek Systemy Operacyjne: Wykład 13 8 JJąądrodro –– pplanowanielanowanie pprzrzyydziadziałłuu procesoraprocesora • Dyspozytor jądrowy (kernel dispatcher) korzysta z 32 priorytetów w celu ustalenia kolejności wątków – dwie klasy: Klasa zmienna –wątki o priorytetach 0–15; Klasa czasu rzeczywistego –wątki o priorytetach z przedziału 16–31. Z każdym priorytetem związana jest osobna kolejka. • Charakterystyka strategii planowania priorytetowego: Tworzenie dobrych czasów odpowiedzi w wątkach interakcyjnych (korzystających z okien) oraz utrzymywanie urządzeń WE/WY w ruchu – przez podwyższanie priorytetów procesów ograniczonych przez WE/WY. Umożliwienie wątkom ograniczonym przez procesor korzystanie z zaoszczędzonych cykli procesora w trybie drugoplanowym – przez obniżanie ich priorytetów przy przerwaniach czasomierza. • Planowanie przydziału procesora może zachodzić w następujących sytuacjach: gdy wątek przechodzi do stanu gotowości lub oczekiwania, gdy kończy działanie, kiedy aplikacja zmienia priorytet wątku lub przypisanie procesora. •Wątki czasu rzeczywistego mają preferencyjny dostęp do procesora dzięki możliwości wywłaszczania; system Windows XP nie jest jednak rygorystycznym systemem czasu rzeczywistego. Wiesław Płaczek Systemy Operacyjne: Wykład 13 9 JJąądrodro –– obsobsłłuuggaa przerwaprzerwańń • Dyspozytor jądrowy obsługuje pułapki (traps) powodowane wyjątkami i przerwaniami generowanymi przez sprzęt i oprogramowanie. • Proste wyjątki mogą być obsługiwane przez procedurę obsługi pułapki; obsługa innych należy do dyspozytora wyjątków (exception dispatcher). • Dyspozytor przerwań w jądrze obsługuje przerwania, wywołując procedurę obsługi przerwania (interrupt service routine – ISR) zawartą w module sterującym urządzenia lub jądrową procedurę obsługi pułapki. • Przerwanie jest reprezentowane przez obiekt przerwania, który zawiera wszystkie informacje potrzebne do obsługi przerwania. • Przerwania mają priorytety i są obsługiwane w ich kolejności – 32 poziomy przerwań (IRQL): 8 do użytku jądra, 24 dla warstwy HAL. • Aby powiązać przerwanie dowolnego poziomu z procedurą obsługi, jądro korzysta z tablicy rozdzielczej przerwań (interrupt dispatch table). • Dyspozytor jądrowy realizuje dwa rodzaje przerwań programowych: Asynchroniczne wywołanie procedury (asynchronous procedure call – APC) – przerywa wykonywanie wyjątku, po czym następuje wywołanie procedury; używane do rozpoczynania nowego wątku, kończenia procesów i zawiadamiania o zakończeniu asynchronicznego WE/WY; w wątkach tworzy się kolejki wywołań APC. Opóźniane wywołanie procedury (deferred procedure call – DPC) –używane do odraczania przetwarzania przerwań, np. opóźnianie przetwarzania przerwań od urządzeń, obsługa wyzerowanych czasomierzy, wywłaszczanie wątków po upływie zaplanowanych kwantów czasu; są ustawiane w kolejce, nie blokują innych ISR. Wiesław Płaczek Systemy Operacyjne: Wykład 13 10 EgzekutorEgzekutor ((executiveexecutive)) –– zarzzarząądcadca obiektówobiektów • Windows XP stosuje obiekty we wszystkich swoich usługach i fragmentach, np. obiekty: katalogowe, dowiązań symbolicznych, semaforów, zdarzeń, procesów, wątków, portów, plików. • Zadaniem zarządcy obiektów (), będącego składową egzekutora, jest nadzorowanie użytkowania wszystkich obiektów: Generuje uchwyt (handle) do obiektu – w postaci unikalnej liczby całkowitej. Dba o bezpieczeństwo, np. sprawdza, czy proces ma prawo dostępu do obiektu. Śledzi, które procesy używają których obiektów – każdy nagłówek obiektu zawiera licznik procesów posiadających uchwyty do danego obiektu. Utrzymuje licznik odwołań do obiektu przez system (który używa wskaźników). •Działania na obiektach wykonywane są za pomocą standardowego zbioru metod (funkcji wirtualnych): create, open, close, delete, query name, parse i security. Operacja query name jest wywoływana, gdy wątek posiadający referencję do obiektu chce poznać jego nazwę. Operacja parse jest używana przez zarządcę obiektów w celu odnalezienia obiektu na podstawie jego nazwy. Operację security wywołuje się w celu zabezpieczenia operacji na wszystkich obiektach, np. gdy proces otwiera/zamyka obiekt lub zmienia tryb jego ochrony. Wiesław Płaczek Systemy Operacyjne: Wykład 13 11 EgzekutorEgzekutor –– nazywanienazywanie obiektówobiektów • Egzekutor umożliwia nazwanie dowolnego obiektu; przestrzeń nazw jest globalna; nazwa może być trwała lub tymczasowa. • Nazwy obiektów są strukturalne, jak ścieżki dostępu w systemach MS-DOS i UNIX. Katalogi są reprezentowane za pomocą obiektów katalogowych zawierających nazwy wszystkich obiektów w danym katalogu. Rozbudowa przestrzeni nazw obiektów następuje przez dodawanie obiektów urządzeń reprezentujących tomy (wolumeny) z systemami plików. • Windows XP implementuje obiekt dowiązań symbolicznych (podobny do dowiązań symbolicznych systemu UNIX) – pozwala na tworzenie wielu skrótów lub synonimów odnoszących się do tego samego pliku; używany w abstrakcyjnej przestrzeni nazw. • Proces otrzymuje uchwyt do obiektu przez jego utworzenie, otwarcie istniejącego obiektu, uzyskanie kopii podwojonego uchwytu od innego procesu lub odziedziczenie go po procesie macierzystym. • Wszystkie uchwyty pamiętane są w tablicy obiektów procesu. •Każdy obiekt jest chroniony przez listę kontroli dostępów (access- control list) –każdy użytkownik posiada obiekt żetonu dostępu. Wiesław Płaczek Systemy Operacyjne: Wykład 13 12 EgzekutorEgzekutor –– zarzzarząądcadca pamipamięęcici wirtualnejwirtualnej •Projekt zarządcy pamięci wirtualnej (VM) zakłada, że sprzęt obsługuje odwzorowania między pamięcią fizyczną a wirtualną, zapewnia stronicowanie, przezroczystą zgodność zawartości pamięci podręcznych w systemach wieloprocesorowych, odwzorowywania na tę samą ramkę wielu wpisów w tablicy stron. • Zarządca VM używa stronicowanego schematu zarządzania pamięcią ze stronami rozmiaru 4 KB (8 KB) na procesorach 32 (64)-bitowych. • Strony danych przydzielone do procesu, które nie znajdują się w pamięci fizycznej są przechowywane w pliku stronicowania na dysku albo odwzorowywane bezpośrednio w zwykłym pliku. • Na procesorach IA32 zarządca VM stosuje adresy 32-bitowe – przestrzeń adresowa każdego procesu ma 4 GB, z czego górne 2 GB są identyczne dla wszystkich procesów i są używane przez Windows XP w trybie jądra, a dolne 2 GB są specyficzne dla danego procesu i są dostępne zarówno w trybie użytkownika, jak i w trybie jądra. •Zarządca VM przydziela pamięć dwustopniowo: W pierwszym kroku rezerwuje część wirtualnej przestrzeni adresowej procesu. W drugim kroku zatwierdza przydział przez wygospodarowanie miejsca w przestrzeni pamięci wirtualnej (w pamięci fizycznej lub plikach stronicowania). Wiesław Płaczek Systemy Operacyjne: Wykład 13 13 ZarzZarząądcadca pamipamięęcici wirtualnejwirtualnej –– c.d.c.d. •W tłumaczeniu adresu wirtualnego bierze udział wielopoziomowa tablica stron – w procesorach zgodnych z IA32: Każdy proces ma katalog stron mieszczący 1024 wpisy po 4B. Każdy wpis katalogu stron (page-directory entry – PDE) wskazuje na tablicę stron zawierającą 1024 wpisy po 4B(page-table entry – PTE). Każdy wpis PTE wskazuje na 4 KB ramkę strony w pamięci fizycznej. Łączna wielkość wszystkich tablic procesu wynosi 4 MB. • 32-bitowy adres pamięci wirtualnej rozbija się na trzy części: Najstarszych 10 bitów wskazuje jeden wpis w katalogu stron. Następnych 10 bitów służy do wybrania wpisu tablicy stron (PTE). Pozostałych 12 bitów wskazuje konkretny bajt od początku danej ramki. •Wskaźnik do bajta pamięci fizycznej tworzy się łącząc 20 bitów wpisu PTE z 12 młodszymi bitami adresu wirtualnego. • Pozostałych 12 bitów wpisu PTE używa się do opisu stanu strony: 3 bity zarezerwowane są na użytek systemu operacyjnego; Pozostałe bity określają: tryb dostępu, czy sięgano do zawartości strony, czy ją zapisywano, atrybuty przechowywania podręcznego itd. Wiesław Płaczek Systemy Operacyjne: Wykład 13 14 SchematSchemat pamipamięęcici wirtualnejwirtualnej Katalog stron Wpis nr Wpis nr 0 1023 katalogu . . . katalogu stron stron

Tablica stron nr 0 Tablica stron nr 1023 Wpis nr Wpis nr Wpis nr 0 Wpis nr 0 1023 1023 tablicy . . . tablicy . . . tablicy tablicy stron stron stron stron

Strona Strona Strona Strona wielkości wielkości wielkości wielkości 4 KB 4 KB 4 KB 4 KB

Wiesław Płaczek Systemy Operacyjne: Wykład 13 15 ZarzZarząądcadca pamipamięęcici wirtualnejwirtualnej –– c.d.c.d. • Strona może znajdować się w jednym z 6 stanów: ważna (poprawna) –używana przez aktywny proces; wyzerowana – zapełniona zerami i gotowa do użycia; wolna – nie ma odniesienia w żadnej pozycji tablicy stron (PTE); w pogotowiu (standby) – kopia informacji już przechowywanej na dysku; zmieniona – zapisana przez proces, lecz jeszcze nie przekopiowana na dysk; zła – bezużyteczna z powodu wykrycia błędu sprzętowego. •Zarządca pamięci wirtualnej przechowuje informacje o wszystkich stronach pamięci fizycznej w bazie ramek stron. Każda ramka (strona fizyczna) ma jeden wpis w tej bazie. Wpis ten pokazuje na pozycję w tablicy stron (PTE), a ta pokazuje na ramkę. Ramki stron są powiązane w listy (np. stron wyzerowanych, stron wolnych). Jeśli pojawi się brak strony, to zarządca VM wprowadza brakującą stronę w pierwszą ramkę na liście stron wolnych – ponieważ odwołania do pamięci zwykle mają cechę lokalności (locality), więc zarządca VM zakłada, że brak strony dotyczy również kilku sąsiednich stron i też je sprowadza. Jeśli na liście wolnych stron brakuje ramek, to do każdego procesu, który ma więcej stron niż wynosi jego minimalny zbiór roboczy – stosowany jest algorytm FIFO odbierania stron. Wiesław Płaczek Systemy Operacyjne: Wykład 13 16 EgzekutorEgzekutor –– zarzzarząądcadca procesówprocesów • Zarządca procesów (process manager) świadczy usługi tworzenia, usuwania i użytkowania wątków, procesów i zadań (jobs). • Nie zawiera żadnych danych o związkach między rodzicami a ich potomkami ani o hierarchii procesów – takie informacje należą do odpowiedniego podsystemu środowiskowego będącego właścicielem procesu. • Procesy zawierają jeden lub wiele wątków, a same mogą być grupowane w jednostki zwane obiektami zadań (job objects) – używane do kierowaniu wielkimi maszynami centrów danych. Przykład tworzenia procesu w środowisku podsystemu Win32: Po wywołaniu funkcji CreateProcess przez aplikację podsystemu Win32, do Win32 wysłany zostaje komunikat wywołujący interfejs API zarządcy procesów w celu utworzenia procesu. Zarządca procesów wywołuje zarządcę obiektów w celu utworzenia obiektu procesu, a następnie zwraca uchwyt do obiektu podsystemowi Win32. Podsystem Win32 jeszcze raz wywołuje zarządcę procesu, aby ten utworzył wątek danego procesu. Na koniec system Win32 zwraca uchwyty do nowego procesu i wątku. Wiesław Płaczek Systemy Operacyjne: Wykład 13 17 EgzekutorEgzekutor –– wywowywołłanieanie proceduryprocedury lokalnejlokalnej • Udogodnienia wywoływania procedur lokalnych (local procedure call – LPC) używa się do przekazywania zamówień i wyników między procesami klienta i serwera na tej samej maszynie – w szczególności przy zamawianiu usług różnych podsystemów XP. • Proces serwer na prośbę klienta tworzy kanał komunikacyjny (złożony z pary portów: K → S, S → K) w obiekcie portu łączącego i zwraca klientowi uchwyt. • Po utworzeniu kanału LPC należy określić jedną z trzech technik przekazywania komunikatów: Pierwsza jest odpowiednia dla małych komunikatów (do kilkuset bajtów); portowa kolejka komunikatów jest używana jako pamięć pośrednia, a komunikaty są kopiowane od jednego procesu do drugiego. Druga nadaje się do dłuższych komunikatów – unika się kopiowania danych przez zastosowanie pamięci dzielonej; przesyłane komunikaty zawierają jedynie wskaźnik do obszaru pamięci dzielonej i informację o jego rozmiarze. Trzecia technika wykorzystuje interfejsy API do bezpośredniego czytania i pisania w przestrzeni adresowej procesu; LPC dostarcza funkcji i synchronizacji umożliwiających serwerowi dostęp do danych klienta. • Zarządca okien (window manager) Win32 używa metody przekazywania komunikatów niezależnej od LPC – na prośbę klienta serwer tworzy trzy obiekty: wątek usługowy –wyłącznie do obsługi zamówień, 64-KB obiekt sekcji pamięci wspólnej i obiekt pary zdarzeń – do synchronizacji przesyłania danych. ☺ Zalety – dobra wydajność! Wady – duże zużycie zasobów! Wiesław Płaczek Systemy Operacyjne: Wykład 13 18 EgzekutorEgzekutor –– zarzzarząądcadca wejwejśściacia--wyjwyjśściacia • Zarządca wejścia-wyjścia (I/O manager) jest odpowiedzialny za: systemy plików oraz za moduły sterujące urządzeń i sieci. •Pamięta, które z modułów sterujących urządzeń, modułów filtrujących i systemów plików są załadowane oraz zarządza buforami zamówień WE/WY. •Współpracuje z zarządcą pamięci wirtualnej (VM) przy odwzorowywaniu w pamięci wyników plikowych operacji WE/WY. • Nadzoruje pracę zarządcy pamięci podręcznej, który zajmuje się przechowywaniem podręcznym dla całego systemu WE/WY. •Umożliwia stosowanie zarówno operacji synchronicznych (przez czekanie na zakończenie WE/WY), jak i asynchronicznych. •Zarządca WE/WY zamienia otrzymane zamówienia na standardową postać, zwaną pakietem zamówienia wejścia-wyjścia (I/O request packet – IRP), po czym kieruje pakiety IRP do przetwarzania do modułów sterujących (ułożonych w stos dla każdego urządzenia). • Moduły filtrujące (filter modules) –moduły sterujące mające możliwość sprawdzania i modyfikowania każdej operacji WE/WY. Wiesław Płaczek Systemy Operacyjne: Wykład 13 19 EgzekutorEgzekutor –– zarzzarząądcadca pamipamięęcici podrpodręęcznejcznej Windows XP stosuje scentralizowaną pamięć Proces podręczną – opartą na plikach. WE/WY

WE/WY z pamięci Zarządca podręcznej pamięci System podręcznej plików

Kopiowanie WE/WY z danych pominięciem pamięci podręcznej Zarządca Brak strony Moduł pamięci obsługi dysku wirtualnej Plikowe wejście-wyjście Zarządca WE/WY Wiesław Płaczek Systemy Operacyjne: Wykład 13 20 EgzekutorEgzekutor –– monitormonitor bezpieczebezpieczeńństwastwa odniesieodniesieńń • Obiektowa natura Windows XP umożliwia zastosowanie jednolitego mechanizmu bieżącego sprawdzania dostępu oraz doglądania w systemie wszystkich jednostek użytkownika. • Kiedy tylko proces zgłasza się po uchwyt do obiektu, to monitor bezpieczeństwa odniesień (security reference monitor) sprawdza żeton bezpieczeństwa procesu i listę kontroli dostępu (ACL) obiektu, aby przekonać się, czy proces ma niezbędne uprawnienia. EgzekutorEgzekutor –– zarzzarząądcadca automatycznegoautomatycznego instalowaniainstalowania • Zarządca automatycznego instalowania (plug-and-play manager – PnP) jest używany do rozpoznawania i dostosowywania systemu (także dynamicznie) do zmian w konfiguracji sprzętu. • Po dodaniu nowego urządzenia (np. szyna PCI lub port USB), zarządca PnP ładuje odpowiedni moduł sterujący. • Zarządca PnP sprawuje również nadzór nad zasobami używanymi przez każde urządzenie oraz zasobami, które mogą być użyte. Wiesław Płaczek Systemy Operacyjne: Wykład 13 21 PodsystemyPodsystemy śśrodowiskowerodowiskowe • Podsystemy środowiskowe (enviromental subsystems) są procesami trybu użytkownika, umieszczonymi w warstwie powyżej egzekutora, których zadaniem jest umożliwianie Windows XP wykonywania programów opracowanych dla innych systemów operacyjnych, np. 16-bitowy Windows, MS-DOS, POSIX. •Każdy podsystem środowiskowy udostępnia jedno środowisko aplikacji. • Windows XP korzysta z podsystemu Win32 jako głównego środowiska operacyjnego; podsystem ten jest używany do rozpoczynania wszystkich procesów, zapewnia także wszystkie funkcje klawiatury, myszy i ekranu graficznego. Gdy ma nastąpić wykonanie aplikacji, Win32 wywołuje zarządcę pamięci wirtualnej (VM) w celu załadowania wykonywalnego kodu aplikacji. Zarządca VM zwraca Win32 informację o rodzaju kodu wykonywalnego. Jeżeli nie jest to rdzenny kod wykonywalny Win32, to Win32 przekazuje sterowanie właściwemu podsystemowi środowiskowemu. • Podsystem środowiskowy korzysta z LPC w celu udostępniania usług systemu operacyjnego procesom klientów. Wiesław Płaczek Systemy Operacyjne: Wykład 13 22 PodsystemyPodsystemy śśrodowiskowerodowiskowe –– c.d.c.d. • Środowisko systemu MS-DOS jest realizowane przez aplikację podsystemu Win32 zwaną maszyną wirtualną systemu DOS (virtual DOS machine – VDM) – jest to proces poziomu użytkownika, który podlega stronicowaniu i planowaniu jak każdy inny proces systemu Windows XP. • Środowisko 16-bitowego systemu Windows jest dostarczane przez VDM i składa się z oprogramowania zwanego (WOW) –zawiera procedury jądra systemu Windows 3.1 oraz namiastki (stubs) procedur zarządcy okien i funkcji graficznego interfejsu urządzeń (graphical device interface –GDI). • 32-bitowe środowisko Windows na procesorze IA64 – warstwa konwersji wywołań 32-bitowego podsystemu Win32 na wywołania 64-bitowe: WOW64. • Podsystem POSIX został zaprojektowany po to, aby wykonywać aplikacje spełniające standard POSIX1, którego podstawą jest model systemu UNIX – aplikacje te mają dostęp do dowolnego systemu plików w systemie Windows XP. • Podsystemy rejestracji i bezpieczeństwa: Podsystem rejestracji uwierzytelnia użytkowników podczas logowania do systemu – za pomocą usługi rejestracji (logon service) . W celu uwierzytelnienia użytkownik musi mieć w systemie konto i odpowiednie hasło. Podsystem bezpieczeństwa wywołuje pakiet uwierzytelniana w celu sprawdzenia tożsamości użytkownika za pomocą informacji pobranych z podsystemu rejestracji lub serwera sieciowego, a następnie generuje żeton dostępu służący do reprezentowania użytkownika w systemie – żeton ten jest sprawdzany przez monitor bezpieczeństwa odniesień przy każdej próbie dostępu użytkownika do obiektu w systemie. Wiesław Płaczek Systemy Operacyjne: Wykład 13 23 SystemSystem plikówplików • W systemie Windows XP istnieje możliwość korzystania z systemów plików FAT16 (MS-DOS, Windows 3.x) i FAT32 (Windows 95/98), ale podstawowym systemem plików jest NTFS. • Podstawową jednostką systemu NTFS jest tom (volume). Tom jest tworzony przez program administrowania dyskiem systemu XP. Jest oparty o logiczny podział dysku. Może zajmować część dysku lub cały dysk, albo też obejmować kilka dysków. • W systemie NTFS wszystkie metadane (metadata), takie jak informacje dotyczące tomu, są pamiętane w zwykłym pliku. • Jako jednostek przydziału dyskowego NTFS używa klastrów (gron), tj. grup przyległych sektorów dyskowych. Liczba sektorów w klastrze jest potęgą liczby 2. Wielkość klastra jest ustalana podczas formatowania systemu NTFS –w zależności od wielkości tomu może ona wynosić 0.5, 1, 2 lub 4 KB. Rozmiar klastrów jest znacznie mniejszy niż w 16-bitowym systemie FAT16 (32 KB), co redukuje wewnętrzną fragmentację. Np. dla dysku o pojemności 1.6 GB zawierającego 16 000 plików, wewnętrzna fragmentacja w systemie FAT16 zużyłaby średnio 400 MB przestrzeni dyskowej, natomiast w systemie NTFS tylko 17 MB. Wiesław Płaczek Systemy Operacyjne: Wykład 13 24 BudowaBudowa wewnwewnęętrznatrzna NTFSNTFS • Jako adresów dyskowych NTFS używa logicznych numerów klastrów (logical cluster number – LCN). • Plik w NTFS nie jest zwykłym strumieniem bajtów, jak w systemach MS-DOS lub UNIX, ale jest obiektem strukturalnym złożonym z atrybutów. Każdy atrybut pliku jest niezależnym strumieniem bajtów, który podlega tworzeniu, usuwaniu, czytaniu i zapisywaniu. Niektóre atrybuty są standardowe dla wszystkich plików, np. nazwa(y) pliku, czas jego utworzenia, deskryptor bezpieczeństwa, inne są specyficzne dla określonych rodzajów plików, np. katalog ma atrybuty w postaci indeksów nazw zawartych w nim plików, zwykły plik ma atrybut danych itd.. • Każdy plik jest opisany przez jeden lub więcej rekordów tablicy przechowywanej w specjalnym pliku o nazwie główna tablica plików (master file table – MFT). Rozmiar rekordu tablicy MFT wynosi od 1 do 4 KB. Małe atrybuty przechowywane są w samym rekordzie MFT i zwane są atrybutami rezydentnymi. Wielkie atrybuty (np. dane) przechowywane są w jednym lub więcej ciągłych rozszerzeń na dysku, do których wskaźniki znajdują się w rekordzie MFT. Wiesław Płaczek Systemy Operacyjne: Wykład 13 25 BudowaBudowa wewnwewnęętrznatrzna NTFSNTFS –– c.d.c.d. •Każdy plik w tomie systemu NTFS ma niepowtarzalny identyfikator zwany odsyłaczem do pliku (file reference). 64-bitowy odsyłacz składa się z 48-bitowego numeru pliku (numer rekordu w strukturze MFT) i 16-bitowego numeru kolejnego. Numer kolejny jest zwiększany przy każdym ponownym użyciu wpisu w tablicy MFT, co umożliwia systemowi NTFS wykonywanie wewnętrznej kontroli spójności (np. wychwycenie nieaktualnego odwołania do usuniętego pliku po użyciu wpisu MFT na nowy plik). • Przestrzeń nazw zorganizowana jest w hierarchię katalogów: Każdy katalog używa struktury danych o nazwie B+-drzewa do zapamiętywania indeksu nazw swoich plików (B+-drzewo pozwala unikać kosztu reorganizacji drzewa oraz długość każdej drogi od korzenia drzewa do liścia jest taka sama). Korzeń indeksu katalogu zawiera górny poziom B+-drzewa. Każdy wpis w katalogu zawiera: nazwę pliku, odsyłacz do pliku, kopię znacznika czasu uaktualnienia i rozmiar pliku – pobrane z atrybutów pliku rezydujących w tablicy MFT. Wiesław Płaczek Systemy Operacyjne: Wykład 13 26 BudowaBudowa wewnwewnęętrznatrzna NTFSNTFS –– c.d.c.d. • Podstawowe pliki metadanych systemu NTFS: Tablica MFT oraz kopia jej pierwszych 16 pozycji (do działań naprawczych). Plik dziennika: do zapisywania wszystkich uaktualnień metadanych NTFS. Plik tomu: nazwa tomu, wersja systemu NTFS, bit uszkodzenia tomu. Tablica definicji atrybutów: typy atrybutów i dozwolone operacje na nich. Katalog główny: katalog najwyższego poziomu w hierarchii systemu plików. Plik mapy bitów: wskazuje przydzielone do plików oraz wolne klastry tomu. Plik rozruchowy: kod rozruchowy Windows XP, adres fizyczny tablicy MFT. Plik złych klastrów: przechowuje informacje o wadliwych obszarach tomu. • Kopie-cienie tomów W systemie Windows XP istnieje możliwość doprowadzenia tomu do określonego stanu, a następnie utworzenia kopii-cienia (). Jest do odmiana kopiowania przy zapisie, w którym oryginalna treść bloków zmienionych po utworzeniu kopii-cienia jest „zachomikowana” w kopii. Kopii-cienia można używać jako kopii zapasowej spójnego obrazu tomu. Serwerowa wersja Windows XP używa kopii-cieni do wydajnego utrzymywania starych wersji plików pamiętanych w serwerach plików. Wiesław Płaczek Systemy Operacyjne: Wykład 13 27 NTFSNTFS –– usuwanieusuwanie skutkówskutków awariiawarii • Wszystkie uaktualnienia struktur danych NTFS odbywają się w ramach transakcji. Zanim nastąpi zmiana struktury danych, transakcja zapisuje w dzienniku działań (log) wszelkie informacje niezbędne do powtórzenia lub anulowania podjętych czynności. Po zmianie struktury danych, w dzienniku wpisywany jest rekord zatwierdzający, aby zaznaczyć, że transakcja zakończyła się pomyślnie. Po awarii system jest w stanie przywrócić struktury danych do stanu spójnego poprzez przetwarzanie zapisów dziennika. Okresowo (zwykle co 5 s) do dziennika zapisywany jest rekord zwany punktem kontrolnym (checkpoint) – rekordy przed nim można usuwać. • Schemat ten nie gwarantuje, że zawartość wszystkich plików użytkownika będzie poprawna po awarii; zapewnia tylko, że struktury danych systemu (pliki metadanych) będą nieuszkodzone i będą odzwierciedlać stan sprzed awarii. • Dziennik jest przechowywany w trzecim pliku metadanych na początku tomu – tworzony jest przy formatowaniu systemu plików. •Czynności uaktualniania dziennika realizowane są przez obsługę dziennika (log-file service) systemu Windows XP. Wiesław Płaczek Systemy Operacyjne: Wykład 13 28 NTFSNTFS –– bbezpieczeezpieczeńństwostwo • Bezpieczeństwo tomu NTFS wywodzi się z obiektowego modelu systemu XP. •Każdy obiekt pliku ma w rekordzie MTF atrybut deskryptora bezpieczeństwa. • Atrybut ten zawiera żeton dostępu właściciela oraz listę kontroli dostępu do pliku określającą przywileje dostępu udzielone użytkownikom. ZarzZarząądzaniedzanie tomamitomami ii tolerowanietolerowanie awariiawarii • Program FtDisk jest tolerującym awarie modułem obsługi dysku – dopuszcza połączenie wielu napędów dyskowych w jeden tom logiczny, aby zwiększyć wydajność, pojemność i niezawodność. • Jeden sposób połączenia wielu dysków – logiczne zespolenie w celu utworzenia wielkiego tomu logicznego zwanego zbiorem tomów (volume set), który może zawierać do 32 partycji fizycznych. • Inny sposób łączenia wielu partycji fizycznych polega na rotacyjnym przeplataniu ich bloków w celu otrzymania struktury zwanej zbiorem pasków (stripe set) – schemat RAID poziomu 0 (paskowanie dysku); stosuje się także schemat RAID 5. • Schemat dysków lustrzanych – schemat RAID poziomu 1. • Aby poradzić sobie z uszkodzonymi sektorami dysku, FtDisk korzysta z rozwiązania sprzętowego zwanego zapasem sektorów (sector sparing), a system NTFS stosuje technikę programową zwaną ponownym odwzorowaniem klastra (cluster remapping) – utrzymywanie rezerwy dobrych sektorów dysku oraz zastąpienie uszkodzonego bloku dyskowego nie przydzielonym dobrym blokiem. Wiesław Płaczek Systemy Operacyjne: Wykład 13 29 NTFSNTFS –– kompresjakompresja danychdanych • System NTFS może kompresować (upakowywać) dane w poszczególnych plikach lub we wszystkich plikach katalogu. • W celu kompresji pliku NTFS dzieli go na jednostki kompresji (compression units), które są blokami 16 kolejnych klastrów. • Przy zapisywaniu jednostki wykonywany jest algorytm kompresji – jeśli wynik zajmuje mniej niż 16 klastrów, to jest zapisywany. • W celu polepszenia wydajności przy czytaniu ciągu skompresowanych jednostek system NTFS pobiera i rozpakowuje je z wyprzedzeniem, zanim zostaną zamówione. • Dla plików rozrzedzonych lub takich, które zawierają w większości zera, NTFS stosuje inną technikę oszczędzania pamięci: Klastrom zawierającym same zera nie przydziela żadnego miejsca na dysku. Zamiast tego pozostawia przerwy w ciągu numerów klastrów wirtualnych pamiętanych we wpisie danego pliku w tablicy MFT. Jeżeli podczas czytania pliku zostanie znaleziona przerwa w numerach wirtualnych klastrów, to NTFS wypełnia daną porcję zerami w buforze docelowym (technika taka jest stosowana również w systemie UNIX). • NTFS umożliwia szyfrowanie plików (również całych katalogów). Wiesław Płaczek Systemy Operacyjne: Wykład 13 30 InterfejsInterfejs programowyprogramowy Podstawowy dostęp do możliwości XP daje interfejs Win32 API. • Dostęp do obiektów jądra: Jądro XP udostępnia programom użytkowym wiele usług – programy korzystają z tych usług za pomocą działań na obiektach jądra. Proces uzyskuje dostęp do obiektu o nazwie XXX, wykonując funkcję CreateXXX dostarczającą uchwytu (handle) do XXX – uchwyt jest jednoznaczny w danym procesie. Proces może oddać uchwyt, wykonując funkcję CloseHandle,a system może usunąć obiekt, jeśli liczba korzystających z niego procesów spadnie do zera. •XP umożliwia dzielenie obiektów przez procesy na trzy sposoby: Proces potomny może dziedziczyć uchwyt do obiektu. Jeden proces może nadać nazwę obiektowi w chwili jego tworzenia, a drugi proces może się odwołać do niego za pomocą tej nazwy. Wady: Nazwy obiektów są globalne, a w XP nie ma sposobu sprawdzenia, czy obiekt o danej nazwie już istnieje. ☺ Zalety: Łatwość wspólnego użytkowania nazwanych obiektów przez procesy. Przy pomocy funkcji DuplicateHandle: proces, któremu udostępniono uchwyt do innego procesu i wartość uchwytu do jakiegoś obiektu w tamtym procesie, może uzyskać kontakt z tym obiektem, czyli dzielić obiekt z innym procesem. Wiesław Płaczek Systemy Operacyjne: Wykład 13 31 InterfejsInterfejs programowyprogramowy –– zarzzarząądzaniedzanie procesamiprocesami W systemie XP proces oznacza wykonywany egzemplarz programu, a wątek określa jednostkę kodu, dla której system operacyjny planuje przydział procesora – proces może zawierać wiele wątków. • Proces rozpoczyna się przez wywołanie procedury CreateProcess, która ładuje dowolne dynamiczne biblioteki potrzebne procesowi oraz tworzy wątek podstawowy (primary thread). • Dodatkowe wątki można tworzyć funkcją CreateThread. •Każda dynamicznie dołączana biblioteka lub plik wykonywalny, umieszczony w przestrzeni adresowej, jest identyfikowany przez uchwyt egzemplarza (instance handle) = adres wirtualny pliku. • Planowanie w podsystemie Win32 korzysta z 4 klas priorytetów: IDLE_PRIORITY_CLASS (priorytet poziomu 4); NORMAL_PRIORITY_CLASS (priorytet poziomu 8); HIGH_PRIORITY_CLASS (priorytet poziomu 13); REALTIME_PRIORITY_CLASS (priorytet poziomu 24). • Win32 posiada narzędzia do zmiany klasy priorytetu procesu, zmiany priorytetu wątku, a także obiekty synchronizujące (semafory, zamki). Wiesław Płaczek Systemy Operacyjne: Wykład 13 32 InterfejsInterfejs programowyprogramowy –– komunikacjakomunikacja mimięędzyprocesowadzyprocesowa • Aplikacje Win32 mogą realizować komunikację międzyprocesową przez dzielenie obiektów jądra. • Innym sposobem jest przekazywanie komunikatów – szczególnie popularny w aplikacjach korzystających z interfejsu Windows GUI. Wątek może wysłać komunikat do innego wątku lub do okna za pomocą jednego z pięciu wywołań: PostMessage, PostThreadMessage, SendMessage, SendThreadMessage, SendMessageCallBack. Procedury doręczania komunikatu, typu Post…, są asynchroniczne (zwracają sterowanie natychmiast). Procedury wysyłania, typu Send…, są synchroniczne (blokują nadawcę do czasu doręczenia i przetworzenia komunikatu). Oprócz samego komunikatu wątek może również wysłać w nim dane – dane te muszą być kopiowane, jako że procesy mają odrębne przestrzenie adresowe. • W odróżnieniu od 16-bitowego środowiska Windows każdy wątek Win32 ma własną kolejkę wejściową, z której odbiera komunikaty. Jest to struktura bardziej niezawodna niż wspólna kolejka wejściowa 16- bitowych okien, gdyż przy wielu oddzielnych kolejkach jedna zablokowana aplikacja nie tamuje wejścia innym aplikacjom. Wiesław Płaczek Systemy Operacyjne: Wykład 13 33 InterfejsInterfejs programowyprogramowy –– zarzzarząądzaniedzanie pamipamięęciciąą Interfejs Win32 API umożliwia programom użytkowym korzystanie z pamięci poprzez: pamięć wirtualną, pliki odwzorowane w pamięci, sterty oraz lokalną pamięć wątków. • Pamięć wirtualna: Funkcja VirtualAlloc służy do zarezerwowania lub przyznania przydziału pamięci, a funkcja VirtualFree do unieważnienia lub zwolnienia przydziału. Funkcje te umożliwiają aplikacji określenie adresu wirtualnego, od którego pamięć ma być przydzielona – działają na wielokrotnościach stron pamięci. • Pliki odwzorowane w pamięci: Aplikacja odwzorowuje plik w swojej przestrzeni adresowej – operacja wieloetapowa. Dwa procesy mogą odwzorować ten sam plik w swojej pamięci wirtualnej – wygodna metoda dzielenia pamięci. • Sterta (heap) – obszar zarezerwowanej przestrzeni adresowej: Na początku proces Win32 otrzymuje domyślną stertę wielkości 1 MB. Dostęp do sterty jest synchronizowany w celu ochrony jej danych przed uszkodzeniami na skutek współbieżnej aktualizacji przez wiele wątków. • Mechanizm lokalnej pamięci wątków służy do przydzielania pamięci globalnej poszczególnym wątkom – aby funkcje korzystające z danych globalnych lub statycznych mogły działać poprawnie w środowisku wielowątkowym. Wiesław Płaczek Systemy Operacyjne: Wykład 13 34