Systemy operacyjne
description
Transcript of Systemy operacyjne
Systemy operacyjne
Wykład nr 9:
Zarządzanie pamięcią
Piotr Bilski
Pojęcia podstawowe
• W momencie tworzenia procesu, obraz binarny pliku jest kopiowany do pamięci
• Kolejka wejściowa – kolejka procesów na dysku czekających na przeniesienie do pamięci
• Ogólnie proces może znajdować się w dowolnym miejscu w pamięci
• System wiąże adresy bezwzględne (fizyczne) z względnymi (logicznymi)
Przetwarzanie programuProgram źródłowy
Kompilator lub asembler
Moduł wynikowy
Inne moduły
Konsolidator
Moduł ładowalny
Biblioteka systemowa
Ładowacz
Obraz binarny
Biblioteka DLL
Faza kompilacji
Faza ładowania
Faza wykonania
Miejsca wiązania adresów
• Faza kompilacji – kod bezwzględny (pliki COM)
• Faza ładowania – kod przemieszczany (zmiana względem adresu początkowego)
• Faza wykonania – przemieszczanie programu w czasie wykonywania, najbardziej uniwersalna
Pamięć logiczna a fizyczna
• Adres logiczny (wirtualny) – adres na poziomie programu, generowany przez procesor
• Adres fizyczny – adres sprzętowy lokacji w pamięci
• Odwzorowywanie przestrzeni adresowych wykonuje MMU (z użyciem rejestrów przemieszczenia)
• MS-DOS działa z czterema rejestrami przemieszczenia
Ilustracja działania MMU
Procesor Pamięć
Rejestr przemieszczenia
+
16500
Adres logiczny:
471
Adres fizyczny:
16971
MMU
Ładowanie dynamiczne
• Program składa się z niezależnych modułów (podprogramów)
• Moduły są ładowane do pamięci dopiero, gdy są potrzebne
• Odpowiada za to program łączący i ładujący• Korzyść – zmniejszenie efektywnej wielkości
programu• Ładowanie dynamiczne nie wymaga wsparcia
systemu operacyjnego
Biblioteki dołączane dynamicznie
• Działanie oparte na opóźnieniu konsolidacji• System operacyjny udostępnia własny zestaw
bibliotek• Program użytkownika ma tylko odwołanie do
funkcji z biblioteki, tzw. namiastkę• Możliwa jest przezroczysta aktualizacja bibliotek• Konsolidacja wymaga wsparcia systemu
operacyjnego
Nakładki
• Umożliwiają uruchamianie niezależnych fragmentów kodu, których łączny rozmiar przekracza dostępną wielkość pamięci
• Nakładki przechowywane są na dysku w postaci obrazów gotowych do ładowania
• Wsparcie systemu operacyjnego nie jest wymagane
• Potrzebny moduł obsługi nakładek
Ilustracja nakładek
Przebieg 1
20KBTablica symboli
Wspólne podprogramy
Moduł obsługi nakładek
Przebieg 2
30KB
10KB 80KB70KB
Dostępna pamięć: 150 KB
Wymiana• Proces przenoszenia programu z pamięci
głównej do pomocniczej (wytaczanie) i odwrotnie (wtaczanie)
• W systemie z podziałem czasu wytaczanie i wtaczanie powinno trwać znacznie krócej, niż praca procesu
• Kolejka procesów gotowych musi obejmować gotowe procesy w pamięci pomocniczej
• Wymiana a operacje wejścia-wyjścia
Przydział ciągły pamięci
• Pamięć jest podzielona na dwie części –dla systemu operacyjnego (dolną) i programów użytkownika
• Procesy muszą zajmować zwarte fragmenty pamięci
• Problem zabezpieczania obszarów pamięci przydzielonych do różnych procesów
Realizacja sprzętowego zabezpieczenia przestrzeni adresowej
PamięćProcesor
Pułapka: błąd adresowania
Rejestr graniczny
Rejestr przemieszczenia
< +
Adres logiczny
NIE
TAK
Adres fizyczny
Metody przydziału pamięci
• Metoda wielu obszarów (IBM OS/360)– Obszary (partycje) o ustalonym rozmiarze– Każdy proces dysponuje jednym obszarem
• Metoda zmiennej liczby zadań– Obszary o dowolnym rozmiarze, przydzielane w
zależności od zapotrzebowania procesu– Problem zajmowania dziur dla procesów
• Algorytmy zajmowania wolnej przestrzeni– Pierwsze dopasowanie– Najlepsze dopasowanie– Najgorsze dopasowanie
Problem fragmentacji
• Fragmentacja zewnętrzna – pozostałe wolne obszary są niespójne i za małe, aby zmieścić nowy proces
• Fragmentacja wewnętrzna – część przydzielonego procesowi obszaru jest niewykorzystana
• Unikanie fragmentacji zewnętrznej – upakowanie
Stronicowanie
• Schemat zarządzania pamięcią dopuszczający nieciągłość pamięci przydzielonej procesowi
• Pamięć fizyczna podzielona jest na małe fragmenty o stałej długości – ramki
• Pamięć programu podzielona jest na małe fragmenty o stałej długości - strony
Realizacja stronicowania
Pamięćfizyczna
Procesor
Tablica stron
Adres logiczny
Adres fizyczny
s o r o
r
s
Model stronicowania
Strona 1
Strona 0
Strona 2
Strona 3
8
1
3
6
0
1
2
3
Strona 0
Strona 1
Strona 2
Strona 3
0
1
2
3
4
5
6
7
8
Pamięć logiczna
Tablica stron
Pamięć fizyczna
Cechy stronicowania
• Rozmiar strony (512B-16MB) zależy od sprzętu• Eliminacja zewnętrznej fragmentacji – zostaje
wewnętrzna!• Duże strony – duża fragmentacja wewnętrzna• Małe strony – duża tablica stron
s oNumer strony Odległość na stronie
• 2m – rozmiar logicznej przestrzeni adresowej• 2n – rozmiar strony
m-n n
Problemy stronicowania
• System musi wiedzieć, które ramki są wolne – tablica ramek
• Rozmiar pozycji w tablicy stron zależy od wielkości pamięci i liczby stron
• Strony procesów mają być widoczne tylko dla nich samych
• Problemy zabezpieczeń
Wsparcie sprzętowe stronicowania
• PCB przechowuje wskaźnik do tablicy stron
• Tablica stron może być: – zestawem rejestrów (tylko dla małych
programów)– Częścią pamięci operacyjnej (wskazywanej
przez rejestr bazowy tablicy stron PTBR)
• Bufor translacji adresów stron (TLB) – pamięć podręczna dla stronicowania
Realizacja stronicowania z TLB
Pamięćfizyczna
Procesor
Adres logiczny
Adres fizyczny
s o r o
r
s
chybienie
trafienie
Nr strony Nr ramki
Aspekty działania TLB
• Niewielki rozmiar (do 1024 pozycji)• Zastępowanie wpisów, gdy TLB pełny (z
wyłączeniem pozycji przypiętych)• Przechowywanie identyfikatorów przestrzeni
adresowej (AISD)• Współczynnik trafień TLB powinien dążyć do
100 procent• Efektywny czas dostępu do pamięci:
)2()1()( MEMTLBMEMTLBeff tthrtthrt
Ochrona stronicowania
• Bity ochrony przypisane do każdej ramki określają tryb dostępu (zapis/odczyt lub odczyt)
• Bit poprawności określa, czy strona należy do przestrzeni adresowej procesu
• Rejestr długości tablicy stron (PTLR) zapobiega tworzeniu tablicy stron na całej przestrzeni dostępnej dla procesu, gdy zajmuje on mniejszy rozmiar
Stronicowanie hierarchiczne• Konieczne dla dużych przestrzeni adresowych (np.
rzędu 232 słów)• Stronicowanie dwupoziomowe:
• Np. w fizycznej przestrzeni 32-bitowej strona może mieć 4KB (212), więc tablica musiałaby zajmować 220 wpisówZamiast tego tworzy się dwie tablice o długości po 10 bitów
s2 o
Numer strony Odległość na stronie
n1 n2 m
s1
Wstępnie odwzorowana tablica stron
Pamięćfizyczna
Tablica stron
Zewnętrzna tablica stron
0
1
2
300
1
300
2
Hashowana tablica stron
• Stronicowanie hierarchiczne w przestrzeniach adresowych większych niż 32-bitowe jest nieefektywne
• Hashowana tablica stron zawiera wpisy – powiązane listy elementów składających się z trzech elementów:– Numer strony wirtualnej– Wartość odwzorowanej ramki strony– Wskaźnik do następnego elementu na liście
Działanie hashowanej tablicy stron
Pamięćfizyczna
Adres logiczny
Adres fizyczny
s o r o
Tablica z hashowaniem
Funkcja hashująca
s r
s r
…
Odwrócona tablica stron
• Alternatywne rozwiązanie do tablicy stron, gdy procesów jest bardzo dużo lub są one bardzo duże
• Każda pozycja to odwzorowanie ramki na stronę (odwrotnie!)
• Istnieje jedna tablica dla wszystkich procesów• Adres logiczny ma wówczas postać:
• Problem: długi czas przeszukiwania
<identyfikator-procesu, numer-strony, odległość>
Działanie odwróconej tablicy stron
Pamięćfizyczna
Adres logiczny
Adres fizyczny
i o
Tablica stron
Procesor
s oPID
PID s
Przeglądanie
Strony dzielone
• Realizacja współdzielenia kodu przez procesy• Kod wznawialny (reentrant code) może być
używany przez różnych użytkowników i programy (systemy z podziałem czasu)
• Kod wznawialny nie może zmieniać się w czasie wykonania (jest tylko do czytania)
• Każdy użytkownik korzysta z tej samej kopii programu i własnej kopii danych
Segmentacja
• Logiczna przestrzeń adresowa dzielona jest na obszary o różnej wielkości przypisywane poszczególnym programom i ich fragmentom
• Każdy segment ma nazwę i długość• Segmenty są numerowane• Adres logiczny ma postać:
<numer-segmentu, odległość>
Sprzęt do segmentacji
• Odwzorowanie adresu logicznego na fizyczny zapewnia tablica segmentów
• Każdy wpis zawiera bazę segmentu i jego granicę
• Segmentacja jest widoczna dla programisty• Występuje tu problem zewnętrznej segmentacji
Ilustracja sprzętu do segmentacji
PamięćfizycznaTak
Nie
Tablica segmentów
Procesor
s o
Granica Baza
Przeglądanie
< +
s
Pułapka: błąd adresowania
Ochrona i współużytkowanie
• Segmentacja zapewnia ochronę danych i rozkazów tylko do odczytu (bity ochrony)
• Umieszczenie tego samego identyfikatora w dwóch różnych tablicach umożliwia dzielenie danych lub kodu
Ilustracja współużytkowania
Edytor Dane 1
Segment 0Segment 1
Pamięć logiczna procesu P1
Edytor Dane 2
Segment 0Segment 1
Pamięć logiczna procesu P2 Pamięć fizyczna
Edytor
Dane 1
Dane 2
Granica Baza
0 25286 43062
1 4425 68348
Granica Baza
0 25286 43062
1 8850 90003
43062
68348
72773
90003
98553
Segmentacja ze stronicowaniem
• Rozwiązanie stosowane w procesorach Intela
• Wsparcie większości systemów operacyjnych (OS/2, Windows, Linux)
• Przestrzeń adresów logicznych podzielona jest na dwie strefy, opisywane przez tablicę lokalnych deskryptorów (LDT) oraz tablicę globalnych deskryptorów (GDT)
Adresowanie w segmentacji
• Adres logiczny jest parą <selektor,odległość>• Selektor ma format:
• s – numer segmentu• g – lokalizacja segmentu w LDT lub GDT• p – tryb ochrony• Każdy segment jest stronicowany (w przestrzeni 32-
bitowej stronicowanie dwupoziomowe)
g ps
Schemat adresowania
Deskryptor segmentu
s o
+ kat odlstrona
Wpis katalogowy Pozycja tablicy stronAdres fizyczny
Rejestr bazowy katalogu stron