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 Procesor Pamięć fizyczna s o r Tablica stron Adres logiczny Adres fizyczny
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 (page fault) 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 (page replacement)
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 (Last Recently Used) 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 Instrukcja programu odwołująca się do pamięci Jednostka segmentacji Jednostka stronicowania Pamięć Jądro Linuksa 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) Procesy zwykłe 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 ext2 minix fat nfs proc Pamięć buforowa Sterowniki urządzeń Proces
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 o pliku Wskaźniki do bloków adresowanych bezpośrednio Wskaźnik pośredni Wskaźnik trójpośredni Wskaźnik dwupośredni Dane I-węzeł
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.
Dziękuję …