Virtueel Geheugen

advertisement
Virtueel Geheugen
1) Logisch adres <-> fysisch adres
CPU (Central Processing Unit) werkt met constante of logische adressen.
Logische adressen blijven dus steeds dezelfde, terwijl fysische adressen
kunnen veranderen. Harde schijf CD – rom, deze werken allemaal met een
fysisch adres.
Vroeger zagen we nog veel 32 bit processoren, daarna kwamen de 64,
128, 256, 512 (wordt nu het meest gebruikt). Er zijn reeds processoren
met een geheugen van 1GB!!! Dat deel van de computer wordt ook wel
het virtuele geheugen genoemd, wat we hier uitvoerig zullen gaan
bespreken.
2) Lokaliteit van programma’s
Wanneer een instructie nodig is, is er veel kans dat we na die instructie
nog een andere instructie nodig is. Stel nu dat we instructie per instructie
uit de harde schijf moeten halen. Dit zou veel tijd in beslag nemen en is
dus onhandig. Wanneer we dus een instructie oproepen met onze
computer, dan zal onze computer niet alleen die instructie doorgeven aan
het virtuele geheugen, maar dan zal hij veel instructies doorgeven.
Waardoor bij de volgende oproep van een instructie de kans groot is dat
die reeds aanwezig is in het virtueel geheugen, op die manier wordt er
veel tijd bespaart.
De logische adresruimte wordt steeds deelt men in in kleinere blokken:
Bestaande uit een vaste grootte: PAGINA’S
Bestaande uit een variabele grootte: SEGMENTEN
Er zijn steeds een aantal pagina’s te vinden in het intern geheugen en ook
op de harde schijf. Het logische adres bestaat nu uit een paginanummer
(+offset) en segment.
Nu is er wel een systeem nodig om:
- te detecteren of pagina reeds in het intern geheugen aanwezig is
- indien pagina er niet in zit: breng de pagina naar het intern
geheugen.
- Indien nu het intern geheugen reeds vol zit, start dan het
paginavervangingsalgoritme.
Uitleg bij figuur 1:
- Eerst gaat de processor nagaan via de mapper of de opgevraagde
informatie reeds niet aanwezig is in het intern geheugen. (1)
- Is de opgevraagde informatie reeds aanwezig in het intern
geheugen, dan geeft de processor dit aan via het logisch
adres(4).
-
Is de opgevraagde informatie niet aanwezig in het
interngeheugen, dan wordt er naar de harde schijf gezocht(2)
naar het fysisch adres van de informatie, die dan vervolgend
gekoppeld wordt aan een logisch adres van het
interngeheugen(3).
figuur 1: hoe worden de gegevens naar het intern geheugen verzonden?
Een pagina hangt in de harde schijf dus niet vast aan een welbepaalde
plaats, dit komt dus overeen met de eigenschappen van logische
adressen, waarmee een harde schijf werkt.
De mapper heeft in het schema van figuur 1 een cruciale functie. Ze moet
namelijk de paginanummers van het logische adres, waarmee het intern
geheugen werkt gaan koppelen aan de papeframe van het
overeenkomstig fysisch adres. We moeten dus gaan indexeren.
Er kunnen natuurlijk pagefaults gaan optreden. Pagefaults treden op
wanneer we dan toch de informatie van de harde schijf moeten halen. Hoe
lossen we dit op? Wel, hiervoor heeft men tal van vervangingsalgoritmen
bedacht.
RANDOM: wanneer men een pagina moet vervangen, zal men een
willekeurige pagina gaan verwijderen om zo er een nieuwe in te
plaatsen. We voelen aan dat dit systeem niet echt ideaal zijn zal.
FIFO: First In First Out: Dit vervangingsalgoritme werkt snel en
makkelijk, maar gaat wel geen rekening gaan houden met veel
gebruikte pagina’s.
Voorbeeld: abacadaeafa met 4 pagina’s ruimte.
Geeft 7 pagefaults:
a_ _ _: pagefault
a b _ _: pagefault
a b _ _: geen pagefault
a b c _: pagefault
a b c _: geen pagefault
a b c d: pagefault
a b c d: geen pagefault
b c d e: pagefault
c d e a: pagefault
d e a f: pagefault
d e a f: geen pagefault
FINUFO: First In, Not Used, First Out. Dit is een
vervangingsalgoritme dat veel beter gaat werken, want in
tegenstelling tot FIFO zal FUNIFO wel rekening gaan houden met
veel gebruikte pagina’s
Voorbeeld: hernemen we het voorbeeld van daarnet, dan zien we
dat er nu minder pagefaults zullen optreden. We zullen hier in totaal
maar 6 pagefaults hebben ipv 7. Dit komt omdat a de zogenaamde
markering krijgt, omdat nadat het in het intern geheugen werd
ingevoerd opnieuw werd opgevraagd.
LRU: Least Recently Used. Deze methode gaat de pagina’s gaan
rangschikken volgens de tijd van gebruik. Wanneer dus de pagina in
ons voorbeeld 4 maal na elkaar niet werd opgevraagd zal ze in
principe verwijderd worden. Wanneer dus a moet opgeroepen
worden en a staat reeds in het intern geheugen, dan zal a behandelt
als het ware behandelt worden alsof het als laatst toegevoegd werd.
Over het algemeen zal het LRU – algoritme het meest efficiënte zijn na
FINUFO, FIFO en tenslotte de RANDOM, dat natuurlijk het minst practisch
is.
Let op, in sommige gevallen is FINUFO beter als LRU. Mooie
examenvraag: “geef een frequentie waarin FINUFO beter is dan het LRU
vervangingsalgoritme.”
3) Oefening
Vervolledig de volgende tabel. Het intern geheugen bestaat uit 3 pagina’s.
A
B
C
A
D
A
E
A
F
G
A
E
score
FIFO
F
a__
F
ab_
F
abc
N
abc
F
bcd
F
cda
F
dae
N
dae
F
aef
F
efg
F
fga
F
gae
10 fouten
F
F
F
N
F
N
F
N
F
F
N
F
FINUFO
a__
ab_
abc
abc
adc
adc
ade
ade
afe
afg
afg
aeg
8 fouten
LRU
F
F
F
N
F
N
F
N
F
F
N
F
a__
ab_
abc
bca
cad
cda
dae
dea
eaf
afg
fga
gae
8 fouten
Voor deze frequentie zijn zowel FINUFO als LRU even efficiënt.
Download