Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 2. Pamięć rzeczywista 3. Pamięć wirtualna stronicowanie segmentacja stronicowanie + segmentacja 2 zarządzanie pamięcią operacyjną realizacja software owa wspomagana sprzętowo > system operacyjny + platforma sprzętowa, model pamięci typowo: wielka tablica oznaczona adresami od 0, złoŝona z komórek o wielkości bajta, jeśli w pamięci moŝna umieścić kilka procesów na raz, to konieczność zarządzania współdzieleniem pamięci, ochroną dostępu, itp. 3 1
PAMIĘĆ WIRTUALNA RZECZYWISTA procesy mogą widzieć więcej dostępne tyle pamięci, ile jest fizycznie pamięci, niŝ posiadamy fizycznie, konieczne zastosowanie odpowiednich mechanizmów STRONICOWANIE SEGMENTACJA STRONICOWANIE + SEGMENTACJA 4 STATYCZNY (static memory allocation) przydział (zaplanowanie) obszarów pamięci w procesie kompilacji (przed wykonaniem programu) PRZYDZIAŁ PAMIĘCI DYNAMICZNY (dynamic memory allocation) moŝliwy przydział /zwalnianie w trakcie wykonywania programu AUTOMATYCZNY (automatic memory allocation) alokacja miejsca przy wprowadzaniu programu do pamięci i zwalnianie przy usuwaniu 5 PAMIĘĆ operacyjna podręczna (cache) BIOS (flasheprom) L1 (Level 1) L2 (Level 2) L3 (Level3) 6 2
Zad.1. Do czego to słuŝy i jak ustawić: System BIOS Cacheable, Video BIOS Cacheable, AGP Aperture Size. 7 Etapy przetwarzania programu Program źródłowy Moduł wynikowy kompilacja Biblioteki Inne moduły konsolidacja Moduł ładowalny Obraz binarny w PO ładowanie Biblioteka systemowa Biblioteki ładowane dynamicznie 8 kod bezwzględny (ang. absolute code) z podanymi adresami PO, kod przemieszczalny kod przemieszczalny (ang. relocatable code) kod przemieszczalny adresy ustalane względem bazy podczas ładowania, 9 3
Adresy: logical address adres logiczny (widziany w obszarze zadania), physical address adres fizyczny ( komórka pamięci operacyjnej 1000 20 1020 10 Pytanie: w jakich sytuacjach adres logiczny moŝe być równy adresowi fizycznemu? 11 2. Pamięć rzeczywista Pamięć rzeczywista systemy jednoprogramowe program musi zmieścić się w pamięci, załadowanie przy uruchomieniu lub poprzez zapis w pamięci programowalnej. systemy wieloprogramowe a) podział zmienny tyle, ile zarządał proces, skomplikowane zarządzanie. b) podział stały (statyczny), podział na stałe części w momencie ładowania SO kolejki do bszarów, ze stałymi lub zmiennymi partycjami 12 4
2. Pamięć rzeczywista Metody przydzielania bloków pamięci: First Fit pierwszy pasujący (szybki, ale duŝa fragmentacja pamięci), np. Best Fit najlepszego dopasowania (wolniejszy, dobre wykorzystanie pamięci), Quick Fit najszybszego dopasowania (np. dodatkowa tablica typowych rozmiarów bloków), Worst Fit najgorszego dopasowania, Heap-based przydział w postaci obszarów o organizacji w postaci sterty 13 2. Pamięć rzeczywista Metody przydzielania bloków pamięci: Buddy algorytm zmodyfikowana wersja First Fit (opis np.: http://rainbow.mimuw.edu.pl/so/lablinux/pamiec/podt EMAT_6/opis.html ) więcej informacji o algorytmach: http://www.osdcom.info/content/view/31/39/ lub http://en.wikipedia.org/wiki/dynamic_memory_allocation 14 3. Pamięć wirtualna Maksymalna pamięć widziana przez pojedyncze zadanie (dla niego fizyczna ) jest odzwierciedlana w obszary pamięci fizycznej (której moŝe być znacznie mniej). Metody: stronicowanie, segmentacja, segmentacja + stronicowanie 15 5
3. Pamięć wirtualna Maksymalna pamięć widziana przez pojedyncze zadanie (dla niego fizyczna ) jest odzwierciedlana w obszary pamięci fizycznej (której moŝe być znacznie mniej). Metody: stronicowanie, segmentacja, segmentacja + stronicowanie 16 przestrzeń adresowa zadania podzielona jest na równe części zwane stronami (ang. pages), pamięć fizyczna podzielona jest na części takiej samej wielkości zwane ramami (ang. frames), strony są przyległe, ramy mogą być rozproszone w pamięci, rozmiar strony jest zazwyczaj określony przez sprzęt (typowo o wielkości od 512 B do 16 MB rozmiary o wielkości 2 m ) 17 Adres logiczny Adres fizyczny procesor s o r o s numer strony, r numer ramy, o przesynięcie, odlegość (offset) r Tablica stron Pamięć operacyjna 18 6
Pamięć logiczna Str. 0 Str. 1 Str. 2 0 1 1 5 2 4 Tablica stron Pamięć fizyczna 0 1 Str. 0 2 3 4 Str. 1 5 Str. 2... 19 dobre wykorzystanie pamięci (fragmentacja tzw. zewnętrzna praktycznie brak), dłuŝszy czas dostępu oraz złoŝony mechanizm adresowania (zazwyczaj SO przydziela tablicę stron do kaŝdego zadania), niewykorzystanie całej przydzielonej pamięci do zadania (tzw. fragmentacja wewnętrzna) zawsze przydzielamy z dokładnością do strony; jeśli strona 16 kb, a zadanie 18 kb, to zajmie 32 kb 20 ochrona dostępu np. poprzez bit poprawności (ang. valid-invalid bit) 0 1 p 5 p 0 n Tablica stron PTLR (ang. page table length register) rejestr długości tablicy stron słuŝący do sprawdzania, czy dany adres naleŝy do przedziału dozwolonego dla procesu (czy nie wykraczamy poza naszą przestrzeń adresową) 1 2 21 7
stronicowanie hierarchiczne z dwupoziomową tablicą stron - podział tablicy stron na strony, strony dzielone wykorzystanie stron z kodem wznawialnym (ang. reentrand code) przez kilka procesów, np. jeśli pracujemy na kilku dokumentach w jednym edytorze, to nie ma potrzeby kilka razy ładować go w całości do pamięci, inne aspekty Silberschatz, Podstawy systemów operacyjnych 22 3. Pamięć wirtualna - segmentacja schemat zarządzania odzwierciedlający sposób patrzenia na pamięć przez uŝytkownika, Pytanie: Jakie części programu widzi programista w PASCAL u? kaŝdy segment ma nazwę i długość, adresy określają segment i przesunięcie w segmencie, w systemie jest tablica segmentów (ang. segment table) rola podobna do tablicy stron 23 3. Pamięć wirtualna - segmentacja procesor Pułapka błąd adresowania s o N < T + s numer segmentu, a adres bazowy, d a Tablica segmentów g granica (długość) o przesynięcie, odlegość (offset) Pamięć operacyjna 24 8
3. Pamięć wirtualna - segmentacja Zadanie: - proszę rozmieścić w pamięci operacyjnej segmenty (zgodnie z tablicą segmentów) 0 1 2 3 1000 1300 400 6500 400 4000 1100 4400 Tablica segmentów 25 3. Pamięć wirtualna - segmentacja łatwiejsza implementacja programu, moŝliwość współdzielenia segmentów (np. zawierających biblioteki, współdzielony program), fragmentacja pamięci zaleŝna od wielkości segmentu, Pytanie: Jakie są zalety i wady rozwiązań: 1) cały proces to jeden segment, 2) wielkość segmentu to 1B 26 3. Pamięć wirtualna stron. + segm. segmenty z których składa się program dzielone są na strony, adres bazowy w tablicy segmentu określa adres bazowy tablicy stron dla danego segmentu 27 9
3. Pamięć wirtualna stron. + segm. mechanizm patrz materiały ksero LDT (local descriptor table) lokalna tablica deskryptorów, zawiera informacje o prywatnych segmentach procesu, GDT (global descriptor table) globalna tablica deskryptorów, zawiera informację o segmentach wspólnych dla wszystkich procesów 28 3. Pamięć wirtualna stron. + segm. eliminacja fragmentacji rozmieszczenie segmentów w róŝnych obszarach PO oraz fakt, iŝ segment nie musi być ciągły, wirtualność pamięci całkowita długość programu moŝe przekraczać długość pamięci fizycznej, moŝliwość współdzielenia obszarów pamięci (wykorzystanie segmentów przez róŝnych uŝytkowników), moŝliwość ochrony danych (np. zaznaczenie segmentów jako R, W, E) 29 3. Pamięć wirtualna stron. + segm. wzrost kosztów sprzętu (np. dodatkowe rejestry), zuŝycie czasu procesorana obsługę tablic oraz odwzorowania adresów logicznych w fizyczne, trudniejsza kontrola poprawności kodu (czy SO + program) nie zawieszą się istotne np. w systemach czasu rzeczywistego (nawet rezygnacja z trybów wirtualnych procesora ze względu na bezpieczeństwo) 30 10