architektura komputerów w. 8 Zarządzanie pamięcią Zarządzanie pamięcią Jednostka centralna dysponuje zwykle duża mocą obliczeniową. Sprawne wykorzystanie możliwości jednostki przetwarzającej wymaga obecności systemu operacyjnego. Procesory posiadają rozwiązania wspierające zadania systemu operacyjnego Większość stosowanych systemów operacyjnych to systemy wieloprogramowe W systemach jednoprogramowych program jest umieszczany pod stałymi adresami W systemach jednoprogramowych z systemem operacyjnym pamięć jest dzielona miedzy SO i program użytkowy. W systemach wieloprogramowych w pamięci trzeba umieścić wiele programów architektura komputerów w 8 1
Zadania jednostki zarządzania pamięcią Zarządzanie pamięcią: Konieczność pomieszczenia w w ograniczonej przestrzeni pamięci wielu procesów. (z czego część będzie nieaktywna). Postuluje to zastosowanie skutecznego algorytmu wymiany procesów w SO pomiędzy pamięcią operacyjna i zewnętrzną lub zwiększenie przestrzeni adresowej (np. przez wirtualizację) Konieczność zapewnienia procesom identycznego sposobu widzenia przestrzeni adresowej. Załadowanie kilku procesów oznacza, ze będą one umieszczone począwszy od różnych adresów fizycznych w pamięci. Ochrona kodu i danych Konieczność zapewnienia ochrony kodu i danych przed odczytem lub modyfikacją przez inny proces Ochrona przed niepoprawnym dostępem w obrębie procesu (np. wykonania danych) Dynamiczna alokacja pamięci dla poszczególnych procesów w razie potrzeby Wirtualizacja przestrzeni pamięci pozwalająca na zwiększenie dostępnej przestrzeni adresowej dla każdego procesu Zarządzanie pamięcią Część kodu (jadro SO) jest stale obecne w pamięci operacyjnej Pozostałą częścią trzeba zarządzać ładując i nadzorując wykonanie procesów Proces operuje na adresach logicznych Adres logiczny jest w jednostce zarządzania pamięcią: Sprawdzany pod katem poprawności Zamieniany na adres fizyczny Metody działania: Relokacja Segmentacja (podział na elementy o nierównej długości, może być widoczny dla programisty) Stronicowanie (podział na elementy o równej długości, niewidoczny dla programisty) architektura komputerów w 8 2
Relokacja Wytwarzanie adresu fizycznego Proces korzysta z dwóch rejestrów MMU, jeden zawiera adres bazowy dla obliczania adresu fizycznego, drugi adres końca przydzielonego obszaru (lub długość przydzielonego obszaru) pamięć Adres logiczny Adres bazowy + Adres fizyczny przydzie lony dla procesu Adres końcowy > błąd Relokacja Pamięc podzielona jest na obszary o stałej (różnej) wielkości przydział metodą najlepszego dopasowania lub na obszary o zmiennej wielkości Przydział żądanego obszaru, metody BF, FF Możliwość zwiększania przydzielonego obszaru o ile jest to możliwe Prowadzi do fragmentacji pamięci pamięć wy wy wy wy wy wy proces1 proces4 proces4 proces4 proces2 proces2 proces5 proces5 proces5 proces5 proces6 proces6 proces7 proces7 architektura komputerów w 8 3
Relokacja Zwiększenie wymaganego obszaru może wymagać relokacji procesu. wy Proces 1 żąda proces1 dodatkowej pamięci wy proces1 proces1 Segmentacja i stronicowanie Segmentacja Przestrzeń adresowa procesu dzielona jest na segmenty zgodnie z jego logiczną strukturą Kod Dane Stos Adres logiczny składa się z dwóch elementów adresu segmentu i przesunięcia wewnątrz segmentu Może być wiele segmentów zarówno dla kodu jak i danych Pamięć dla struktur danych w tej organizacji może być dynamicznie alokowana przez zwiększenie rozmiaru segmentu (co może wymagać relokacji segmentu) lub utworzenie nowego segmentu Możliwa jest ochrona poprzez określenie praw dostępu do segmentu Możliwe jest dopuszczanie kilku procesów do korzystania z segmentu danych Metoda posiada wady: dynamiczna alokacja pamięci prowadzi do fragmentacji Praktycznie nierealizowalna pamięć wirtualna architektura komputerów w 8 4
Segmentacja i stronicowanie Segmentacja: Adres logiczny w systemie z segmentacja składa się z Identyfikatora segmentu Adresu wewnątrz segmentu (offset) Na podstawie identyfikatora segmentu odnajdywany jest deskryptor segmentu Deskryptor segmentu zawiera Informację o prawach dostępu Długość segmentu Adres bazowy segmentu Translacja adresu polega na obliczeniu adresu fizycznego z adresu bazowego i offsetu Jeżeli Typ dostępu jest niezgodny z prawami dostępu do segmentu Offset przekracza zakres segmentu Deskryptor jest nieważny Jednostka zgłasza błąd. Segmentacja i stronicowanie Adres logiczny offset Adres fizyczny offset Tablica Stronicowanie: Uzasadnieniem stosowania stronicowania jest zasada lokalności Podział pamięci na bloki o określonej długości stronicowanie Przestrzeń adresowa procesu jest jednowymiarowa podział na strony odbywa się przez odwzorowanie adresu logicznego na odnośnik do strony i offset na stronie Bloki przestrzeni fizycznej - strony fizyczne Bloki przestrzeni logicznej - strony logiczne Stronicowanie nie jest widoczne dla programisty Deskryptory stron umieszczane są w tablicach. Opis strony zawiera znaczniki praw dostępu do strony i bity atrybutów wykorzystywane przez SO Stronicowanie jest głównym mechanizmem wykorzystywanym w budowie pamięci wirtualnej architektura komputerów w 8 5
Segmentacja i stronicowanie Stronicowanie: Każdy z procesów posiada własną tablicę deskryptorów proces może mieć większe rozmiary niż rozmiar pamięci. VAX max wielkość procesu 2 GB. = 2 22 stron 0,5KB Tablica deskryptorów w tym przypadku ma wielkość 4MB Stosowane są tablice dwupoziomowe i trójpoziomowe. Typowy proces ma wielkość kilkudziesięciu MB Typowa wielkość tablic dla procesu 20-80KB Tablica pierwszego poziomu jest wskazywana przez specjalny rejestr procesora (CR3 w Pentium) Rejestr wy, niedostępny dla użytkownika Przeładowywany w trakcie przełączania procesów Stronicowanie Adres logiczny offset Adres fizyczny offset Tablica Typowy rozmiar strony 4kB lub 8 kb Opis strony zawiera znaczniki praw dostępu do strony i bity atrybutów wykorzystywane przez SO W przypadku niezgodności typu dostępu z prawami dostępu w deskryptorze jednostka blokuje dostęp i zgłasza błąd architektura komputerów w 8 6
Segmentacja i stronicowanie Podstawowa jednostką sprzętową realizującą stronicowanie jest bufor translacji (TLB- Translation Lookaside Buffer). Adres logiczny jest dzielony na potrzeby stronicowania na dwie części wirtualny numer strony (VPN) i adres na stronie (offset) Translacja adresu polega na przyporządkowaniu stronie wirtualnej numeru strony rzeczywistej. TLB dysponuje cache asocjacyjnym i przechowuje deskryptory kilku ostatnio wykorzystywanych stron. (W procesorze Pentium - 32) Adres logiczny VPN offset TLB VPN PPN Adres fizyczny PPN offset Segmentacja i stronicowanie Stronicowanie: W przypadku niezgodności typu dostępu z prawami dostępu w deskryptorze jednostka blokuje dostęp i zgłasza błąd W przypadku chybienia (braku deskryptora strony w TLB) żądany deskryptor ładowany jest z tablicy deskryptorów stron przechowywanej w pamięci. Chybienie oznacza 2 4 dostępów do pamięci istotna jest minimalizacja ilości chybień Chybienie wynika z małej pojemności TLB Duża ilość deskryptorów wynika z małego rozmiaru strony co wynika z wirtualizacji Mniej deskryptorów to mniej chybień pamięć przeznaczona dla jądra SO nie musi podlegać wirtualizacji Można użyć kilku rozmiarów stron architektura komputerów w 8 7
Stronicowanie pamięć wirtualna Nie jest konieczne ładowanie do pamięci wszystkich stron procesu. Strony chwilowo niepotrzebne mogą być przechowywane w pamięci zewnętrznej Minimalna przestrzeń potrzebna do funkcjonowania procesu zbiór roboczy Żądanie dostępu do strony nieobecnej w pamięci fizycznej powoduje błąd dostępu i konieczność załadowania żądanej strony. Żądana strona musi zostać sprowadzona do pamięci ( SO), tablica stron zaktualizowana a próba dostępu procesu wykonana powtórnie po zakończeniu operacji. W przypadku braku miejsca jedna ze stron obecnych w pamięci operacyjnej powinna być usunięta. Proces wymiany może być nieefektywny migotanie stron. Nie należy wymieniać strony, która jest częścią zbioru roboczego aktywnego procesu i nie należy uaktywniać procesu, którego zbiór roboczy nie może być umieszczony w całości w pamięci Pamięć wirtualna Strategie zarządzania pamięcią strategie pobierania (fetch policy) decyzje, kiedy załadować informację do pamięci głównej strategie przydziału (placement policy) reguły i algorytmy wpasowania bloków informacji w wolne obszary pamięci głównej strategie wymiany (relocation policy) reguły i algorytmy usuwania informacji z pamięci głównej. Strategie pobierania pobranie wymuszone (demand fetching) na skutek błędu braku obiektu (missing item fault) pobranie antycypowane (prefetching) na podstawie prognozy architektura komputerów w 8 8
Zarządzanie pamięcią - Pentium FlatModel płaski model pamięci bez podziału na segmenty Segmented Model Pamięć podzielona na segmenty Real-Address-Model segmentacja typu x86 Zarządzanie pamięcią - Pentium Niesegmentowana pamięć niestronicowana Niesegmentowana pamięć stronicowana segmentowana pamięć niestronicowana segmentowana pamięć stronicowana architektura komputerów w 8 9
Relokacja Pentium Segmented Model Segmentacja - Pentium Rejestry segmentowe Pentium składają się z dwóch części. Część ukryta służy jako cache dla informacji zawartej w tablicy deskryptorów segmentów i ładowana jest każdorazowo wraz z zapisem widocznej części architektura komputerów w 8 10
Segmentacja - Pentium Adres logiczny Indeks segmentu TIPL RPL Adres względny 15 3 2 1 0 31 0 RPL (Requested Privilege Level) - poziom uprzywilejowania Indeks segmentu indeks do tablicy segmentów TI wskaźnik (tablica ogólnych/lokalnych segmentów) Dla każdego segmentu określony jest poziom uprzywilejowania (RPL:0-3) Proces ma dostęp tylko do takich segmentów danych, których poziom uprzywilejowania jest niższy lub równy poziomowi uprzywilejowania segmentu kodu. Niektóre rozkazy mogą być wykonywane wyłącznie na określonym poziomie uprzywilejowania Poziom uprzywilejowania segmentu danych (clearance) określa dopuszczalność zapisu dla segmentu. Segmentacja - Pentium architektura komputerów w 8 11
Segmentacja - Pentium Odniesienie do segmentu RPL 15 3 RPL- poziom uprzywilejowania Odniesienie do segmentu indeks do tablicy segmentów 0 31 Adres względny 0 Odniesienie do segmentu Adres względny Tablica deskryptorów Segment Descriptor Adres bazowy + Adres fizyczny Segmentacja - Pentium architektura komputerów w 8 12
Deskryptor segmentu Segmentacja - Pentium Base 31:24 G D / B 0 A V L Seg limit 16:19 p D P L s type Base 23:16 Base 15:0 Segment limit 15:0 Struktura deskryptora segmentu (jedna pozycja w tablicy deskryptorów segmentów) AVL dostępny do użycia przez SO BASE bazowy adres segmentu D/B długość słowa DPL poziom uprzywilejowania deskryptora G ziarnistość (Segment Limit podany w bajtach lub jednostkach 4kB) LIMIT rozmiar segmentu P bit obecności S typ segmentu (dane/kod) TYPE typ segmentu (r/w,ro,execute, exp,accessed) Stronicowanie - Pentium. Pamięć wirtualna Translacja adresu strona 4KB kartoteka tablica offset Adres fizyczny Odnośnik do tablicy stron Odnośnik do strony PDBR architektura komputerów w 8 13
Stronicowanie - Pentium. Pamięć wirtualna Translacja adresu strona 4MB 31 22 21 kartoteka tablica offset 0 Adres fizyczny Odnośnik do strony PDBR Stronicowanie - Pentium. Pamięć wirtualna Deskryptor strony 4KB. p P p U R Page Base Address avail G a d D C w / / p t D t s W G strona globalna Dirty strona zmodyfikowana Accessed był dostęp do strony PCD zakaz buforowania w cache PWT buforowanie w cache typu write-trough U/S użytkownik/system RW RO/RW Present znacznik obecności w pamięci operacyjnej architektura komputerów w 8 14
Stronicowanie - Pentium. Pamięć wirtualna Każdy proces ma własną tablicę 1 poziomu oraz kilka tablic 2 poziomu Typowa zajętość pamięci przez tablice procesu 20-80KB Część pamięci nie podlega wirtualizacji Jądro systemu Bufory i sterowniki urządzeń zewnętrznych (np. pamięć obrazu) Pentium. Zarządzanie pamięcią architektura komputerów w 8 15