SOE Systemy Operacyjne Wykład 7 Zarządzanie pamięcią operacyjną dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW
Hierarchia pamięci czas dostępu Rejestry Pamięć podręczna koszt Pamięć operacyjna Dyski magnetyczne, SSD Dyski optyczne (CD-ROM, CD-RW, DVD-ROM, DVD-RAM...) Taśmy magnetyczne
Podstawowe cele Przydział pamięci operacyjnej procesom Odwzorowanie logicznej przestrzeni adresowej procesu na fizyczną przestrzeń adresową pamięci Ochrona zawartości pamięci Współdzielenie obszarów pamięci przez różne procesy
Realizacja wieloprogramowości Podział pamięci między procesy podział statyczny stały rozmiar obszarów pamięci podział dynamiczny zmienny rozmiar obszarów Wymiana procesów tymczasowe przesyłanie procesów pomiędzy pamięcią operacyjną a pamięcią pomocniczą umożliwia zwiększenie stopnia wieloprogramowości umożliwia wieloprogramowość w systemach bez podziału pamięci
Fragmentacja pamięci Pozostawanie niewykorzystanych fragmentów pamięci Fragmentacja zewnętrzna pomiędzy przydzielanymi obszarami Fragmentacja wewnętrzna wewnątrz przydzielonych obszarów
Przestrzenie adresowe Logiczna przestrzeń adresowa Adres logiczny - adres wytworzony przez procesor w wyniku wykonania rozkazu programu Zbiór wszystkich adresów logicznych generowanych przez program Fizyczna przestrzeń adresowa Adres fizyczny - wskazuje konkretną komórkę pamięci operacyjnej Zbiór wszystkich adresów fizycznych
Wiązanie adresów Odwzorowanie adresów logicznych generowanych w programie na adresy fizyczne w pamięci operacyjnej Może nastąpić: w czasie kompilacji, czyli tworzenia programu w czasie ładowania programu do pamięci w czasie wykonywania programu wymaga wspomagania sprzętowego
Jednostka zarządzania pamięcią MMU (Memory Managament Unit) Realizuje wspomaganie sprzętowe w zakresie: Przekształcanie adresów logicznych na fizyczne Sprawdzanie poprawności adresów MMU rejestr bazowy adres procesor logiczny + adres logiczny pamięć
Nakładki Zwiększenie logicznej przestrzeni adresowej procesu kod programu podzielony na moduły w pamięci operacyjnej umieszczane są tylko te moduły, które są aktualnie potrzebne zastępowanie modułów w pamięci implementacja na poziomie programu, bez udziału systemu operacyjnego Pamięć wirtualna implementacja na poziomie systemu operacyjnego duża ciągła przestrzeń adresowa procesu (wirtualna) proces częściowo w pamięci operacyjnej a częściowo w pamięci pomocniczej
Strategie zarządzania pamięcią Podstawowe przydział ciągły stronicowanie segmentacja Z pamięcią wirtualną stronicowanie na żądanie segmentacja na żądanie
Przydział ciągły Obszar systemu operacyjnego zwykle w pamięci dolnej wektor przerwań Przestrzeń procesów użytkowników ciągły obszar pamięci dla każdego procesu Podział pamięci (partycjonowanie) statyczny dynamiczny
Podział statyczny Obszary o stałym rozmiarze (lub kilku rozmiarach) Ograniczona liczba procesów Duża fragmentacja wewnętrzna System IBM OS/360 MFT
Podział dynamiczny Obszary o różnych rozmiarach tworzone dynamicznie i przydzielane procesom Dziury - obszary wolne, pomiędzy obszarami przydzielonymi procesom System przechowuje informacje o obszarach przydzielonych i obszarach wolnych (dziurach) System IBM OS/360 MVT
Model dynamicznego podziału pamięci Pamięć fizyczna baza 3000 adres 2200 3000 system operacyjny proces 4 granica 1800 rozmiar 4800 5800 6700 proces 1 proces 2 proces 3 dziury 7900
Wspomaganie sprzętowe pułapka procesor adres logiczny N T < + adres fizyczny pamięć rejestr graniczny rejestr bazowy rejestr graniczny rozmiar obszaru rejestr bazowy adres początkowy obszaru ładowane dla wykonywanego procesu
Strategie wyboru wolnego obszaru Algorytm pierwszego dopasowania przydziela pierwszą dziurę o wystarczającej wielkości Algorytm najlepszego dopasowania przydziela najmniejszą dziurę o wystarczającej wielkości zapewnia najmniejsze pozostałości po przydziale Algorytm najgorszego dopasowania przydziela największą dostępną dziurę najmniej efektywna pod względem czasu i zużycia pamięci
Strategie wyboru wolnego obszaru Algorytm bliźniaków rozmiar obszaru pamięci wynosi 2 i system przechowuje odrębne listy obszarów wolnych w każdym rozmiarze: 2 1, 2 2,...2 k podział obszaru 2 i = 2 i-1 +2 i-1 łączenie sąsiednich dziur w obszarów 2 i +2 i = 2 i+1
Fragmentacja Zewnętrzna dominująca Wewnętrzna przydzielony obszar może być większy w wyniku przyłączenia bardzo małej dziury (bezużytecznej) zbyt duży nakład na przechowywanie informacji o bardzo małej dziurze Upakowanie pamięci przemieszczanie dynamiczne procesów w pamięci upakowanie przez wymianę procesów
Stronicowanie pamięci Podział pamięci na obszary o stałym rozmiarze pamięć fizyczna podzielona na ramki rozmiar 2 n, między 512 B a 8192 B pamięć logiczna podzielona na strony rozmiar ramki pamięć pomocnicza podzielona na stałe obszary rozmiar ramki Przed wykonaniem procesu wszystkie jego strony muszą być umieszczone w dowolnych ramkach nieciągły obszar pamięci fizycznej procesu ciągły obszar pamięci logicznej procesu
Model stronicowania pamięci Pamięć logiczna Tablica stron Pamięć fizyczna Strona 0 0 1 0 Strona 1 1 4 1 Strona 0 Strona 2 2 3 2 Strona 3 3 6 3 Strona 2 4 Strona 1 5 6 Strona 3 7 8
Tablica stron procesu Tablica stron przechowuje adresy przydzielonych ramek, w których przechowywane są strony procesu każdy proces przechowuje swoją tablicę w pamięci Sprzętowa tablica stron systemu ładowana podczas przełączania kontekstu procesu
Adres logiczny Wiązanie adresów numer strony s indeks w tablicy stron odległość na stronie o Adres fizyczny numer ramki r odległość o MMU sprzęt stronicujący
Sprzęt stronicujący adres logiczny adres fizyczny procesor s o r o tablica stron pamięć
Sprzętowa implementacja tablicy stron Zbiór rejestrów specjalnego przeznaczenia przechowują całą tablicę stron procesu rejestry ładowane podczas przełączania kontekstu procesu tylko względnie małe tablice stron duży koszt Tablica stron w pamięci rejestr bazowy tablicy stron PTBR wskazuje położenie tablicy w pamięci operacyjnej rejestr graniczny tablicy stron PTLR przechowuje rozmiar tablicy konieczne dwie operacje dostępu do pamięci: adres z tablicy stron instrukcje lub dane programu
Sprzętowa implementacja tablicy stron Rejestry asocjacyjne (bufory translacji bliskiego otoczenia TLB) przechowują tylko wybrane pozycje tablicy stron każdy rejestr składa się z dwóch części: klucz -numer strony wartość -numer ramki bieżący adres logiczny porównywany jednocześnie ze wszystkimi kluczami szybkie odnajdowanie adresu fizycznego brakujące adresy odnajdowane są w tablicy stron w pamięci i wpisywane do rejestrów
Sprzęt stronicujący z rejestrami asocjacyjnymi adres logiczny adres fizyczny procesor s o TLB r o pamięć s r tablica stron
Dzielenie i ochrona pamięci Dzielenie pamięci tablice stron kilku procesów zawierają adresy tych samych ramek (współdzielonych) Ochrona pamięci bity ochrony przypisane każdej ramce zapisane w tablicy stron procesu strona wyłącznie do czytania lub do czytania i pisania, itp. bit poprawności strona znajduje się w logicznej przestrzeni adresowej procesu
Struktura tablicy stron Duża przestrzeń adresowa (2 32-2 64 ) wymaga zbyt dużej tablicy stron przestrzeń adresowa: rozmiar strony: rozmiar tablicy stron: Tablice wielopoziomowe 2 32 (4 GB) 2 12 (4 KB) 2 20 pozycji tablica 2-poziomowa przy adresowaniu 32-bitowym tablica 3-poziomowa przy adresowaniu 64-bitowym Tablica haszowania przy adresowaniu większym niż 32-bitowe Odwrotna tablica stron
Tablice wielopoziomowe tablica 1-go poziomu katalog stron tablica 2-go poziomu katalog pośredni tablica 3-go poziomu tablica stron
Tablica haszowania adres logiczny adres fizyczny procesor s o r o tablica haszowania pamięć funkcja haszująca s r s r
Odwrotna tablica stron adres logiczny adres fizyczny procesor pid s o r o pamięć tablica stron r pid s Każda pozycja opisuje jedną ramkę pamięci fizycznej PID procesu i adres logiczny strony Adres logiczny jest poszukiwany w tablicy indeks odnalezionej pozycji określa numer ramki
Segmentacja pamięci Podział pamięci na obszary o różnym rozmiarze pamięć logiczna podzielona na segmenty o zmiennym rozmiarze i określonej nazwie lub numerze pamięć fizyczna dzielona dynamicznie na obszary odpowiadające segmentom logicznym procesów Przed wykonaniem wszystkie segmenty procesu muszą być sprowadzone i rozmieszczone w pamięci operacyjnej nieciągły obszar pamięci
Tablica segmentów Tablica segmentów przechowuje adresy i rozmiary wszystkich segmentów procesu baza - adres bazowy segmentu w pamięci fizycznej granica - rozmiar segmentu Rejestry rejestr bazowy tablicy segmentów STBR rejestr graniczny tablicy segmentów STLR
Model segmentacji pamięci Pamięć logiczna Tablica segmentów Pamięć fizyczna stos main tablica symboli 0 1 2 3 800 800 1000 1200 2200 5000 4000 6700 2200 3000 4000 5000 5800 segment 0 segment 2 segment 1 funkcja 6700 segment 3 7900
Sprzęt do segmentacji pułapka procesor adres logiczny s o N T < + adres fizyczny pamięć granica baza tablica segmentów
Cechy segmentacji Fragmentacja zewnętrzna stopień zależny od rozmiarów segmentów Ochrona powiązana z segmentami Dzielenie pamięci na poziomie segmentów
Segmentacja stronicowana Połączenie stronicowania z segmentacją Pamięć logiczna podzielona na segmenty Pamięć fizyczna podzielona na ramki Stronicowanie segmentów Tablica segmentów przechowuje adresy bazowe tablic stron poszczególnych segmentów