SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW
Pamięć wirtualna Stronicowanie na żądanie większość współczesnych systemów operacyjnych Segmentacja na żądanie system OS/ dla procesora Intel 8086
Idea Stronicowanie na żądanie punkt wyjścia stronicowanie z wymianą procesów wymiana pojedynczych stron zamiast wymiany całych procesów Mechanizmy stronicowanie pamięci sprowadzanie brakujących stron na żądanie zastępowanie stron wymiana procesów
Model stronicowania na żadanie Pamięć fizyczna Pamięć pomocnicza Pamięć logiczna Strona 0 Strona Strona Strona Strona Strona Tablica stron 0 0 Strona 0 Strona 6 0 adres ramki bit poprawności 0 6 7 8 Strona S0 S S S S S
Tablica stron Pozycja w tablicy stron zawiera: adres bazowy ramki bit poprawności strona znajduje się w pamięci operacyjnej bit modyfikacji strona została zmodyfikowana w pamięci operacyjnej bit odniesienia nastąpiło ostatnio odniesienie do strony bity ochrony prawa dostępu do danego obszaru pamięci wiek strony
Sprowadzanie stron na żądanie Generacja błędu braku strony (sprzęt stronicujący) odwołanie do strony nie sprowadzonej do pamięci operacyjnej wykrywa na podstawie bitu poprawności Obsługa błędu braku strony zapamiętanie kontekstu procesu, sprawdzenie poprawności adresu wirtualnego (pułapka) sprawdzenie, czy typ dostępu do strony był dozwolony (pułapka) znalezienie i przydział wolnej ramki, sprowadzenie potrzebnej strony do przydzielonej ramki, modyfikacja odpowiedniej pozycji w tablicy stron, wznowienie wykonania instrukcji kodu programu
Zastępowanie stron Przebieg znalezienie ramki ofiary wysłanie strony do pamięci pomocniczej gdy ustawiony bit modyfikacji sprowadzenie brakującej strony Zastępowanie globalne wybór ramki spośród wszystkich ramek pamięci procesy z wyższym priorytetem mogą odbierać ramki innym procesom Zastępowanie lokalne wybór ofiary spośród ramek już przydzielonych procesowi
Algorytmy zastępowania stron Minimalizacja częstości błędów braku strony liczba błędów liczba ramek Testowy ciąg odniesień do pamięci (numery stron)
Algorytm FIFO Wybór strony najdawniej sprowadzonej do pamięci (najstarszej) kolejka FIFO stron w pamięci przykład: ramki, testowy ciąg odniesień do stron 9 błędów braku strony
Anomalia Belady ego ramki 0 błędów braku strony ramki 9 błędów braku strony Wzrost liczby błędów przy wzroście liczby ramek
Algorytm optymalny OPT Wybór strony, która najdłużej nie będzie używana 7 błędów braku strony Konieczne przewidywanie przyszłości Punkt odniesienia dla innych algorytmów
Algorytm LRU przybliżenie OPT Wybór najdawniej używanej strony ramki 9 błędów braku strony ramki 8 błędów braku strony
Algorytm LRU Przechowywanie czasu ostatniego użycia liczniki/rejestry czasu użycia dla każdej strony stos numerów stron użyta strona odkładana na wierzch stosu Duże wymagania sprzętowe
Algorytmy przybliżające LRU Algorytm drugiej szansy (zegarowy) strony w pamięci tworzą kolejkę cykliczną FIFO dodatkowo sprawdzany bit odniesienia jeśli bit odniesienia = strona pozostaje w pamięci, dostaje drugą szansę zerowanie bitu odniesienia jeśli bit odniesienia = 0 stronę można usunąć
Algorytmy drugiej szansy 0 0 0 0 0 0 ramki? błędów braku strony
Algorytmy przybliżające LRU Ulepszony algorytm drugiej szansy bit odniesienia i bit modyfikacji Algorytm bitów odniesienia rejestr przesuwny bitów odniesienia
Algorytmy zliczające Zamiast czasu użycia rejestrują liczbę odwołań licznik odniesień do strony Algorytm LFU wybór najrzadziej używanej strony Algorytm MFU wybór najczęściej używanej strony
Przydział ramek Podział zbioru wolnych ramek między procesy Minimalna liczba ramek dla procesu określona przez zbiór rozkazów procesora Algorytmy przydziału przydział równy przydział proporcjonalny rozmiar procesu priorytet rozmiar i priorytet
Szamotanie Nadmierna aktywność stronicowania na żądanie wzrost częstości błędów braku strony zbyt mała liczba ramek przydzielonych procesowi Proces spędza więcej czasu na stronicowaniu niż na wykonaniu wykorzystanie procesora szamotanie stopień wieloprogramowości
Zapobieganie szamotaniu Zapewnienie procesom odpowiedniej liczby ramek Zastępowanie lokalne ogranicza możliwość szamotania Strategia sterowania częstością błędów braku strony Strategia zbioru roboczego
Strategia sterowania częstością błędów braku strony Górna i dolna granica dopuszczalnego poziomu częstości błędów braku strony Po przekroczeniu górnej granicy przydział nowej ramki Po przekroczeniu dolnej granicy odebranie ramki Wymiana całych procesów
Strategia zbioru roboczego Model strefowy wykonania procesu strefa zbiór stron używanych wspólnie proces przechodzi przez kolejne strefy programu Model zbioru roboczego okno zbioru roboczego Δ ustalona liczba odniesień do strony zbiór roboczy WS(t) zbiór stron, do których nastąpiło ostatnich Δ odniesień 6677768688888 Δ=0 Δ=0 WS(t)={,,,} WS(t)={6,7,8}
Strategia zbioru roboczego Zbiór roboczy przybliża strefę programu dokładność przybliżenia zależy od wyboru parametru Δ Δ za małe zbiór nie obejmie całej strefy Δ za duże zbiór obejmie kilka stref (nawet cały proces) Rozmiar zbioru roboczego określa w przybliżeniu zapotrzebowanie procesu na ramki
Poprawianie efektywności Stronicowanie wstępne jednorazowe sprowadzenie do pamięci wszystkich lub części stron, których proces będzie używał zmniejsza liczbę błędów braku strony może być stosowane tylko zaraz po uruchomieniu procesu po każdym błędzie braku strony (sprowadza również kilka sąsiednich stron) Blokowanie stron na czas operacji wejścia-wyjścia bit blokowania strona zablokowana nie może być zastąpiona możliwość ochrony nowej strony
Znaczenie rozmiaru strony Zakres od B ( 9 ) do 6 KB ( ) Fragmentacja mały rozmiar strony Rozmiar tablicy stron duży rozmiar strony Operacji wejścia-wyjścia czas operacji -duży rozmiar strony ilość przesyłanej informacji -mały rozmiar strony Liczba błędów braku strony duży rozmiar strony
System Linux Pamięć wirtualna realizowana przez stronicowanie na żądanie Podział pamięci adresowanie -bitowe (przestrzeń adresowa GB - np. Intel Pentium) 6-bitowe (np. DEC Alpha, Intel 6) rozmiar strony KB (Intel Pentium, Intel 6) 8 KB (DEC Alpha) MB, 8MB (Intel 6)
Reprezentacja wolnych ramek
Przydział i zwalnianie ramek Dyspozytor stron wykorzystuje algorytm bliźniaków przydziela procesom ciągłe bloki pamięci składające się z i ramek Realizacja zlecenia przydziału n ramek pamięci dyspozytor poszukuje w tablicy free_area[ ] najmniejszego bloku o rozmiarze i n
Wiązanie adresów
Zastępowanie stron Demon wymiany kswapd wątek jądra uruchamiany przez proces init podczas startu systemu budzony w regularnych odstępach czasu, aby sprawdzić, czy liczba wolnych ramek w systemie nie spada poniżej dozwolonego poziomu zwalnia ramki - wywołuje -krotnie funkcję zastępowania stron
Algorytm zastępowania stron Algorytm LFU z liniowym postarzaniem stron Z każdą ramką związany licznik odniesień do strony wiek strony Mechanizm postarzania wartość początkowa wiek = po każdym obudzeniu demona stron wiek = wiek - po każdym użyciu strony wiek = wiek + Strony stare (gdy wiek = 0) mogą być usunięte
Wirtualna przestrzeń adresowa procesu
System UNIX Pamięć wirtualna realizowana przez stronicowanie na żądanie Podział pamięci wielkość strony: adresowanie: lub 8 KB lub 6-bitowe rozdzielone przestrzenie adresowe jądra i procesu
Zastępowanie stron Jądro utrzymuje pulę wolnych ramek Gdy liczba wolnych ramek < lotsfree -budzony demon stron pageout (początek wymiany stron) < desfree przez 0 s -wymiana procesów nieaktywnych (przyspieszenie) < minfree przez s -wymiana procesów aktywnych (początek wymiany procesów)
Zastępowanie stron Algorytm drugiej szansy z regulowanym czasem odczekania (algorytm zegarowy dwuwskazówkowy) wskazówka przednia i wskazówka tylna scanrate slowscan, fastscan częstotliwość przeglądania (skanowania) stron w buforze cyklicznym handspread odstęp czasowy między wskazówkami przednią i tylną
Zastępowanie stron częstotliwość skanowania fastscan slowscan minfree desfree lotsfree liczba wolnych ramek
System Windows XP Pamięć wirtualna realizowana przez stronicowanie na żądanie Podział pamięci rozmiar strony: KB przestrzeń adresowa: GB (adresowanie -bitowe) połączone przestrzenie adresowe jądra i procesu GB dla jądra GB dla procesu -poziomowa tablica stron katalog stron 0 pozycje po B tablice stron 0 pozycje po B
Zastępowanie stron Każdy proces ma przydzielony minimalny zbiór roboczy ramek (początkowo 0) Sprowadzanie strony na żądanie zarządca pamięci wirtualnej sprowadza od razu kilka sąsiednich stron (zasada lokalności) Zastępowanie stron zastępowanie lokalne dla każdego procesu algorytmem FIFO jądro systemu nadzoruje zbiory robocze procesów strony odbierane są procesom, które mają więcej niż minimalny zbiór roboczy jądro okresowo podkrada stronę i sprawdza, czy proces działa bez błędów braku strony