Systemy Operacyjne Zarządzanie pamięcią Zarządzanie pamięcią
Transkrypt
Systemy Operacyjne Zarządzanie pamięcią Zarządzanie pamięcią
Organizacja zarządzania pamięcią Na organizację zarządzania mają wpływ: √ pole adresowe argumentów rozkazu, √ miejsce pola adresacji w słowie, √ sprzętowe możliwości przekształcania pola adresacji. Systemy Operacyjne Zarządzanie pamięcią dr inż. Tomasz Jordan Kruk [email protected] Instytut Automatyki i Informatyki Stosowanej Politechnika Warszawska WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.1/59 Zarządzanie pamięcią Czego programiści oczekują od pamięci systemu: √ by była duża, √ by była szybka, √ by była nieulotna. Hierarchia pamięci: √ mała szybka droga pamięć (np. cache), √ średnia, średnio szybka, umiarkowanie droga, pamięć (np. pamięć operacyjna), √ ogromna, wolna i tania pamięć (np. pamięć dyskowa/ taśmowa). W zależności od długości pola adresacji przestrzeń adresowa może pokrywać się z zakresem adresów pamięci operacyjnej, może być większa lub mniejsza. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.3/59 Funkcje systemu operacyjnego Funkcje systemu operacyjnego w kontekście zarządzania pamięcią: √ zagospodarowanie przestrzeni adresowej poprzez wykorzystanie mechanizmów translacji adresów, √ ochrona zawartości pamięci, √ organizacja dostępu do obszarów dzielonych, √ efektywna organizacja pamięci operacyjnej. Wielkość pamięci operacyjnej przeznaczonej na kod systemu operacyjnego jest zazwyczaj stała, natomiast bardziej złożony jest przydział pamięci procesom użytkowym. Zarządzanie pamięcią (ang. Memory Management, MM ) na poziomie systemu operacyjnego uwarunkowane architekturą systemu. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.2/59 WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.4/59 Metody przydziału pamięci Podział pamięci Metody przydziału pamięci operacyjnej procesom użytkowym: 1. brak podziału, wolna przestrzeń adresowa w danje chwili przydzielana jednemu procesowi użytkowemu. Wieloprogramowanie można realizować przez wymiatanie (ang. swapping), 2. podział pamięci, wolna przestrzeń adresowa podzielona na części przydzielane pojedynczym procesom użytkowym, 3. wykorzystanie pamięci wirtualnej, istnieje jedna lub wiele wirtualnych przestrzeni adresowych przydzielanych procesom użytkowym, a mających w niewielkim stopniu pokrycie w pamięci operacyjnej. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.5/59 Brak podziału Cele podziału pamięci między procesy: √ lepsze wykorzystanie elementów sprzętowych systemu, głównie procesora i pamięci, √ umożliwienie szybkiego przełączania procesora z pracy z jednym procesem na pracę z innym procesem. Można wyróżnić następujące typy systemów z podziałem pamięci: √ systemy z podziałem statycznym. Podział statyczny dzieli pamięć na stałe partycje o różnej długości lub na bloki o stałej długości zwane ramami (ang. frame). √ systemy z podziałem dynamicznym. Realizacja z wykorzystaniem struktur opisujących wolne bloki pamięci o różnych długościach oraz mechanizm wymiatania. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.7/59 Podział statyczny na stałe partycje Trzy metody prostej organizacji pamięci dla systemu operacyjnego i jednego procesu uzytkownika. Multiple input queues 800K Partition 4 Partition 4 700K 0xFFF … Operating system in ROM User program Device drivers in ROM Partition 3 User program Partition 2 Operating system Operating system in RAM 0 (b) Partition 2 200K Partition 1 Operating system in RAM (a) Partition 3 400K User program 0 Single input queue Partition 1 100K 0 (a) Operating system (b) 0 (c) a. partycje o stałym rozmiarze z osobnymi kolejkami wejściowymi, b. partycje o stałym rozmiarze z jedną kolejką wejściową. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.6/59 WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.8/59 Modelowanie wieloprogramowania Do realizacji dynamicznego podziału pamięci można stosować następujące hipotetyczne funkcje: √ przydziel( rozmiar, adres ) ? wybranie spośród bloków wolnych bloku pokrywającego zapotrzebowanie, ? efektem jest zwrócenie adresu wybranego bloku i usunięcie przydzielonego bloku ze zbioru bloków wolnych, ? malloc( size ), calloc( n, size ), realloc( ptr, size ). √ zwolnij( adres ) - dołączenie bloku zajętego do zbioru wolnych bloków, np. free( ptr ), √ informuj() - zwróc rozmiar aktualnie największego wolnego bloku, np. msize(). WEiTI, Politechnika Warszawska CPU utilization (in percent) Podział dynamiczny 20% I/O wait 100 60 80% I/O wait 40 20 0 2 3 4 5 6 7 8 Degree of multiprogramming WEiTI, Politechnika Warszawska 9 10 Systemy operacyjne / Zarządzanie pamięcią – str.11/59 Analiza wydajności wieloprogramowania Dwa zasadnicze aspekty: √ obsługa relokacji, ? nie ma pewności gdzie dokładnie program zostanie załadowany do pamięci, ? wykorzystanie rejestrów bazowych i rejestrów ograniczających. Job 1 2 Arrival time 10:00 10:10 CPU minutes needed 4 3 3 4 10:15 10:20 2 2 1 .80 .20 .64 .36 .51 .49 .41 .59 CPU/process .20 .18 .16 .15 (b) 2.0 Job 2 starts 2 # Processes 2 3 4 CPU idle CPU busy (a) 1 wzajemna ochrona pamięci. 1 Wykorzystanie procesora w funkcji liczby procesów w pamięci. Systemy operacyjne / Zarządzanie pamięcią – str.9/59 Zarządzanie w kontekście wieloprogramowania √ 50% I/O wait 80 Job 1 finishes .9 .8 .3 .9 .8 .3 .9 .8 .3 .9 .3 .9 3 .1 .1 .7 4 0 0 10 15 20 22 Time (relative to job 1's arrival) 27.6 28.2 31.7 (c) a. czas nadejścia i wymagania poszczególnych prac, b. wykorzystanie procesora dla procesów z 80% I/O, c. sekwencja zdarzeń z pokazanym w minutach czasem, jaki dany proces otrzymuje w podanym interwale. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.10/59 WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.12/59 Wymiatanie (ang. swapping) Algorytmy alokacji Zadaniem algorytmu alokacji jest wybranie wolnego bloku w celu przydzielenia procesowi pamięci. Time C C C C B B B B A A A D D D Operating system Operating system Operating system Operating system Operating system Operating system Operating system (a) (b) (c) (d) (e) (f) (g) C A Zmiany przydziału pamięci wraz z pojawianiem się i znikaniem procesów z pamięci. Obszary zakreskowane są niewykorzystane. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.13/59 Fragmentacja WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.15/59 Przeciwdziałanie fragmentacji Przy wyborze algorytmu alokacji należy uwzględnić następujące czynniki: √ prędkość, √ prostotę, √ efekt fragmentacji. Fragmentacja wewnętrzna - zjawisko tworzenia niewykorzystywalnych, choć przydzielonych w ramach pewnej struktury (partycja, ramka), obszarów pamięci. Fragmentacja zewnętrzna - zjawisko tworzenia niewykorzystywalnych, nieprzydzielonych obszarów pamięci, zazwyczaj spowodowane niedoskonałością działania organizacji alokacji pamięci procesom uzytkowym. WEiTI, Politechnika Warszawska Wybrane algorytmy alokacji: √ algorytm pierwszej zgodności (ang. First Fit ), wybór pierwszego pasującego ze zbioru/ listy, √ algorytm najlepszej zgodności (ang. Best Fit ), wybór najmniejszego wystarczającego bloku ze zbioru/ listy, √ algorytm najgorszej zgodności (ang. Worst Fit ), wybór największego ze zbioru/ listy, √ algorytm bliźniaków (ang. Buddies), podział pamięci (o długości 2 k ) na dwa równe bliźniacze bloki; połowienie jednego aż do uzyskania bloku o minimalnej długości spełniającego zapotrzebowanie. Systemy operacyjne / Zarządzanie pamięcią – str.14/59 W systemie może być zdefiniowana wartość ∆n będąca minimalna dopuszczalną wartością niejawnie przydzielanego bloku, co ułatwia zarządzanie i zwiększa efektywność, ale może prowadzić do zjawiska fragmentacji. Efektom fragmentacji można przeciwdziałać poprzez: √ zwalnianie i scalanie, √ zagęszczanie i relokacje, √ mechanizm stronicowania. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.16/59 Zarządzanie pamięcią - mapy bitowe i listy A B C 8 D 16 Pamięć wirtualna system pamięci złożony z co najmniej dwóch rodzajów pamięci: małej i szybkiej (np. pamięci operacyjnej) oraz dużej, lecz wolnej (np. pamięci pomocniczej), a także z dodatkowego sprzętu i oprogramowania umożliwiającego automatyczne przenoszenie fragmentów pamięci z jednego rodzaju pamięci do drugiego. E 24 (a) P 11111000 0 5 H 5 3 P 8 6 P 14 4 P 26 3 H 29 3 Pamięć wirtualna 11111111 11001111 H 18 2 11111000 P 20 6 Hole Starts Length at 18 2 X Process (b) Pamięć wirtualna ma być prawie tak szybka jak szybsza z pamięci i prawie tak duża jak większa z pamięci. (c) a. fragment pamięci z pięcioma procesami i trzema dziurami, b. odpowiadająca mapa bitowa, c. ta sama informacja w postaci listy. WEiTI, Politechnika Warszawska Metody realizacji pamięci wirtualnej: √ stronicowanie, √ segmentacja, √ stronicowanie z segmentacją. Systemy operacyjne / Zarządzanie pamięcią – str.17/59 Rola jednostki zarządzającej pamięcią B-Stack Room for growth CPU package B-Data Room for growth B Systemy operacyjne / Zarządzanie pamięcią – str.19/59 Problem dynamicznej alokacji WEiTI, Politechnika Warszawska The CPU sends virtual addresses to the MMU Actually in use B-Program CPU A-Stack Room for growth Room for growth Memory management unit Memory Disk controller A-Data A Actually in use A-Program Operating system Operating system (a) (b) Bus The MMU sends physical addresses to the memory a. alokacja pamięci dla rosnącego segmentu danych, b. alokacja pamięci dla rosnącego stosu i rosnącego segmentu danych. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.18/59 MMU (ang. Memory Management Unit ) może być zintegrowane z procesorem (tak zazwyczaj teraz), ale może być też niezależne (tak zazwyczaj było dawniej). WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.20/59 Realizacja stronicowania Stronicowanie Stronicowanie bazuje na stałym podziale pamięci. Jednostki podziału: √ ramy, ramki (ang. frames) dla pamięci fizycznej, √ strony (ang. pages) dla wirtualnej przestrzeni adresowej procesu. Zadania mechanizmu stronicowania: √ odwzorowywanie adresów wirtualnych w adresy rzeczywiste: 1. określenie, do której strony odnosi się adres w programie, 2. znalezienie ramy, którą aktualnie zajmuje dana strona. √ przesyłanie - w zależności od potrzeby - stron z pamięci pomocniczej do pamięci operacyjnej oraz odsyłanie już nie używanych stron z powrotem. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.21/59 Przykład translacji Korzystanie z pamięci wirtualnej nie stawia żadnych dodatkowych wymagań użytkownikowi. Przydział pamięci realizowany jest systemowo z wykorzystaniem tablic stron i/ lub tablic ram. Zapewnienie własności przezroczystości wymaga: √ obsługi przez system przerwania określanego jako chybienie strony (ang. page fault ), sygnalizującego brak w pamięci strony, do której usiłowano się odwołać. √ obsługa chybienia ma zgodnie z przyjętym algorytmem wymiany stron przydzielić ramę i ściągnąć stronę z pamięci pomocniczej, √ w celu minimalizacji strat wydajności odwołań do pamięci wykorzystanie pamięci asocjacyjnych do translacji adresów. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.23/59 Przykładowa tablica stron Wewnętrzne operacje MM z szesnastoma stronami po 4kB. Virtual address space 60K-64K X 56K-60K X 52K-56K X 48K-52K X 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 Virtual page 44K-48K 7 40K-44K X 36K-40K 5 32K-36K X Physical memory address 28K-32K X 28K-32K 24K-28K X 24K-28K 20K-24K 3 20K-24K 16K-20K 4 16K-20K 12K-16K 0 12K-16K 8K-12K 6 8K-12K 4K-8K 1 4K-8K 0K-4K 2 Page table 000 000 000 000 111 000 101 000 000 000 011 100 000 110 001 010 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 12-bit offset copied directly from input to output 110 Present/ absent bit Virtual page = 2 is used as an index into the page table 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 Incoming virtual address (8196) Należy uwzględniąć następujące fakty: √ tablica stron może być bardzo duża, √ odwzorowywanie musi być bardzo szybkie. 0K-4K Page frame WEiTI, Politechnika Warszawska 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Outgoing physical address (24580) Systemy operacyjne / Zarządzanie pamięcią – str.22/59 WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.24/59 Page frame 31 38 29 62 50 45 14 75 Protection RW R X RW RW R X R X RW RW Modified 1 0 1 1 0 0 1 1 Virtual page 140 20 130 129 19 21 860 861 Referenced Protection Page frame number Present/absent Modified Valid 1 1 1 1 1 1 1 1 Caching disabled TLB (ang. Translation Lookaside Buffer ) Typowy element tablicy stron Główny cel: minimalizacja liczby odwołań do pamięci w trakcie stronicowania. Aspekty dotyczące TLB: √ koszt przełączania kontekstu, √ koszt wielopoziomowści tablic stron, √ realizacja: sprzętowa/ programowa. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.25/59 WEiTI, Politechnika Warszawska Wielopoziomowe tablice stron Second-level page tables Page table for the top 4M of memory Odwrócone tablice stron Traditional page table with an entry for each of the 252 pages 252 -1 256-MB physical memory has 216 4-KB page frames 216 -1 Top-level page table 1023 Bits 10 PT1 10 12 PT2 Offset (a) 6 5 4 3 2 1 0 0 1023 6 5 4 3 2 1 0 Systemy operacyjne / Zarządzanie pamięcią – str.27/59 0 Indexed by virtual page Hash table 216 -1 0 Indexed by hash on virtual page Virtual page Page frame To pages (b) WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.26/59 WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.28/59 Optymalny rozmiar strony Dobór rozmiaru strony ma wpływ na fragmentację wewnętrzną oraz rozmiar tablicy stron. Niech: s przeciętny rozmiar procesu w bajtach, p rozmiar strony, e rozmiar pozycji w tablicy stron. wtedy nadmiar = s ∗ e/p + p/2 Algorytmy wymiany stron Zestawienie wybranych algorytmów wymiany stron: √ algorytm optymalny, √ algorytm NRU (ang. not recently used ) (bity R i M), √ algorytm FIFO, √ algorytm drugiej szansy, √ algorytm zegarowy, √ algorytm LRU (ang. least recently used ). Wyszukiwanie ekstremum, pochodna względem p przyrównana do 0: −se/p2 + 1/2 = 0 Zatem optymalny rozmiar strony wynosi p = √ 2se WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.29/59 WEiTI, Politechnika Warszawska Obsługa chybienia Algorytm drugiej szansy Obsługa chybienia przebiega następująco: Page loaded first 1. wskazanie ramy dla żądanej strony, 0 3 7 8 12 14 15 18 A B C D E F G H 2. zwolnienie wskazanej ramy, Most recently loaded page (a) 3. ściągnięcie żądanej strony w obszar wskazanej ramy, 4. aktualizacja tablicy ram. Wskazaniem ramy, w przypadku braku ram wolnych, zajmuje się algorytm wymiany stron (ang. page replacement algorithm). Główne zadanie: √ usunięcie z pamięci operacyjnej strony najmniej potrzebnej w przyszłości, tzn, strony, do której odwołanie nastąpi najpóźniej bądź w ogóle nie nastąpi. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.31/59 Systemy operacyjne / Zarządzanie pamięcią – str.30/59 3 7 8 12 14 15 18 20 B C D E F G H A A is treated like a newly loaded page (b) a. strony sortowane w porządku FIFO, b. nowa postć listy, gdy bład strony wystąpił w momencie 20 i A miał ustawiony bit R. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.32/59 Algorytm zegarowy wymiany stron Programowa symulacja algorytmu LRU (II) A B L K R bits for pages 0-5, clock tick 0 R bits for pages 0-5, clock tick 1 R bits for pages 0-5, clock tick 2 R bits for pages 0-5, clock tick 3 R bits for pages 0-5, clock tick 4 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 10000000 11000000 11100000 11110000 01111000 1 00000000 10000000 11000000 01100000 10110000 2 10000000 01000000 00100000 00100000 10001000 3 00000000 00000000 10000000 01000000 00100000 4 10000000 11000000 01100000 10110000 01011000 5 10000000 01000000 10100000 01010000 00101000 (a) (b) (c) (d) (e) C J When a page fault occurs, the page the hand is pointing to is inspected. The action taken depends on the R bit: R = 0: Evict the page R = 1: Clear R and advance hand D I E H F Page G Algorytm postarzania, pokazano sześć stron w okresie pięciu tyknięć zegara. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.33/59 WEiTI, Politechnika Warszawska Sprzętowy algorytm LRU Zbiór roboczy stron 0 Page 1 2 3 0 Page 1 2 3 0 Page 1 2 3 0 Page 1 2 3 0 Page 1 2 3 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 (a) (b) (c) Systemy operacyjne / Zarządzanie pamięcią – str.35/59 (d) Zbiorem roboczym nazywamy zbiór stron wykorzystywanych w trakcie k ostatnich odwołań do pamięci. Funkcja w(k, t) odpowiada mocy zbioru w chwili t. (e) w(k,t) 0 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 (f) (g) (h) (i) (j) k Do stron odwoływano się w następującej kolejności: 0, 1, 2, 3, 2, 1, 0, 3, 2, 3. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.34/59 WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.36/59 Algorytm zbioru roboczego 2204 Current virtual time R (Referenced) bit Information about one page 2084 1 2003 1 Time of last use 1980 1 Page referenced during this tick 1213 0 2014 1 2020 1 2032 1 1620 0 Page not referenced during this tick Scan all pages examining R bit: if (R == 1) set time of last use to current virtual time if (R == 0 and age > τ) remove this page Porównanie algorytmów wymiany stron Algorytm Optymalny NRU FIFO Drugiej szansy Zegarowy LRU NFU Postarzanie Zbiór roboczy WSClock Komentarz nieimplementowalny, punkt odniesienia surowy może wymiatać istotne strony duże ulepszenie FIFO realistyczny dobry, ale trudny do implementacji dość ogólna aproksymacja LRU efektywny z dobrą aproksymacją LRU dość kosztowny w implementacji dobry efektywny algorytm if (R == 0 and age ≤ τ) remember the smallest time Page table WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.37/59 WEiTI, Politechnika Warszawska Zegarowy algorytm zbioru roboczego Anomalia Belady’ego 2204 Current virtual time All pages frames initially empty 1620 0 Youngest page 1620 0 2032 1 2084 1 0 0 1 1 0 P P 2032 1 2084 1 Oldest page 2020 1 2003 1 Systemy operacyjne / Zarządzanie pamięcią – str.39/59 2020 1 2003 1 2 2 1 0 P 3 3 2 1 P 0 0 3 2 P 1 1 0 3 P 4 4 1 0 P 0 4 1 0 1 4 1 0 2 2 4 1 P 3 3 2 4 P 4 3 2 4 2 2 1 0 4 P 3 3 2 1 0 P 4 4 3 2 1 P 10 Page faults 9 Page faults (a) 1980 1 1980 1 2014 1 1213 0 Time of last use 2014 0 1213 0 R bit Youngest page (a) (b) 0 0 1 1 0 2 2 1 0 P P P Oldest page 1620 0 1620 0 2032 1 2084 1 2032 1 2084 1 3 3 2 1 0 P 0 3 2 1 0 1 3 2 1 0 4 0 4 0 3 4 2 3 1 2 P P 1 1 0 4 3 P (b) 2020 1 2003 1 2020 1 2003 1 a. algorytm FIFO wymiany stron na maszynie z trzema ramkami, 1980 1 2014 0 1213 0 (c) WEiTI, Politechnika Warszawska 1980 1 2014 0 2204 1 New page (d) Systemy operacyjne / Zarządzanie pamięcią – str.38/59 b. algorytm FIFO wymiany stron na maszynie z czteroma ramkami. √ więcej błedów strony przy większej liczbie ramek. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.40/59 Strony współdzielone Organizacja przestrzeni wymiany Main memory Main memory Disk Pages Disk Pages 0 3 4 6 Swap area 0 3 4 6 Swap area 7 Process table 5 2 1 Page table 6 6 4 3 4 3 0 Program Data 1 7 5 2 1 Page table Disk map 0 (b) (a) Data 2 a. stronicowanie do statycznego obszaru wymiany, Page tables b. dynamiczny zrzut stron. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.41/59 WEiTI, Politechnika Warszawska Obsługa błędu strony Systemy operacyjne / Zarządzanie pamięcią – str.43/59 Rozdzielenie strategii i mechanizmu realizacji MOVE.L #6(A1), 2(A0) 3. Request page Main memory Disk 16 Bits 1000 1002 MOVE 6 1004 2 √ instrukcja wywołująca błąd strony, √ odkąd zacząć powtarzanie instrukcji? User space } Opcode } First operand } Second operand 4. Page arrives 5. Here is page 1. Page fault Kernel space Systemy operacyjne / Zarządzanie pamięcią – str.42/59 External pager 2. Needed page √ WEiTI, Politechnika Warszawska User process Fault handler 6. Map page in MMU handler obsługa błędu strony przez zewnętrzny program typu pager. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.44/59 Pojedyncza przestrzeń adresowa Virtual address space 20K Call stack 16K Free Address space allocated to the parse tree Parse tree Rozmiary segmentów Space currently being used by the parse tree 16K 12K 12K 12K 12K Symbol table Constant table 8K Source text Symbol table Symbol table has bumped into the source text table 4K 4K 0K 0K Segment 0 Niewygody pojedynczej przestrzeni adresowej na przykładzie mapy pamięci translatora/ kompilatora. WEiTI, Politechnika Warszawska 8K 8K Source text Parse tree 4K 0K Segment 1 Constants Segment 2 8K 4K 0K Call stack 0K Segment 3 Segment 4 Segmentacja pamięci umożliwia każdej tablicy niezależną zmianę rozmiaru. Systemy operacyjne / Zarządzanie pamięcią – str.45/59 WEiTI, Politechnika Warszawska Cechy segmentacji Systemy operacyjne / Zarządzanie pamięcią – str.47/59 Stronicowanie a segmentacja (I) √ celem segmentacji organizacji przestrzeni adresowej w sposób odzwierciedlający logiczny podział informacji, √ celem segmentacji logiczny podział pamięci operacyjnej, celem stronicowania fizyczny podział pamięci, √ przy organizacji przestrzeni wirtualnej możliwość korzystania z dużej liczby segmentów z nadawanymi przez programistę nazwami, √ √ przestrzeń adresowa dwuwymiarowa z racji identyfikacji adresu poprzez parę nazwa segmentu + adres wewnątrz segmentu, stronicowanie mechanizmem niskiego poziomu, niewidocznym dla programisty; segmentacja mechanizmem wyższego poziomu, widocznym dla programisty, √ odzworowanie adresu organizowane zazwyczaj poprzez osobną dla każdego procesu tablicę segmentów, rozmiar strony stały, ustalona, wynikający z architektury, rozmiar segmentu dowolny określany przez programistę, √ zarówno w przypadku zastosowania stronicowania jak i segmentacji całkowita przestrzeń adresowa może być większa od dostępnje pamięci fizycznej, √ segmentacja umożliwia lepszą ochronę poszczególnych elementów procesu poprzez możliwość rozróżniania segmentów logicznie grupujących elementy procesów, √ √ elementy tablicy segmentów określane mianem deskryptorów segmentu, √ każdy deskryptor zawiera adres bazy oraz rozmiar segmentu. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.46/59 WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.48/59 Stronicowanie a segmentacja (II) √ √ √ √ segmentacja umożliwia łatwiejsze zarządzanie elementami procesu o zmiennym rozmiarze (np. stos, sterta), segmentacja udostępnia współdzielenie procedur między procesami (np. segmenty dzielone, a przez to biblioteki dzielone). główny cel wprowadzenia stronicowania: uzyskanie większej pamięci adresowej bez konieczności zakupu dodatkowej pamięci fizycznej, główny cel wprowadzenia segmentacji: umożliwienie rozdzielenia programów i danych na logicznie niezależne przestrzenie adresowe z ułatwieniem współdzielenia wybranych obszarów i lepszej ochrony. √ segmentacja - może zachodzić fagmentacja zewnętrzna, √ stronicowanie - może zachodzić fragmentacja wewnętrzna. WEiTI, Politechnika Warszawska MULTICS: Segmentacja ze stronicowaniem √ komputery Honeywell 6000 i następne, √ maksymalnie możliwych 218 segmentów, z których każdy mógł mieć maksymalnie 65536 36-bitowych słów, √ stronicowane segmenty, dla każdego procesu tablica segmentów, sama tablica segmentów również stronicowanym segmentem, √ fizyczne adresy 24-bitowe, strony rozmieszczane z dopasowaniem do 64 (26 ) bajtów, zatem 18 bitów na adres tablicy stron, √ standardowy rozmiar stron 210 słów, część wewnętrznych małych segmentów systemu niestronicowana bądź ze stronami po 64 słowa, √ ewentualny adres segmentu w pamięci pomocniczej w osobnej tablicy wykorzystywanej przez program obsługi chybienia strony. Systemy operacyjne / Zarządzanie pamięcią – str.49/59 WEiTI, Politechnika Warszawska MULTICS: Pamięć wirtualna Implementacja czystej segmentacji √ √ (3K) (3K) Segment 5 (4K) Segment 5 (4K) 36 bits (10K) Segment 3 (8K) Segment 3 (8K) Segment 2 (5K) Segment 2 (5K) Segment 2 (5K) Segment 2 (5K) (3K) (3K) (3K) Segment 2 (5K) Segment 7 (5K) Segment 7 (5K) Segment 7 (5K) Segment 7 (5K) Segment 0 (4K) Segment 0 (4K) Segment 0 (4K) Segment 0 (4K) Segment 0 (4K) (a) (b) (c) (d) (e) Segment 6 (4K) Page 2 entry Page 1 entry (4K) Segment 3 (8K) Segment 1 (8K) √ Segment 4 (7K) Segment 5 (4K) Segment 6 (4K) Segment 6 descriptor Page 0 entry Segment 5 descriptor Page table for segment 3 Pamięć wirtualna systemu Multics Segment 4 descriptor Segment 3 descriptor Segment 2 descriptor Segment 1 descriptor Page 2 entry Segment 0 descriptor zjawisko fragmentacji zewnętrznej (ang. external fragmentation, checkerboarding), zbijanie/ gromadzenie segmentów metodą przeciwdziałania fragmentacji (rys. e), wykorzystanie stronicowania metodą przeciwdziałania fragmentacji. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.50/59 Page 1 entry Descriptor segment Page 0 entry Page table for segment 1 Segment 4 (7K) Systemy operacyjne / Zarządzanie pamięcią – str.51/59 (a) 18 9 Main memory address of the page table Segment length (in pages) 1 1 1 Page size: 0 = 1024 words 1 = 64 words 3 a. segment deskryptorów ze wskazaniami do tablic stron, 3 b. deskryptor segmentu. 0 = segment is paged 1 = segment is not paged Miscellaneous bits Protection bits (b) WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.52/59 MULTICS: Wyznaczanie adresu fizycznego Address within the segment Segment number MULTICS virtual address Page number Page 6 number 18 Segment number Offset within the page Offset10 34-bitowy adres wirtualny w systemie Multics. Intel Pentium: Segmentacja ze stronicowaniem √ Multics: 256K niezależnych segmentów, każdy do 64K 36-bitowych słów, √ Pentium: 16K niezależnych segmentów, każdy do 1G 32-bitowych słów, √ pojedyncza GDT (ang. Global Descriptor Table) w systemie, √ LDT (ang. Local Descriptor Table) dla każdego procesu. Word Descriptor Segment number Page frame Offset Page number Descriptor segment Page table Page Translacja dwuczęściowego adresu wirtualnego na adres w pamięci głównej. Dla przejrzystości pominięto fakt, że segment deskryptorów jest również stronicowany. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.53/59 MULTICS: bufory TLB WEiTI, Politechnika Warszawska Intel Pentium: Selektor i deskryptor segmentu Is this entry used? Comparison field Segment number Virtual page Page frame 4 1 7 Read/write 13 1 6 0 2 Read only 10 1 12 3 1 Read/write 2 1 Protection Systemy operacyjne / Zarządzanie pamięcią – str.55/59 Bits 13 0 = GDT/1 = LDT 1 0 Execute only 7 1 2 2 12 Execute only 9 1 Privilege level (0-3) 0: System 1: Application Segment type and protection 0: Li is in bytes 1: Li is in pages Base 24-31 Uproszczona wersja buforów TLB. 16 pozycji, dla których numer segmentu i strony są porównywane równolegle. W rzeczywistości ze względu na zróżnicowanie rozmiaru stron struktura jest bardziej złożona. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.54/59 Privilege level (0-3) 0: Segment is absent from memory 1: Segment is present in memory 0: 16-Bit segment 1: 32-Bit segment 0 2 2 Index Selektor w Pentium Age 1 G D 0 Limit 16-19 P DPL S Base 0-15 Type Base 16-23 Limit 0-15 4 0 Relative address 32 Bits Deskryptor segmentu kodu w Pentium WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.56/59 Intel Pentium: Wyznaczanie adresu fizycznego (I) Selector Intel Pentium: Ochrona rog User p rams Offset red libraries Sha Descriptor Typical uses of the levels stem calls Sy + Base address Limit Kernel Other fields 0 1 32-Bit linear address √ 2 3 jeżeli stronicowanie wyłączone (czysta segmentacja), uzyskany adres to adres fizyczny, √ przy włączonym stronicowaniu interpretacja uzyskanego adresu jako wirtualnego, √ wykorzystanie buforów TLB, WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.57/59 Intel Pentium: Wyznaczanie adresu fizycznego (II) Bits 10 Linear address 10 12 Dir Page Offset (a) Page table Page directory Page frame Word selected 1024 Entries Offset Dir Page Page table entry points to word Directory entry points to page table (b) √ 32-bitowa logiczna przestrzeń adresowa, strony o rozmiarze 4KB, √ każdy proces posiada katalog stron z 210 pozycjami, z których każda wskazuje na tablicę stron również z 210 pozycjami. √ możliwa pojedyncza, stronicowana, 32-bitowa przestrzeń adresowa na potrzeby aplikacji. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.58/59 Level √ cztery poziomy ochrony, można odwoływać się do danych segmentów swojego i wyższych poziomów, √ aby odwołać się do procedury innego niż własny poziomu CALL ma jako argument nie adres ale selektor do tzw. call gate. WEiTI, Politechnika Warszawska Systemy operacyjne / Zarządzanie pamięcią – str.59/59