Schematy zarzadzania pamięcia Segmentacja podział obszaru pamięci procesu na logiczne jednostki segmenty o dowolnej długości. Postać adresu logicznego: [nr segmentu, przesunięcie]. Zwykle przechowywana jest w pamięci lub rejestrach procesora tablica deskryptorów segmentów zawierajacych bazę (fizyczny adr. poczatku), granicę (rozmiar segmentu) i dodatkowe informacje. Można nieużywane w danej chwili segmenty przechowywać na dysku, ale wymiana zwykle zwykle trudna w realizacji. Typowy problem: fragmentacja zewnętrzna pamięci operacyjnej. (Jest dużo drobnych wolnych fragmentów, ale nie ma miejsca na jeden duży segment.) Stronicowanie... M.Kik ASK 7 p.1/16
Pamięć wirtualna/stronicowanie Pamięć wirtualna wykorzystanie pamięci głównej jako bufora znacznie większej pamięci przechowywanej zwykle na dysku twardym. stronicowanie pamięć wirtualna dzielona jest na strony o jednakowej wielkości (zwykle 512 do 4096 bajtów). Pamięć główna jest dzielona na ramki stron (page frames) o tej samej wielkości. Dowolna strona może być umieszczona w dowolnej ramce. Fragmentacja wewnętrzna niewykorzystana końcówka ostatniej strony. adres wirtualny:, numer strony, przesunięcie. adres fizyczny:, numer ramki, przesunięcie. M.Kik ASK 7 p.2/16
Translator adresów tłumaczy adres wirtualny na adres fizyczny lub sygnalizuje brak odpowiedniej strony w pam. głównej (bład stronicowania). Zarzadca pamięci część systemu operacyjnego, wykorzystuje translator adresów do obsługi pam. wirtualnej. M.Kik ASK 7 p.3/16
stronicowanie Tablica stron zawiera deskryptory stron. Deskryptor na -tej pozycji zawiera bity sterujace (obecności, modyfikacji, blokujacy (zabraniajacy usunięcia)... ) oraz numer ramki -tej strony. Stronicowanie na żadanie wymiana strony gdy wystapi bład stronicowania. Uwaga: duże tablice stron moga również podlegać stronicowaniu. Sprzętowe wsparcie zarzadzania pamięcia Blok zarzadzania pamięcia (MMU memory management unit) dokonuje translacji adresów wirtualnych na fizyczne; wykorzystuje mały asocjacyjny bufor translacji adresów (translation lookaside buffer TLB). TLB zawiera kopie ostatnio używanych pozycji z tablicy stron. M.Kik ASK 7 p.4/16
Działanie MMU Start Sprawdz TLB Program obslugi bledu strony Deskryptor strony obecny? tak Wygeneruj adres fizyczny Uaktualnij tablice stron nie Wczytaj strone z dysku Wymiana strony nie Sprawdz w tablicy stron Strona w pamieci? tak Uaktualnij TLB tak Pamiec zapelniona? nie M.Kik ASK 7 p.5/16
Współpraca TLB i Cache Adres wirtualny Nr strony Wyrownanie chybienie TLB trafienie Adres fizyczny + Znacznik Reszta Cache chybienie trafienie wartosc Tablica stron DRAM wartosc M.Kik ASK 7 p.6/16
przykład Pentium Możliwy wybór jednego z czterech sposobów organizacji pamięci: Niesegmentowana niestronicowana adresy wirtualne takie same jak fizyczne (duża szybkość) Niesegmentowana stronicowana Stronicowana linowa przestrzeń adresowa (np. UNIX Berkeley). Segmentowana niestronicowana (tablica translacji (deskryptory) segmentów danego procesu w buforowane rejestrach procesora) CS, DS, ES, FS, SS zawieraja selektory (indeksy tablicy translacji). Deskryptory o tych indeksach skopiowane do procesora (do niewidocznych rejestrów)+ Segmentowana stronicowana Pamięć wirtualna dzielona na segmenty a następnie stornicowana (np. UNIX System V). M.Kik ASK 7 p.7/16
Segmentacja pentium Adres wirtualny: 16-bitowe odniesienie do segmentu (z CS,DS,ES,FS,GS lub SS) plus 32-bitowy adres względny. Razem TeraBajty (osobno po 8K segmentów po 4GB lokalnych i globalnych umieszczonymi pod adresami z rej. GDTR i LDTR) Adres wirtualny jest przekształcany na 32-bitowy adres liniowy (4GB przestrzeni). Selektor: 15 3 2 Indeks T I 1 0 RPL RPL poziom uprzywilejowania (w SS i CS CPL) TI wskaźnik (tablica ogólnych/lokalnych segmentów) Index Indeks w tablicy segmentów. M.Kik ASK 7 p.8/16
Deskryptor segmentu Deskryptor segmentu (64 bity) zawiera: Baza (32) poczatek segmentu wewnatrz 4GB przestrzeni. Granica (20) rozmiar segmentu (do 1MB lub do 4GB). Bit granulacji czy Granica w bajtach czy jednostkach 4KB. Bit D/B rozmiar operacji (znaczenie zależy od tego czy z SS,CS, czy dane) Bit S Czy segment systemowy DPL (2) poziom uprzywilejowania (porównywany z CPL i RPL). Bit P bit obecności (ważny jeśli nie ma stronicowania) Rodzaj segmentu (4) AVL M.Kik ASK 7 p.9/16
Pentium stronicowanie Adres liniowy (32 bity) ma postać: Katalog (10) numer tablicy stron w katalogu (o adresie fizycznym z CR3 pole: PDBR) Tablica (10) indeks deskryptora w tablicy stron Wyrównanie (12) przesunięcie na stronie Adres liniowy zamieniany jest na adres fizyczny. M.Kik ASK 7 p.10/16
zapis w tablicy stron/katalogu (32 bity) adres ramki strony/tablicy stron Bit A Bit D Bit PCD Bit PWT (20) górne 20 bitów adresu (pozostałe 12 bitów to zera) bit użycia (ustawiany przy dostępie do strony wykorzystywany w algorytmie wymiany syst. oper.) bit zabrudzenia (ustawiany przy zapisie; czy konieczny zapis na dysku przy wymianie tej strony) Bit PS (w katalogu) Bit RW Bit US Bit P AVL czy podlega cache owaniu czy wymaga Write Through czy rozmiar strony 4KB czy 4MB (dla 4MB pole adres wpisu w katalogu jest adresem ramki (jego dolne 10 bitów to zera), a pole Tablica adresu liniowego staje się górnymi bitami wyrównania) czy tylko do odczytu user/supervisor bit obecności M.Kik ASK 7 p.11/16
Stronicowanie z segmentacja Adres logiczny [selektor segmentu, przesunięcie] przekształcany jest na adres liniowy [katalog, tablica, wyrównanie]. Adres linowy przekształcany jest na adres fizyczny [32-bitowy]. M.Kik ASK 7 p.12/16
Power PC 32 bitowy adres efektywny: Segment (4) nr jednego z 16 rejestrów segmentowych Strona (16) identyfikator strony ( segment) stron na Bajt (12) przesunięcie na stronie (rozmiar strony: ) M.Kik ASK 7 p.13/16
Zawartość rejestru segmentowego ID segmentu efektywnego (24) doklejany do części [Strona,bajt] adresu efektywnego Bit ważności V Bit rodzaju segmentu T czy segment pamięci czy wejścia-wyjścia Klucz nadzorcy K M.Kik ASK 7 p.14/16
Zapis tablicy stron nr ramki (20) doklejone do pola Bajt tworzy adres rzeczywisty Bit ważności V Identyfikator haszowania H (1) czy zapis pierwotny czy wtórny API 6 najbardziej znaczacych bitów pola Strona Bit odniesienia R Bit zmiany C zabrudzenie Bity WMIG W dotyczy cache czy zapis opóźniony czy jednoczesny I M G czy dozwolone przenoszenie do cache czy jest to pamięć wspólna czy jest to pamięć chroniona Bity zabezpieczenia PP dostępu wraz z bitami K zapisu z tablicy segmentów stosowane do kontroli M.Kik ASK 7 p.15/16
Odwzorowania adresów Odwrócona tablica stron. Do przerysowania na tablicy dla wersji 32-bitowej i 64-bitowej :-( M.Kik ASK 7 p.16/16