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