Pamięć wirtualna. Pamięć wirtualna



Podobne dokumenty
SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Podstawy. Pamięć wirtualna. (demand paging)

Pamięć wirtualna. A gdyby tak w pamięci przebywała tylko ta część programu, która jest aktualnie wykonywana?

Pamięć wirtualna. Jan Tuziemski Źródło części materiałów: os-book.com

Nakładki. Kod przebiegu 2: 80 kb Tablica symboli: 20 kb wspólne podprogramy: 30 kb Razem: 200 kb

Systemy operacyjne III

Stronicowanie w systemie pamięci wirtualnej

dr inż. Jarosław Forenc

Zarządzanie pamięcią operacyjną

dr inż. Jarosław Forenc

dr inŝ. Jarosław Forenc

Wykład 8. Pamięć wirtualna. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Działanie systemu operacyjnego

Architektura komputerów

Systemy Operacyjne Pamięć wirtualna cz. 2

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

Zarządzanie pamięcią operacyjną i pamięć wirtualna

Zarządzanie pamięcią w systemie operacyjnym

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

Działanie systemu operacyjnego

Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com

Działanie systemu operacyjnego

Budowa systemów komputerowych

Działanie systemu operacyjnego

Systemy Operacyjne Pamięć wirtualna cz. 1

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

TEMAT 5 Zarządzanie pamięcią operacyjną

Pamięć wirtualna. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Wykład 7. Zarządzanie pamięcią

Stronicowanie na ¹danie

Od programu źródłowego do procesu

Proces y i y w i ąt ą ki

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Schematy zarzadzania pamięcia

Zarz arz dzanie pam dzanie ięci ę ą

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

Zarz arz dzanie pam dzanie ięci ę ą

Prezentacja systemu RTLinux

Systemy operacyjne III

Zarządzanie pamięcią operacyjną

Zarządzanie zasobami pamięci

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Architektura komputerów

Pamięć wirtualna jest organizacją zasobów pamięci, zrealizowaną w oparciu o tzw. przestrzeń wymiany w pamięci drugiego rzędu (na dysku).

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Struktura systemów komputerowych

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

Architektura komputerów

Programowanie współbieżne Wykład 2. Iwona Kochańska

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Mikroprocesor Operacje wejścia / wyjścia

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

obszar bezpośrednio dostępny dla procesora rozkazy: load, store (PAO rejestr procesora)

SYSTEMY OPERACYJNE LABORATORIUM 2014/2015

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Wprowadzenie do systemów operacyjnych

Technologie informacyjne (2) Zdzisław Szyjewski

Zarządzanie pamięcią. Podstawy Wymiana (swapping). Przydział ciągły pamięci. Stronicowanie. Segmentacja. Segmentacja ze stronicowaniem.

Architektura systemu komputerowego

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Od programu źródłowego do procesu

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

ARCHITEKTURA PROCESORA,

LEKCJA TEMAT: Zasada działania komputera.

Organizacja typowego mikroprocesora

4. Procesy pojęcia podstawowe

System operacyjny MACH

Architektura komputerów

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

projektowanie systemu

architektura komputerów w. 8 Zarządzanie pamięcią

Pytania do treści wykładów:

ZASADY PROGRAMOWANIA KOMPUTERÓW

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Ograniczenia efektywności systemu pamięci

Architektura komputerów

System plików. Warstwowy model systemu plików

Wprowadzenie do systemów operacyjnych. mgr inż. Krzysztof Szałajko

Architektura komputerów

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

Systemy operacyjne. Struktura i zasady budowy. Rozdział 1 Wprowadzenie do systemów komputerowych

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Architektura komputerów. Układy wejścia-wyjścia komputera

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

4. Procesy pojęcia podstawowe

Transkrypt:

Pamięć wirtualna Pamięć wirtualna Podstawy. Stronicowanie na żądanie. Kopiowanie przy zapisie. Zastępowanie stron. Algorytmy zastępowania stron. Przydział ramek. Szamotanie (migotanie). Pliki odwzorowywane w pamięci. Inne kwestie stronicowania. Przykłady systemy: Windows XP i Solaris. Wiesław Płaczek Systemy Operacyjne: Wykład 7 1

Podstawy Pamięć wirtualna jest techniką, która umożliwia wykonywanie procesów, pomimo że nie są one w całości przechowywane w pamięci operacyjnej. Pozwala stworzyć abstrakcyjną pamięć główną w postaci olbrzymiej, jednolitej tablicy i odseparować pamięć logiczną od pamięci fizycznej. Logiczna przestrzeń adresowa może być większa niż przestrzeń fizyczna. Umożliwia wykonywanie programu, który tylko w części znajduje się w pamięci fizycznej program nie jest ograniczony wielkością dostępnej pamięci fizycznej (może być od niej większy). Zwiększa wieloprogramowość (więcej procesów może być wykonywanych w tym samym czasie) lepsze wykorzystanie procesora i przepustowość. Pozwala na wydajniejsze tworzenie i wymianę procesów mniej potrzebnych operacji wejścia-wyjścia. Uwalnia użytkownika od potrzeby znajomości organizacji i ograniczeń pamięci fizycznej ułatwia programowanie. Pamięć wirtualna jest najczęściej implementowana w formie: Stronicowania na żądanie (demand paging); Segmentacji na żądanie (demand segmentation) rzadziej, np. IBM OS/2. Wiesław Płaczek Systemy Operacyjne: Wykład 7 2

Schemat pamięci wirtualnej Strona 0 Strona 1 Strona 2... Strona n Pamięć wirtualna Odwzorowanie pamięci Pamięć fizyczna Dysk Wiesław Płaczek Systemy Operacyjne: Wykład 7 3

Wiesław Płaczek Systemy Operacyjne: Wykład 7 4 Stronicowanie na żądanie Procesy podzielone na strony przebywają w pamięci pomocniczej (zwykle dysk). Strona jest sprowadzana z pamięci pomocniczej do operacyjnej tylko wtedy, kiedy jest potrzebna. Mniej operacji WE/WY. Mniejsze zapotrzebowanie na pamięć. Krótszy czas odpowiedzi. Może pracować równocześnie więcej użytkowników. Strona jest potrzebna kiedy następuje do niej odwołanie. Z każdą pozycją w tablicy stron związany jest bit poprawności (valid-invalid bit): Wartość = 1: strona dozwolona i znajduje się w pamięci operacyjnej. Wartość = 0: strona niedozwolona albo jest poza pamięcią operacyjną. Odwołanie do strony z bitem poprawności równym 0 powoduje pułapkę braku strony (page-fault trap), po czym następuje awaryjne przejście do systemu operacyjnego.

Wiesław Płaczek Systemy Operacyjne: Wykład 7 5 Tablica stron z brakami stron w pamięci Bit 0 poprawności 1 0 A Ramka 2 1 B 3 0 4 1 4 2 C 1 0 5 2 6 1 6 3 D 3 0 7 4 E 4 0 8 5 9 1 9 5 F 6 0 10 6 G 7 0 11 Tablica stron 12 7 H 13 Pamięć logiczna 14 15 A C F Pamięć fizyczna A B C D E F Dysk

Obsługa braku strony Obsługa braku strony 1. Sprawdzamy wewnętrzną tablicę (w bloku kontrolnym procesu), aby określić czy odwołanie do pamięci było dozwolone. 2. Jeżeli odwołanie było niedozwolone, kończymy proces. Jeśli było dozwolone, lecz zabrakło właściwej strony w pamięci, to sprowadzamy tę stronę. 3. Znajdujemy wolną ramkę. 4. Zamawiamy wczytanie z dysku potrzebnej strony do wolnej ramki. 5. Po zakończeniu czytania modyfikujemy wewnętrzną tablicę procesu oraz tablicę stron, zaznaczając, że strona jest w pamięci. 6. Wznawiamy wykonanie rozkazu przerwanego brakiem strony i kontynuujemy wykonywanie procesu (czasami do wykonania rozkazu potrzeba sprowadzić więcej niż jedną stronę). Skrajny przypadek: czyste stronicowanie na żądanie (pure demand paging) rozpoczynanie wykonywania procesu bez żadnej strony w pamięci (nigdy nie sprowadza się strony do pamięci, zanim nie będzie potrzebna). Wiesław Płaczek Systemy Operacyjne: Wykład 7 6

Wiesław Płaczek Systemy Operacyjne: Wykład 7 7 Etapy obsługi braku strony 3 Strona jest w pamięci pomocniczej System operacyjny Odniesienie 1 2 Pułapka Umieść M 6 Wznowienie wykonania 0 Tablica stron 5 Odnowienie tablicy stron Pamięć fizyczna 4 Sprowadzenie brakującej strony

Wydajność stronicowania na żądanie Wydajność stronicowania na żądanie Czas dostępu do pamięci: τ (obecnie nanosekundy). Prawdopodobieństwo braku strony: p (0 p 1). Czas obsługi braku strony: Τ. Efektywny czas dostępu: t_ef = (1 p) τ + p Τ. Główne składowe czasu obsługi braku strony: 1. Obsługa przerwania wywołanego brakiem strony. 2. Wczytanie strony z dysku do pamięci (zwykle najbardziej czasochłonne). 3. Wznowienie procesu. Przykład: τ = 100 ns, T = 25 ms = 25 000 000 ns, t_ef [ns] = (1 p) 100 + p 25 000 000 = 100 + 24 999 900 p. Aby pogorszenie szybkości dostępu do pamięci spowodowane brakiem stron było mniejsze niż 10%, potrzeba: p < 0.0000004, czyli mniej niż 1 brak strony na 2 500 000 odniesień do pamięci! Wiesław Płaczek Systemy Operacyjne: Wykład 7 8

Kopiowanie przy zapisie Tworząc proces przy pomocy wywołania systemowego fork() można początkowo obejść konieczność stronicowania na żądanie używając techniki podobnej do dzielenia stron. Po wywołaniu fork() proces potomny i macierzysty mogą dzielić początkowo te same strony oznaczone jako kopiowane przy zapisie (copy-on-write). Jeżeli któryś z procesów próbuje zapisać coś na takiej stronie, to tworzona jest kopia tej strony i odwzorowywana w przestrzeni adresowej tego procesu. Wszystkie nie zmienione strony mogą być dzielone przez procesy. Umożliwia błyskawiczne utworzenie procesu i minimalizuje liczbę nowych stron. Jest to popularna technika stosowana w wielu systemach operacyjnych, m.in. Windows XP, Linux i Solaris. W kilku wersjach systemu UNIX (np. Solaris i Linux) występuje funkcja vfork() (virtual memory fork): Nie wykonuje ona kopiowania przy zapisie. Proces macierzysty jest zawieszany, a jego przestrzeni adresowej używa potomek. Jest stosowana wówczas gdy proces potomny natychmiast po utworzeniu wywołuje funkcję exec(). Bardzo wydajna metoda tworzenia procesu używana czasem dla poleceń powłoki. Musi być stosowana ostrożnie trzeba uważać aby proces potomny nie zmieniał przestrzeni adresowej procesu macierzystego. Wiesław Płaczek Systemy Operacyjne: Wykład 7 9

Zastępowanie stron Co zrobić kiedy nie ma wolnej ramki dla potrzebnej strony? Zastępowanie stron (page replacement): 1. Zlokalizowanie potrzebnej strony na dysku. 2. Wykonanie algorytmu zastępowania stron w celu wytypowania ramkiofiary (victim frame). 3. Zapisanie strony-ofiary na dysku oraz stosowna zmiana tablic stron i ramek. 4. Wczytanie potrzebnej strony do zwolnionej ramki oraz zmiana tablicy stron i tablicy ramek. 5. Wznowienie działania procesu. Może powodować dwukrotne wydłużenie czasu obsługi braku strony (przesyłanie z pamięci na dysk i z dysku do pamięci)! Aby zmniejszyć narzut związany z zastępowaniem stron, każdą stronę lub ramkę wyposaża się w sprzętowy bit modyfikacji (zabrudzenia) (modify (dirty) bit) tylko strony zmodyfikowane są wysyłane na dysk podczas zastępowania. Zastępowanie stron dopełnia rozdzielenia pamięci logicznej od pamięci fizycznej! Wiesław Płaczek Systemy Operacyjne: Wykład 7 10

Wiesław Płaczek Systemy Operacyjne: Wykład 7 11 Schemat zastępowania stron Ramka Bit poprawności 0 r n p Tablica stron Zamiana na niepoprawne 2 r Ofiara Wysłanie strony-ofiary 4 3 Uaktualnienie Sprowadzenie tablicy stron potrzebnej dla nowej strony strony 1 Pamięć fizyczna

Wiesław Płaczek Systemy Operacyjne: Wykład 7 12 Algorytmy zastępowania stron Algorytm zastępowania stron powinien minimalizować częstość braków stron (page-fault rate). Algorytm ocenia się na podstawie wykonania go na pewnym ciągu odniesień (reference string) do pamięci i zsumowania braków stron. Ciąg odniesień można tworzyć sztucznie lub na podstawie śledzenia danego systemu. W poniższych przykładach ciąg odniesień ma postać: Liczba braków stron 14 12 10 8 6 4 2 0 Wykres zależności braków stron od liczby ramek 0 1 2 3 4 5 6 7 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. Liczba ramek

Algorytm FIFO Ciąg odniesień: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. 3 ramki (3 strony mogą być w pamięci w tym samym czasie): 1 2 3 1 2 3 4 1 2 5 3 4 9 braków stron 4 ramki: 1 5 4 2 3 4 1 5 2 3 10 braków stron Anomalia Belady ego (Belady s anomaly) współczynnik braków stron wzrasta ze wzrostem liczby wolnych ramek! Wiesław Płaczek Systemy Operacyjne: Wykład 7 13

Wiesław Płaczek Systemy Operacyjne: Wykład 7 14 Anomalia Belady ego Wykres braków stron dla algorytmu FIFO Liczba braków stron 14 12 10 8 6 4 2 0 0 1 2 3 4 5 6 7 Liczba ramek

Algorytm optymalny (OPT) Zastąp tę stronę, która najdłużej nie będzie używana. Przykład: 4 ramki, ciąg odniesień: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5; 1 2 3 4 5 Algorytm OPT ma najniższy współczynnik braków stron ze wszystkich algorytmów. Jest wolny od anomalii Belady ego. 4 6 braków stron Jest trudny w realizacji, ponieważ wymaga wiedzy o przyszłej postaci ciągu odniesień (skąd ją wziąć?). Algorytm OPT jest używany głównie w studiach porównawczych jako odnośnik dla innych algorytmów. Wiesław Płaczek Systemy Operacyjne: Wykład 7 15

Algorytm LRU Algorytm zastępowania najdawniej używanych stron (least recently used LRU): używa niedawnej historii do oszacowania najbliższej przyszłości. Przykład: 4 ramki, ciąg odniesień: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5; 1 2 3 4 5 4 3 5 8 braków stron Lepszy od algorytmu FIFO (mniej braków stron) i wolny od anomalii Belady ego często stosowany. Trudność z zapamiętywaniem historii użycia stron może wymagać sporego zaplecza sprzętowego. Algorytm LRU, podobnie jak OPT, należy do klasy algorytmów stosowych: zbiór stron w pamięci przy n ramkach jest zawsze podzbiorem zbioru stron w pamięci przy n + 1 ramkach. Algorytmy takie nie posiadają anomalii Belady ego. Wiesław Płaczek Systemy Operacyjne: Wykład 7 16

Implementacja algorytmu LRU Implementacja algorytmu LRU Implementacja z licznikiem: Do każdej pozycji w tablicy stron dołącza się rejestr czasu użycia, a do procesora dodaje się zegar logiczny lub licznik. Wskazania zegara są zwiększane przy każdym odniesieniu do pamięci, a jego zawartość jest kopiowana do rejestru czasu użycia danej strony. Kiedy pojawi się potrzeba zastąpienia jakiejś strony w pamięci, to sprawdza się wartości rejestrów czasu użycia stron i jako stronę-ofiarę wybiera się tę z najmniejszą wartością czasu. Wymaga sporego nakładu: przeglądanie wszystkich stron, uaktualnianie rejestrów czasu użycia (również przy wymianach tablic stron) itd. Implementacja ze stosem: Utrzymywanie stosu numerów stron. Przy każdym odwołaniu do strony jej numer wyjmuje się ze stosu i umieszcza na jego szczycie (na szczycie jest zawsze strona ostatnio użyta). Najlepsza implementacja w postaci listy dwukierunkowej ze wskaźnikami do czoła i końca listy wyjęcie strony i umieszczenie jej na szczycie wymaga zmiany co najwyżej 6 wskaźników. Zastąpienie strony nie wymaga przeszukiwania listy (najdawniej używana strona jest na dnie stosu). Wiesław Płaczek Systemy Operacyjne: Wykład 7 17

Algorytmy przybliżające metodę LRU Niewiele systemów posiada odpowiedni sprzęt do realizacji prawdziwego algorytmu LRU często stosowane są algorytmy przybliżające zastępowanie stron metodą LRU. Algorytm bitów odniesienia: Z każdą pozycją w tablicy stron związany jest bit odniesienia (reference bit), początkowo ustawiony na 0. Kiedy następuje odniesienie do strony jej bit odniesienia jest ustawiany na 1. Zastępowana jest ta strona, w porządku FIFO, której bit odniesienia = 0. Algorytm dodatkowych bitów odniesienia: Z każdą stroną związany jest 8-bitowy rejestr; na początku: 0000000. W regularnych odstępach czasu (np. co 100 ms) system operacyjny wprowadza bit odniesienia na najbardziej znaczącą pozycję rejestru. Jako strona-ofiara przy zastępowaniu wybierana jest strona zawierająca najmniejszą liczbę w rejestrze, np. 0111010 < 1100010. Algorytm drugiej szansy (zegarowy): Strony przeglądane są w porządku FIFO. Jeżeli bit odniesienia = 0, to strona zostaje wybrana do zastąpienia. Jeżeli bit odniesienia = 1, to bit ten jest zerowany, a strona dostaje drugą szansę, tzn. do zastąpienia bierze się pod uwagę następną stronę itd. Przeglądanie stron wykonuje się cyklicznie. Ulepszenie branie pod uwagę pary: (bit odniesienia, bit modyfikacji). Wiesław Płaczek Systemy Operacyjne: Wykład 7 18

Wiesław Płaczek Systemy Operacyjne: Wykład 7 19 Algorytm drugiej szansy (zegarowy) Bit odniesienia Strony Bit odniesienia Strony 0 0 Następna ofiara 1 0 1 0 0 0............ 1 1 (a) Cykliczna kolejka stron (b)

Algorytmy zliczające Wprowadzenie liczników odwołań do każdej strony. Algorytm LFU najrzadziej używanej strony (least fequently used): do zastąpienia wybiera się stronę o najmniejszej wartości licznika. Może być obarczony błędami wynikającymi z tego, że strona była na początku intensywnie używana, a potem nie jest wcale potrzebna. Rozwiązanie: przesuwanie liczników w prawo o 1 bit w regularnych odstępach czasu. Algorytm MFU najczęściej używanej strony (most fequently used): do zastąpienia wybiera się stronę o największej wartości licznika. Uzasadnienie: Strona o najmniejszej wartości licznika prawdopodobnie została niedawno wprowadzona do pamięci i będzie jeszcze używana. Implementacja tych algorytmów jest kosztowna, a nie przybliżają one dobrze algorytmu OPT. Algorytm buforowania stron Systemy często przechowują pulę wolnych ramek. Potrzebną stronę wczytuje się do wolnej ramki, a dopiero później usuwa się stronę-ofiarę zwalniając ramkę. Wiesław Płaczek Systemy Operacyjne: Wykład 7 20

Przydział ramek Minimalna liczba ramek: Istnieje minimalna liczba ramek, które muszą być przydzielone procesowi zdefiniowana jest przez architekturę logiczną komputera. Liczba ramek musi być wystarczająca do pomieszczenia wszystkich stron, do których może odnosić się pojedynczy rozkaz (niektóre rozkazy mogą zawierać wiele poziomów adresowania pośredniego). Algorytmy przydziału ramek: Przydział równy (equal allocation): Każdy proces dostaje tyle samo ramek, np. Jeżeli mamy 100 ramek i 5 procesów, to dajemy każdemu po 20 ramek. Przydział proporcjonalny (proportional allocation): Każdemu procesowi przydziela się liczbę ramek proporcjonalnie do jego rozmiaru. Przydział priorytetowy (priority allocation): Liczba przydzielanych ramek jest proporcjonalna do priorytetu procesu albo do kombinacji rozmiaru i priorytetu (proces o wyższym priorytecie dostaje więcej ramek). Globalny lub lokalny przydział ramek: Zastępowanie globalne: Proces może wybierać ramki do zastąpienia ze zbioru wszystkich ramek jeden proces może odebrać ramkę drugiemu. Zastępowanie lokalne: Proces może wybierać ramki tylko z własnego zbioru przydzielonych ramek gorsza przepustowość, rzadziej stosowane. Wiesław Płaczek Systemy Operacyjne: Wykład 7 21

Wiesław Płaczek Systemy Operacyjne: Wykład 7 22 Szamotanie Jeżeli proces nie ma wystarczającej liczby stron w pamięci operacyjnej, to częstotliwość braków stron będzie wysoka. Prowadzi to do: Zmniejszenia wykorzystania procesora. Mniejsze wykorzystanie procesora może być sygnałem dla planisty przydziału procesora do zwiększenia wieloprogramowości. Kolejny proces jest dodawany do systemu, co jeszcze zwiększa częstość braków stron. Wykorzystanie procesora jeszcze się zmniejsza, co jest sygnałem dla planisty do dalszego zwiększania wieloprogramowości itd. Powstaje szamotanina przepustowość systemu gwałtownie spada! Szamotanie (migotanie) (thrashing) sytuacja, w której proces jest zajęty głównie wymianą stron (przesyłaniem między dyskiem a pamięcią operacyjną). Szamotanie powoduje wyraźne zaburzenia wydajności systemu!

Unikanie szamotania Szamotanie Wykorzystanie procesora Szamotanie Stopień wieloprogramowości Efekt szamotania można ograniczać za pomocą lokalnego algorytmu zastępowania jeżeli jakiś proces się szamoce, to nie powinien zabierać ramek innemu procesowi i doprowadzać go też do szamotania. Aby zapobiec szamotaniu należy dostarczyć procesowi tyle ramek ile potrzebuje ale jak się o tym dowiedzieć? Model strefowy (locality model): Strefa programu zbiór stron pozostających we wspólnym użyciu. Program składa się z wielu różnych stref, które mogą na siebie zachodzić. W trakcie wykonania proces przechodzi z jednej strefy programu do innej. Aby uniknąć szamotania należy przydzielić procesowi tyle ramek, by mógł w nich pomieścić daną strefę. Wiesław Płaczek Systemy Operacyjne: Wykład 7 23

Strefy lokalne w odwołaniach do pamięci Wiesław Płaczek Systemy Operacyjne: Wykład 7 24

Model zbioru roboczego Model zbioru roboczego (working-set model) opiera się na założeniu, że program ma charakterystykę strefową (lokalność odwołań). okno zbioru roboczego: ustalona liczba odwołań do stron. Zbiór roboczy zbiór stron, do których nastąpiło ostatnich odwołań: Ślad odwołań do stron... 2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 4 4 3 4 3 4 4 4 1 3 2 3 4 4 4 3 4 4 4... t1 t2 ZR(t1) = {1,2,5,6,7} ZR(t2) = {3,4} RZR_i rozmiar zbioru roboczego całkowite zapotrzebowanie na ramki: Z = Σ RZR_i. Szamotanie powstanie, gdy Z > m = całkowita liczba ramek. System przydziela ramki procesom wg. ich zbiorów roboczych. Wiesław Płaczek Systemy Operacyjne: Wykład 7 25

Model zbioru roboczego w praktyce Model zbioru roboczego w praktyce Gdy suma rozmiarów zbiorów roboczych wzrasta i zaczyna przekraczać liczbę dostępnych ramek, system operacyjny wstrzymuje jeden proces. Strategia zbioru roboczego zapobiega szamotaniu i utrzymuje stopień wieloprogramowości na wysokim poziomie optymalizuje wykorzystanie procesora. Trudności: Jak dobrać rozmiar zbioru roboczego? za małe nie obejmuje całej strefy programu, za duże może zachodzić na kilka stref ( = : cały program). Jak utrzymywać ślad zbioru roboczego? Wykorzystanie przerwań w stałych odstępach czasu oraz bitu odniesienia. Przykład: = 10 000; o Zegar generuje przerwania co 5000 odniesień. o Dla każdej strony przechowuje się w pamięci 2 bity. o Kiedy pojawia się przerwanie kopiuje się do pamięci oraz zeruje bit odniesienia. o Jeżeli jeden z bitów w pamięci = 1, to strona należy do zbioru roboczego. Ulepszenie: 10 bitów w pamięci i przerwania co 1000 odniesień. Wiesław Płaczek Systemy Operacyjne: Wykład 7 26

Wiesław Płaczek Systemy Operacyjne: Wykład 7 27 Częstość braków stron Model zbioru roboczego daje dobre rezultaty, jednak nie jest wygodną metodą nadzorowania szamotania. Prostszym sposobem jest mierzenie częstości braków stron (page-fault frequency PFF): Ustala się dolną i górną granicę częstości braków stron. Jeżeli proces przekracza górną granicę, przydziela się mu dodatkową ramkę (w przypadku niedoboru ramek można wstrzymać jakiś proces). Jeżeli częstość braków stron procesu spada poniżej dolnej granicy, odbiera się mu ramkę. Częstość braków stron Liczba braków stron Liczba ramek Zwiększ liczbę ramek Granica górna Granica dolna Zmniejsz liczbę ramek

Pliki odwzorowywane w pamięci Podczas sekwencyjnego przetwarzania pliku na dysku za pomocą standardowych funkcji systemowych open(), read() i write() każdy kontakt z plikiem wymaga odwołania do systemu i dostępu do dysku. Zamiast tego można skorzystać z metod pamięci wirtualnej i potraktować WE/WY plikowe jak rutynowy dostęp do pamięci. Tego typu podejście zwane odwzorowaniem pliku w pamięci (operacyjnej) (memory mapping) polega na logicznym skojarzeniu z plikiem fragmentu pamięci wirtualnej. Odbywa się przez odwzorowanie bloku dyskowego na stronę(y) pamięci. Pierwszy dostęp do pliku odbywa się za pośrednictwem stronicowania na żądanie i skutkuje brakiem strony, co powoduje wczytanie do pamięci porcji pliku o rozmiarze strony (czasem jednorazowo wczytuje się więcej stron). Następne operacje czytania i pisania pliku obsługiwane są jak zwyczajne dostępy do pamięci operacyjnej. Zapisy do pamięci niekoniecznie muszą oznaczać zapisy do pliku na dysku! Prostszy i szybszy kontakt z plikami, łatwe dzielenie części plików przez procesy! W niektóre systemach odwzorowania w pamięci dokonywane są tylko poprzez specjalne wywołania systemowe, a inne plikowe operacje WE/WY realizowanie są za pomocą standardowych funkcji systemowych. Np. system Solaris zawsze wykonuje odwzorowanie jeśli użyto funkcji mmap(), to plik odwzorowywany jest w przestrzeni procesu, jeśli nie, to w przestrzeni jądra. Wiesław Płaczek Systemy Operacyjne: Wykład 7 28

Pliki odwzorowane w pamięci 1 2 3 4 5 6 Pamięć wirtualna procesu A 3 6 1 5 4 2 Pamięć fizyczna 1 2 3 4 5 6 Pamięć wirtualna procesu B 1 2 3 4 5 6 Pamięć dyskowa Wiesław Płaczek Systemy Operacyjne: Wykład 7 29

Inne kwestie stronicowania Inne kwestie stronicowania Stronicowanie wstępne (prepaging): Jednorazowe wprowadzenie do pamięci wszystkich stron, które wiadomo, iż będą potrzebne, np. całego zbioru roboczego. Trzeba rozstrzygnąć czy koszt stronicowania wstępnego jest mniejszy niż koszt obsługi odpowiednich braków stron. Rozmiar strony: Jaki wybrać rozmiar strony? Zmniejszanie rozmiaru strony zmniejsza fragmentacje wewnętrzną, ale zwiększa zużycie pamięci na przechowywanie tablic stron. Zwiększanie rozmiaru strony zmniejsza zużycie pamięci na tablice stron, ale powoduje większą fragmentację wewnętrzną pamięci. Czas operacji WE/WY potrzebnych do odczytania i zapisania strony składa się z czasu: wyszukiwania, wykrywania i przesyłania. We współczesnych systemach komputerowych szybkość przesyłania jest na ogół znacznie większa od pozostałych dwóch, co przemawia za dużym rozmiarem stron. Mniejsze strony łatwiej dopasować do stref programu (większa rozdzielczość). Przy większych stronach zmniejsza się liczba braków stron. Obecnie jest tendencja do zwiększania rozmiarów stron (wzrost szybkości procesorów i pojemności pamięci jest szybszy niż szybkości dysków). Wiesław Płaczek Systemy Operacyjne: Wykład 7 30

Inne kwestie stronicowania c.d. Zasięg TLB: Współczynnik trafień w buforze TLB podczas tłumaczenia adresów wirtualnych może wpływać znacząco na szybkość dostępu do pamięci. Zasięg TLB ilość pamięci dostępnej w buforze, czyli liczba jego pozycji pomnożona przez rozmiar strony. Zwiększanie zasięgu TLB zwiększanie liczby pozycji w buforze lub zwiększanie rozmiaru strony. Niektóre architektury udostępniają strony o różnych rozmiarach, np. system Solaris korzysta ze stron 8 KB i 4 MB zależnie od potrzeb. Odwrócona tablica stron: Odwrócona tablica stron ma po jednej pozycji na każdą ramkę, a indeksowana jest za pomocą pary <PID,numer_strony> pozwala to zaoszczędzić miejsca w pamięci. Odwrócona tablica stron nie zawiera jednak pełnych informacji o logicznej przestrzeni adresowej procesu, potrzebnych do obsługi braków stron. Aby umożliwić stronicowanie na żądanie, dla każdego procesu utrzymuje się zewnętrzną tablicę stron zawierającą informację o położeniu każdej strony wirtualnej procesu. Odwołania do takich tablic występują tylko wskutek braków stron, zatem dostęp do nich nie musi być szybki. Wiesław Płaczek Systemy Operacyjne: Wykład 7 31

Inne kwestie stronicowania c.d. Struktura programu: Struktura programu może mieć również spory wpływ na stronicowanie! Przykład: const n = 1024; float t[][] = new float[n][n]; Każdy wiersz tablicy umieszczony w pamięci na jednej stronie. Program 1: for (j = 0; j < n; j++) for (i = 0; i < n; i++) t[i][j] = 0.0; maksymalnie 1024 x 1024 braków stron! Program 2: for (i = 0; i < n; i++) for (j = 0; j < n; j++) t[i][j] = 0.0; maksymalnie 1024 braki stron! Dobra lokalność kodu i struktur danych zwiększa efektywność stronicowania. Używanie wskaźników (również OOP) na ogół psuje lokalność kodu! Wiesław Płaczek Systemy Operacyjne: Wykład 7 32

Inne kwestie stronicowania c.d. Powiązanie stron z operacjami wejścia-wyjścia: Jak pogodzić zastępowanie stron z operacjami WE/WY? Np. proces wysyła zamówienie na operacje WE/WY i zanim te operacje zostaną zrealizowane, system zastępuje jego stronę z buforem inną stroną. Stosuje się dwa rozwiązania: 1. Wykonywanie operacji WE/WY za pośrednictwem pamięci systemu. 2. Blokowanie (locking) stron w pamięci do czasu zakończenia operacji WE/WY (każdej ramce przyporządkowuje się bit blokowania) ryzykowne! Przetwarzanie w czasie rzeczywistym: Proces lub wątek działający w czasie rzeczywistym powinien niezwłocznie otrzymać procesor i działać z minimalnymi opóźnieniami. Ponieważ pamięć wirtualna może powodować przestoje w wykonywaniu procesu, dlatego większość systemów czasu rzeczywistego (i systemów wbudowanych) nie posiada pamięci wirtualnej. System Solaris umożliwia zarówno podział czasu, jak i obliczenia w czasie rzeczywistym proces czasu rzeczywistego ma możliwość powiadamiania systemu o ważnych stronach, a uprzywilejowani użytkownicy mogą blokować strony w pamięci (niebezpieczeństwo nadużycia!). Wiesław Płaczek Systemy Operacyjne: Wykład 7 33

Pamięć wirtualna w MS Windows XP Pamięć wirtualna jest realizowana przy użyciu stronicowania na żądanie z grupowaniem (clustering) do pamięci sprowadzana jest nie tylko brakująca strona, ale także pewna liczba stron z jej otoczenia. Zaraz po utworzeniu procesowi przypisuje się minimum i maksimum zbioru roboczego w tym zakresie przydziela się procesowi strony w zależności od ilości wolnej pamięci (czasem pozwala się procesowi przekroczyć maksimum). Zarządca pamięci wirtualnej utrzymuje wykaz wolnych ramek, z którym skojarzona jest pewna wartość progowa (threshold value). Gdy ilość wolnej pamięci spada poniżej wartości progowej, zarządca pamięci wirtulanej stosuje taktykę zwaną automatycznym przycinaniem zbioru roboczego (authomatic working-set trimming) w celu przywrócenia wartości ponadprogowej procesom, które mają więcej stron niż wynosi ich minimum zbioru roboczego odbierane są strony. Algorytm wyznaczania strony do usunięcia zależy od typu procesora: W jednoprocesorowych systemach x86 Windows XP używa odmiany algorytmu zegarowego. Dla procesorów Alpha i wieloprocesorowych systemów x86 Windows XP stosuje odmianę algorytmu FIFO. Wiesław Płaczek Systemy Operacyjne: Wykład 7 34

Pamięć wirtualna w systemie Solaris Z wykazem wolnych stron związany jest parametr lotsfree (tzn. miejsca pod dostatkiem) będący progiem rozpoczynania stronicowania na ogół wynosi 1/64 rozmiaru pamięci fizycznej. W ustalonych odstępach czasu jądro sprawdza, czy ilość wolnej pamięci nie jest mniejsza od lotsfree jeżeli tak, to uruchamiany jest proces wymiatania stron (pageout). Proces wymiatania stron realizuje odmianę algorytmy drugiej szansy zwaną algorytmem zegara dwuwskazówkowego (two-handed-clock algorithm): Pierwsza wskazówka obiega wszystkie strony pamięci i ustawia ich bity odniesień na 0. Po pewnym czasie druga wskazówka sprawdza bity odniesień do stron w pamięci i zwalnia te strony, których bity są dalej równe 0. Szybkość analizowania stron (scanrate) w powyższym algorytmie jest określona za pomocą kilku parametrów sterujących: od slowscan (wolna analiza) do fastscan (szybka analiza). Odległość w stronach między wskazówkami zegara jest określona przez parametr handspread. Jeżeli ilość wolnej pamięci spada poniżej poziomu desfree, to jądro zaczyna wymianę procesów (swapping). Jeżeli system nie jest w stanie utrzymać ilości wolnej pamięci na poziomie minfree, to wymiatanie jest wołane przy każdym zamówieniu nowej strony. Wiesław Płaczek Systemy Operacyjne: Wykład 7 35