Zarządzanie pamięcią operacyjną
Transkrypt
Zarządzanie pamięcią operacyjną
Podstawowe pojęcia Zarządzanie pamięcią operacyjną 1. 2. 3. 4. 5. 6. 7. Wiązanie adresu Problemy zarządzania pamięcią Logiczna i fizyczna przestrzeń adresowa Przydział ciągłej przestrzeni adresowej Stronicowanie Segmentacja Pamięć wirtualna ! Pamięć operacyjna jest postrzegana jako tablica bajtów lub słów indeksowana adresami. ! Zbiór wszystkich możliwych adresów nazywany jest przestrzenią adresową ! Cykl rozkazowy w systemie o architekturze von Neumanna: ! pobranie przez jednostkę centralną rozkazu z komórki (lub komórek) pamięci adresowanej przez wartość licznika rozkazów ! pobranie danych z pamięci i/lub zapis danych do pamięci przez jednostkę centralną stosownie do pobranego i zdekodowanego rozkazu Zarządzanie pamięcią operacyjną 2 Wiązanie adresu Logiczna i fizyczna przestrzeń adresowa ! W czasie kompilacji — adresy bezwzględne komórek pamięci, do których następuje odwołanie, ustalane są czasie kompilacji ! W czasie ładowania — adresy komórek pamięci ustalane są w czasie ładowania programu ! W czasie wykonania — adresy komórek pamięci są ustalane w czasie wykonywania instrukcji ! Adres logiczny — adres wygenerowany przez procesor i wystawiony na magistrali adresowej ! Adres fizyczny — adres przekazany do jednostki pamięci i umieszczony w jej rejestrze adresowym ! Wiązanie adresu podczas kompilacji lub ładowania powoduje, że adresy logiczne i fizyczne są takie same. ! Wiązanie adresu w czasie wykonania powoduje rozróżnienie adresów logicznych (wirtualnych) i fizycznych. ! Odwzorowanie adresów wirtualnych na fizyczne dokonywane jest przez jednostkę zarządzania pamięcią (ang. memory management unit — MMU) Zarządzanie pamięcią operacyjną 3 Zarządzanie pamięcią operacyjną Przykład odwzorowania adresu logicznego na fizyczny Przykład ochrony obszaru pamięci rejestr graniczny rejestr przemieszczenia 4 rejestr przemieszczenia pamięć pamięć 1000 adres logiczny 25 + adres fizyczny 1025 jednostka zarządzania pamięcią (MMU) Zarządzanie pamięcią operacyjną N T procesor pułapka 1000 adres logiczny + adres fizyczny procesor 5 Zarządzanie pamięcią operacyjną 6 1 Przydział ciągłego obszaru pamięci — pierwsze dopasowanie Przydział ciągłego obszaru pamięci blok ! Pierwsze dopasowanie — przydziela się pierwszy wolny obszar (tzw. dziurę) o wystarczającej wielkości. Poszukiwanie kończy się po znalezieniu takiego obszaru. ! Najlepsze dopasowanie — przydziela się najmniejszy dostatecznie duży wolny obszar pamięci. Konieczne jest przeszukanie wszystkich dziur. ! Najgorsze dopasowanie — przydziela się największy wolny obszar pamięci. Konieczne jest przeszukanie wszystkich dziur. Zarządzanie pamięcią operacyjną kierunek przeszukiwania pamięć 7 Zarządzanie pamięcią operacyjną Przydział ciągłego obszaru pamięci — najlepsze dopasowanie 8 Przydział ciągłego obszaru pamięci — najgorsze dopasowanie blok blok kierunek przeszukiwania kierunek przeszukiwania pamięć Zarządzanie pamięcią operacyjną pamięć 9 Fragmentacja zewnętrzna Zarządzanie pamięcią operacyjną 10 Fragmentacja wewnętrzna obszar nie wykorzystany blok blok zapotrzebowanie przydział Przydział dokładnie tylu bajtów, ile wynosi zapotrzebowanie, powoduje, że koszt utrzymania bardzo małego obszaru wolnego jest niewspółmiernie duży, np. dane o obszarze zajmują więcej bajtów, niż rozmiar tego obszaru. Dlatego wolny obszar przydzielany jest w całości, ale nie jest w pełni wykorzystany. pamięć Zarządzanie pamięcią operacyjną 11 Zarządzanie pamięcią operacyjną 12 2 Stronicowanie (ang. paging) paging) Schemat adresowania ze stronicowaniem procesor ! Podział fizycznej przestrzeni adresowej na bloki stałej długości, zwane ramkami (ang. frames). ! Podział logicznej przestrzeni adresowej na bloki stałej (takiej samej jak ramki) długości, zwany stronami (ang. pages). ! Odwzorowanie pomiędzy numerem strony a numerem ramki za pomocą tablicy stron (ang. page table). ! Adres zawiera numer strony i przesunięcia na stronie (ang. offset). nr strony przesunięcie (22 bity) s s 0 1 2 0 1 2 3 4 5 6 7 8 9 10 11 a b c d e f g h i j k l 0 1 2 3 3 2 0 1 tablica stron strony Zarządzanie pamięcią operacyjną procesor 0 e f g h a b c d bufory TLB —numer numerstrony strony ss— —numer numerramki ramki rr— —przesunięcie przesunięcie oo— 3 r Zarządzanie pamięcią operacyjną ! W odwróconej tablicy stron jest jedna pozycja dla każdej ramki. ! Tablica stron indeksowana jest numerem ramki, a zawiera wirtualny numer strony. przesunięcie na stronie procesor wewnętrzna tablica stron s1 pamięć adres logiczny s o ramka pamięci s2 —numer numerstrony strony ss— —numer numerramki ramki rr— —przesunięcie przesunięcie oo— o o Zarządzanie pamięcią operacyjną 16 Odwrócona tablica stron (ang. inverted page table) table) zewnętrzna tablica stron s2 s tablica stron Stronicowanie wielopoziomowe Budowa adresu o o adres fizyczny 2 15 nr strony wewnętrznej pamięć r ramki nr strony zewnętrznej 14 adres logiczny s o 1 Zarządzanie pamięcią operacyjną s1 tablica stron Bufory translacji adresów stron (ang. translation looklook-aside buffers — TLBs) TLBs) Przykład odwzorowania stron w ramki i j k l o o adres fizyczny r —numer numerstrony strony ss— —numer numerramki ramki rr— —przesunięcie przesunięcie oo— 13 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 o r (10 bitów) Zarządzanie pamięcią operacyjną pamięć adres logiczny 17 r r o o adres fizyczny s odwrócona tablica stron Zarządzanie pamięcią operacyjną 18 3 Segmentacja (ang. segmentation) segmentation) Schemat adresowania z segmentacją STBR ! Przestrzeń adresów logicznych jest postrzegana jako zbiór segmentów. ! Segment ma nazwę i długość. ! Adres logiczny składa się z numeru segmentu i przesunięcia wewnątrz segmentu. ! Odwzorowanie adresów logicznych w fizyczne zapewnia tablica segmentów, której element zawiera m.in. fizyczny adres bazowy segmentu i granicę (rozmiar segmentu). tablica segmentów pamięć s + granica T N baza + adres fizyczny pułapka s o adres logiczny Zarządzanie pamięcią operacyjną 19 Schemat adresowania z segmentacją i stronicowaniem Zarządzanie pamięcią operacyjną 20 Pamięć wirtualna STBR tablica segmentów s + pamięć granica baza tablicy stron pułapka N s s’ T o’ + r ! Stronicowanie na żądanie (ang. demand paging) ! Błąd (braku) strony (ang. page-fault) ! Zastępowanie stron (ang. page replacement) ! Algorytmy zastępowanie (ang. page-replacement alg.) ! Algorytm FIFO ! Algorytm optymalny ! Algorytm LRU ! Algorytm LFU ! Algorytm MFU adres fizyczny r o’ ! Problemy ze stronicowaniem (szamotanie stron, problem wznawiania wykonania rozkazów) o adres logiczny Zarządzanie pamięcią operacyjną 21 Uzasadnienie stosowania pamięci wirtualnej 22 Zalety stosowania pamięci wirtualnej ! Pewne fragmenty kodu programu wykonywane są bardzo rzadko lub nigdy nie są wykonywane, np.: ! procedury obsługi bardzo mało prawdopodobnych wyjątków lub błędów, ! moduły programu, które w typowych warunkach eksploatacji okazują się zbędne. ! Pewne fragmenty kodu programu nie muszą być dostępne jednocześnie. ! Rozmiary pewnych struktur danych (np. tablic) ustalane są z nadmiarem w stosunku do typowych potrzeb. Zarządzanie pamięcią operacyjną Zarządzanie pamięcią operacyjną 23 ! Możliwość zwiększenia rozmiarów programów ponad rozmiar pamięci fizycznej ! Możliwość zwiększenia liczby procesów (poprawa wykorzystania procesora i przepustowości systemu bez zwiększania czasu odpowiedzi i czasu cyklu przetwarzania) dzięki zredukowaniu zapotrzebowania na pamięć fizyczną przez poszczególne procesy ! Zmniejszenie liczby operacji wejścia-wyjścia i tym samym zredukowanie czasu ładowanie programów przy ich uruchamianiu, gdyż nie jest konieczne ładowanie programów w całości Zarządzanie pamięcią operacyjną 24 4 Stronicowanie na żądanie Obsługa błędu strony ! Stronicowanie na żądanie (ang. demand paging) a stronicowanie w przypadku wymiany (ang. swapping) ! wymiana — pomiędzy pamięcią fizyczną a pomocniczą przesyłane są całe procesy, ! stronicowanie na żądanie — proces traktowany jest jako ciąg stron, które są sprowadzane do pamięci tylko wówczas, gdy jest to konieczne (leniwa wymiana, ang. lazy swapping). ! Wymaganie sprzętowe związane ze stronicowaniem na żądanie adres fizyczny r o tablica stron system operacyjny pułapka —numer numerstrony strony ss— —numer numerramki ramki rr— —przesunięcie przesunięcie oo— s urządzenie wymiany błąd strony n procesor s o adres logiczny ! tablica stron z bitem poprawności (ang. valid-invalid bit) dla każdej pozycji, ! urządzenie wymiany (ang. swap device) — pamięć pomocnicza. Zarządzanie pamięcią operacyjną pamięć 25 Zarządzanie pamięcią operacyjną 26 Zastępowanie stron (ang. page replacement) replacement) Algorytmy zastępowania stron (ang. pagepage-replacement algorithms) algorithms) ! Problem zastępowania stron pojawia się wówczas, gdy w pamięci fizycznej brakuje wolnych ramek i konieczne jest zwolnienie jakieś ramki poprzez usunięcie z niej strony. urządzenie ! Jeśli strona była modyfikowymiany wana w pamięci, konieczne pamięć jest zapisanie jej na dysku ⇒ konieczność wprowadzenie bitu modyfikacji (ang. modify bit), zwanego też bitem zabrudzenia (ang. dirty bit). ! Algorytm FIFO (ang. First In First Out) — zastępowana jest strona najstarsza (najwcześniej wprowadzona do pamięci) ! Algorytm OPT (MIN) — zastępowana jest strona, która najdłużej nie będzie używana ! Algorytm LRU (ang. Least Recently Used) — zastępowana jest najdawniej używana strona (najdłużej nie używana) ! LFU (ang. Least Frequently Used) — zastępowana jest najrzadziej używana strona ! MFU (ang. Most Frequently Used) — zastępowana jest najczęściej używana strona Zarządzanie pamięcią operacyjną 27 ! W systemie pamięci wirtualnej są 4 ramki. ! Wszystkie ramki są początkowo puste ! W systemie pojawiają się następujące odniesień (odwołań) do stron: 1, 2, 3, 4, 1, 4, 3, 4, 5, 2, 1, 4, 3, 4 2 1 3 1 2 4 1 2 3 5 1 2 3 4 1 2 3 4 1 2 3 4 Zarządzanie pamięcią operacyjną 1 2 3 4 1 2 3 4 28 Przykład działania algorytmu zastępowania stron (2) Przykład działania algorytmu zastępowania stron 1 Zarządzanie pamięcią operacyjną Dalszy ciąg odniesień: 2, 1, 4, 3, 4 2 1 2 3 4 LRU LRU 29 1 FIFO FIFO 3 5 2 3 4 2 1 5 3 4 LFU LFU OPT OPT 1 2 5 4 4 1 5 3 4 Zarządzanie pamięcią operacyjną MFU MFU 1 2 3 5 30 5 Przykład anomalii Belady’ego Implementacja algorytmu FIFO ! Ciąg odniesień: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 ! Przy zastosowaniu algorytmu FIFO dla 3 ramek mamy 9 błędów strony, a dla 4 ramek mamy 10 błędów strony ! Utrzymywanie listy numerów stron w kolejności ich sprowadzania do pamięci ! Umieszczanie numeru sprowadzanej strony na końcu listy ! Usuwanie z pamięci (i z listy) strony, której numer znajduje się na początku listy ! Możliwość wystąpienia anomalii Belady’ego (przy zwiększeniu liczby ramek następuje przypadkowe zwiększenie liczby błędów strony) Zarządzanie pamięcią operacyjną 1 1 2 1 2 3 4 2 3 4 1 3 4 1 2 5 1 2 5 1 2 5 1 2 5 3 2 5 3 4 5 3 4 1 1 2 1 2 3 1 2 3 4 1 2 3 4 1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 4 1 2 3 4 5 2 3 31 Zarządzanie pamięcią operacyjną Implementacja algorytmu LRU Algorytmy przybliżające metodę LRU ! Licznik — przed każdym odwołaniem do pamięci zwiększana jest wartość pewnego licznika i wpisywana do odpowiedniej pozycji opisującej stronę w tablicy stron (lub w innej specjalnej strukturze systemu operacyjnego). Z pamięci usuwana jest wówczas strona z najmniejszą wartością tego licznika, co wymaga przejrzenia całej tablicy stron. ! Stos — numery stron, do których następuje odwołanie, odkładane są na szczycie stosu. Przed odłożeniem na szczycie numer strony musi być wydobyty ze środka stosu, czyli z miejsca, gdzie był ostatnio odłożony. W tej implementacji pamięci usuwana jest strona z dna stosu. ! Niezbędne wspomaganie sprzętowe: ! bit odniesienia (ang. reference bit) — ustawiany dla danej strony przez sprzęt zawsze, gdy następuje zapis lub odczyt na tej stronie, ! bit modyfikacji (ang. modify bit) — ustawiany dla danej strony przez sprzęt zawsze, gdy następuje zapis na tej stronie. ! Algorytmy korzystające ze wspomagania sprzętowego: ! algorytm dodatkowych bitów odwołań — wykorzystuje bit odniesienia, ! algorytm drugiej szansy — wykorzystuje bit odniesienia, ! alepszony algorytm drugiej szansy — wykorzystuje bit odniesienia i bit modyfikacji. 33 Zarządzanie pamięcią operacyjną tablica dodatkowych bitów odwołań 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 Zarządzanie pamięcią operacyjną 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 tablica stron 5 M 4 1 34 Algorytm drugiej szansy strony do usunięcia tablica stron bit odnies. Algorytm dodatkowych bitów odwołań ostatnia 2 3 35 0 1 2 3 4 5 6 7 8 bit odnies. Zarządzanie pamięcią operacyjną 32 1 0 0 1 0 1 0 1 0 lista stron 1 strona do usunięcia 0 0 3 6 7 4 8 2 Zarządzanie pamięcią operacyjną 5 36 6 tablica stron 0 1 2 3 4 5 6 7 8 bit odnies. bit modyf. Ulepszony algorytm drugiej szansy 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 Implementacja algorytmów LFU i MFU lista stron 1 strona do usunięcia 0 3 6 7 4 8 2 ! Utrzymywanie liczników odniesień do każdej ze stron i ich inkrementacja przy każdym odwołaniu do odpowiedniej strony ! Usuwanie strony z najmniejszą (LFU) lub największą (MFU) wartością licznika ! Zerowanie licznika po usunięciu strony z pamięci 5 Zarządzanie pamięcią operacyjną 37 Problemy wynikające ze stronicowania 38 Przydział ramek ! Problem wznawiania rozkazów — w ramach wykonania jednego rozkazu może nastąpić kilka różnych odwołań do pamięci (pobranie kodu rozkazu, pobranie operandów, zapamiętanie wyniku), a każde odwołanie może spowodować błąd strony i konieczność wznowienia wykonania. rozkazu. Załadowanie strony z drugim operandem może spowodować usunięcie strony z pierwszym operandem itd. ! Szamotanie (ang. trashing) — algorytm zastępowania stron może wyrzucić z pamięci stronę, która będzie potrzebna do wykonania następnego rozkazu. Podobna sytuacja może zajść przy wykonywaniu następnego rozkazu. W rezultacie większa część aktywności procesu przeznaczona jest na stronicowanie Zarządzanie pamięcią operacyjną Zarządzanie pamięcią operacyjną 39 Szamotanie (migotanie) stron (ang. trashing) trashing) ! Początkowa liczba ramek dla procesu ! podział równomierny (ang. equal allocation) ! podział proporcjonalny (ang. proportional allocation) ! przydział zależny od priorytetu procesu ! Minimalna liczba ramek — zdefiniowana przez architekturę komputera (zależna od minimalnej liczby komórek adresowanych przez jeden rozkaz) ! Przydział ramek: ! lokalny — algorytm wymiany zwalnia tylko ramki przydzielone procesowi, który spowodował błąd strony, ! globalny — algorytm wymiany usuwa strony z dostępnej puli ramek w całym systemie (w szczególności usuwa strony innych procesów). Zarządzanie pamięcią operacyjną 40 Zapobieganie szamotaniu ! Przyczyna: zamiar zwiększenia wykorzystania procesora przez zwiększenie liczby procesów w systemie z globalnym mechanizmem zastępowania stron Skutek: wzrost liczby procesów oczekujących na obsługę przez urządzenie stronicujące i spadek liczby procesów gotowych Ostateczny efekt: zmniejszenie wykorzystania procesora ! Szamotanie można ograniczyć przez zastosowanie algorytmu zastępowania lokalnego lub priorytetowego (nie likwiduje to jednak problemu!!!). ! Szamotanie można zlikwidować, dostarczając procesowi tylu wolnych ramek ilu potrzebuje do wykonania określonego fragmentu programu (np. procedury, pętli). Jak się dowiedzieć ile wolnych ramek jest potrzebnych procesowi Zarządzanie pamięcią operacyjną 41 Zarządzanie pamięcią operacyjną 42 7 Definicja zbioru roboczego Model zbioru roboczego (ang. workingworking-set model) model) ! Zbiór roboczy procesu (ang. working-set) — zbiór stron, do których nastąpiło odwołanie w ciągu ostatnich ∆ odwołań (tzw. oknie zbioru roboczego) w czasie działania procesu ! Okno zbioru roboczego (ang. working-set window) — liczba odwołań do pamięci, przez które dana strona pozostaje w zbiorze roboczym od ostatniego odwołania do niej ! Założenie: program wykazuje lokalność odwołań do pamięci, czyli ma charakterystykę strefową. ! Model strefowy (ang. locality model) ! strefa — zbiór stron pozostających we wspólnym użyciu (używanych łącznie w czasie wykonywania określonego fragmentu programu), ! wykonanie programu sprowadza się do przechodzenia z jednej strefy do drugiej, ! program składa się z wielu stref, najczęściej zachodzących na siebie. 1, 2, 4, 5, 7, 3, 2, 4, 4, 6, 7, 4, 1 ZR = {3, 4, 5, 7} ∆=4 ZR = {2, 3, 5, 7} ∆=6 ZR = {2, 3, 4, 6, 7} ZR = {2, 4, 6, 7} Zarządzanie pamięcią operacyjną 43 Zarządzanie pamięcią operacyjną Ustalanie liczby potrzebnych ramek Kontrola częstości błędów strony ! Zapotrzebowanie na ramki w całym systemie jest sumą rozmiarów zbiorów roboczych, czyli Z = Σ|ZRi|, gdzie |ZRi| jest mocą (liczbą elementów) zbioru ZRi, czyli zapotrzebowaniem i-tego procesu na ramki. ! Jeśli Z > m, gdzie m jest całkowitą liczbą ramek w systemie dostępną dla procesów użytkownika, to zapotrzebowanie jest zbyt duże i może powstać szamotanie. System operacyjny musi wówczas wstrzymać wykonywanie jakiegoś procesu i zwolnić zajmowane przez niego ramki ! Jeśli w systemie są wolne ramki (Z < m), to można rozpocząć nowy proces. ! Przy każdym błędzie strony generowanym przez proces zwiększany jest licznik błędów strony danego procesu. ! W określonych okresach czasu (generowanych przez timer) sprawdzane są (a następnie zerowane) wartości liczników poszczególnych procesów. ! Jeśli wartość licznika jest większa od ustalonej górnej granicy, to procesowi przydzielana jest dodatkowa ramka. ! Jeśli wartość licznika jest mniejsza od ustalonej dolnej granicy, to procesowi zabierana jest jedna ramka. ! W przypadku zapotrzebowania większego niż liczba wolnych ramek konieczne jest wstrzymanie jakiegoś procesu. Zarządzanie pamięcią operacyjną 45 Zarządzanie pamięcią operacyjną 44 46 8