250 likes | 389 Views
Wirtualizacja zasobów w systemach operacyjnych. Wioleta Borysewicz. agenda. Definicja wirtualizacji Pamięć wirtualna Wirtualny system plików (VFS) Podsystem wejścia-wyjścia. Co to jest wirtualizacja?. Użycie oprogramowania w celu stworzenia abstrakcji (iluzji) posiadanych zasobów.
E N D
Wirtualizacja zasobów w systemach operacyjnych Wioleta Borysewicz
agenda • Definicja wirtualizacji • Pamięć wirtualna • Wirtualny system plików (VFS) • Podsystem wejścia-wyjścia
Co to jest wirtualizacja? • Użycie oprogramowania w celu stworzenia abstrakcji (iluzji) posiadanych zasobów. • Umożliwia efektywniejsze wykorzystanie istniejących zasobów sprzętowych poprzez dowolne modyfikowanie ich cech, dostosowując je do wymagań użytkownika.
Które zasoby SO można wirtualizować? • Tak naprawdę wszystkie… • W szczególności: • pamięć operacyjną, • procesor, • system plików, • urządzenia wejścia-wyjścia.
Pamięć wirtualna • Umożliwia wykonywanie procesów, które nie są w całości przechowywane w pamięci operacyjnej. • Logiczna przestrzeń może być większa od fizycznej przestrzeni adresowej. • Tworzy iluzję dużej, jednorodnej i szybkiej pamięci. • Części przestrzeni adresowej są relokowalne.
Techniki realizacji pamięci wirtualnej • Stronicowanie na żądanie • Segmentacja na żądanie • Segmentacja ze stronicowaniem
Stronicowanie • Pamięć fizyczna jest podzielona na bloki jednakowego rozmiaru – ramki. • Logiczna przestrzeń jest podzielona na bloki o rozmiarze takim jak ramki – strony. • Tablica ramek – informacje o wolnych ramkach. • Tablica stron procesu – odwzorowuje adresy logiczne w adresy fizyczne. • Adres logiczny • numer strony (p) – indeks w tablicy stron, • przesunięcie w stronie (d) – numer bajtu w stronie.
Sprzęt stronicujący Adres logiczny Adres fizyczny Procesor s o r o Pamięć fizyczna s r Tablica stron
Stronicowanie • Tablica stron jest przechowywana w pamięci głównej. • Rejestr bazowy tablicy stron – wskazuje na początek tablicy stron. • Rejestry asocjacyjne (bufory translacji bliskiego otoczenia - TLB) – przyśpieszają translację. • Odwrotna tablica stron • Pozycja zawiera adres wirtualny strony umieszczonej w ramce i identyfikator procesu będącego właścicielem strony.
Stronicowanie na żądanie • Strona jest sprowadzana do pamięci w momencie, gdy pojawia się do niej odwołanie. • Bit poprawności odwołania: • 1 – strona w pamięci • 0 – strona poza pamięcią • Błąd braku strony (pagefault) • SO znajduje wolną ramkę, • sprowadza stronę z dysku do pamięci, • Bit poprawności odwołania := 1 • Restartuje instrukcję, która spowodowała błąd • Gdy nie ma wolnej ramki – wymiana stron (pagereplacement)
Wymiana stron • SO znajduje w pamięci stronę i usuwa ją na dysk. • Algorytmy wymiany stron: • FIFO • Optymalny • Usuń stronę, do której najdłużej nie będzie odwołania • LRU (LastRecentlyUsed) • Algorytmy przybliżające LRU • Bit odwołania • Algorytm drugiej szansy • Algorytm zegarowy • Migotanie – proces jest zajęty głównie przesyłaniem stron z dysku do pamięci i z pamięci na dysk.
Segmentacja na żądanie • Program jest zbiorem segmentów. • Segment – jednostka logiczna, np.: program główny, procedura, stos, zmienne. • Adres logiczny: (nr_segmentu, przesunięcie) • Tablica segmentów • Każda pozycja zawiera fizyczny adres początku segmentu i rozmiar tego segmentu. • Rejestr bazowy tablicy segmentów – zawiera adres początku tablicy segmentów. • Dzielenie na poziomie segmentów jest bardziej naturalne.
Segmentacja Ze stronicowaniem • Każdy segment ma swoją tablicę stron. (Multics) • Deskryptor segmentu zawiera adres tablicy stron segmentu, długość segmentu i pomocnicze bity. • Tablica segmentów jest stronicowana. • Translacja adresu (Intel 80386)
Algorytm tłumaczenia adresu na procesorze Intel 80386 • Adres wirtualny postaci: • selektor segmentu (16 bitów) • przesunięcie (32 bity) Adres liniowy (32 bity) Adres fizyczny (32 bity)
Wirtualizacja procesora • W systemie istnieje wiele procesów ubiegających się o czas procesora. • Zarządzaniem czasem dostępu do procesora zajmują się funkcje jądra systemu tzw. planiści. • Dzięki temu użytkownik nie odczuwa „wyścigu o procesor”. • Ma poczucie, że wszystkie jego programy użytkowe działają równocześnie. • Stwarza wrażenie, że każdy proces posiada swój własny procesor, na którym działa.
Scheduler • Proces szeregujący zajmuje się przydzielaniem czasu procesora zgodnie z polityką przy użyciu mechanizmów. • Polityka: • podział procesów na klasy, • określenie sposobu szeregowania dla każdej klasy, • określenie zasad przydziału procesora między klasami, • zarządzanie priorytetami. • Mechanizmy: • przerwania zegarowe, • kolejki i inne struktury opisujące stan procesu, • procedury przełączające kontekst.
Klasy procesów • Procesy czasu rzeczywistego (RT) • Mają pierwszeństwo przed zwykłymi procesami, • Szeregowane w ramach klasy przy użyciu: • Strategii karuzelowej (Round Robin) • Kolejki prostej (FIFO) • Procesy zwykłe • Do wykonania zostaje wybrany proces o największym priorytecie dynamicznym. • Proces idle
Wirtualny system plików • Abstrakcyjna powłoka leżąca ponad rzeczywistym systemem plików. • Umożliwia programom użytkownika korzystanie w jednakowy sposób, niezależnie od tego jaki system plików jest rzeczywiście wykorzystywany. • Dostarcza jednolity interfejs wspólny dla wszystkich systemów plików obsługiwanych przez jądro systemu operacyjnego.
Struktura systemu plików w Linuxie System plików Wirtualny system plików Proces Proces ext2 minix fat nfs proc Pamięć buforowa Sterowniki urządzeń
Operacje na plikach • Gdy program chce wykonać operację na pliku, odwołują się do funkcji VFS (np.: open, read). • VFS przechwytuje wywołania systemowe i do realizacji operacji na pliku wywołuje funkcję konkretnego systemu plików. • Programy mogą korzystać z plików niezależnie od tego, jaki system plików został użyty do ich przechowywania.
Superblok oraz i-węzły • Każdy zamontowany system plików jest reprezentowany przez superblok. • Plik reprezentowany jest przez i-węzeł. • Jest to metryczka zawierająca informacje o pliku. • Z każdym i-węzłem związany jest jego numer – jednoznaczna identyfikacja pliku w systemie plików. • W i-węźle przechowuje się niewielką tablicę numerów bloków składających się na plik.
Alokacja pliku na dysku w systemie ext2 • Wyróżniono cztery typy adresów przechowywanych w tablicy numerów bloków: • bezpośredni –adres bloku z danymi, • pojedynczy pośredni – adres bloku, który zawiera listę adresów bezpośrednich, • podwójny pośredni – adres bloku, który zawiera listę adresów bloków pojedynczych pośrednich, • potrójny pośredni – adres bloku, który zawiera listę adresów bloków podwójnych pośrednich. • Tablica z adresami w i-węźle ma rozmiar równy 15. • 12 pozycji z adresami bloków bezpośrednich, • po 1 pozycji dla bloku pojedynczego, podwójnego i potrójnego pośredniego.
Dostęp do pliku w ext2 I-węzeł Dane Dane o pliku Dane Wskaźniki do bloków adresowanych bezpośrednio Dane Dane Dane Dane Dane Dane Dane Wskaźnik pośredni Dane Wskaźnik dwupośredni Wskaźnik trójpośredni Dane Dane
Urządzenia wejścia-wyjścia • Urządzenia fizyczne są reprezentowane przez tzw. pliki specjalne. • Do obsługi urządzeń służą sterowniki urządzeń (zbiór funkcji jądra systemu). • Dostęp do sterowników jest poprzez tablice rozdzielcze urządzeń. • Plik specjalny tworzy się poleceniem mknod(). • Tworzy ono odpowiedni i-węzeł i dopisuje go do katalogu.