Hoofdstuk 8: Virtueel geheugen
8.1. Hardware en besturingsstructuren
technieken
segmenteren pagineren
partitioneren: gebruikt geen virtueel geheugen
2 kenmerken:1. Geheugenverwijzingen vertaald tijdens uitvoering
proces kan op verschillende loc. terechtkomen2. Proces kan opgedeeld worden in meerdere stukken
hoeven niet aaneengesloten te zijn
gevolg:niet alle stukken van proces hoeven in hoofdgeheugente zitten
definitie:residente set = deel van programma in RAM
8.1. Hardware en besturingsstructuren
PROCESSOR
machineinstructie
Logisch adres niet in hoofgeheugen?
1. Processor genereert interrupt (memory fault)2. OS plaats proces in toestand blocked3. OS haalt processtuk binnen in RAM
1. OS zendt I/O request om HD te lezen2. OS activeert ander proces3. I/O interrupt indien processtuk binnengehaald4. OS zet proces terug in toestand ready
voordeel 1: er kunnen meer processen in RAM geheugen zittenvoordeel 2: een proces kan groter zijn dan totale hoofdgeheugen
mogelijk nadeel: thrashing (~constant swappen) zoveel mogelijk voorkomen
8.1. Hardware en besturingsstructuren
reëel geheugen : deel van proces in RAMvirtueel geheugen : geheugen zoals de programmeur het ziet (~HD)
HW en SW ondersteuning bij paginatie/segmentatie!!!
HW ondersteuning bij paginatie
paginanr positie
segmentnr positie
paginanrsegmentnr positie
P M other OS bits framenr
P M other OS bits lengte segmentbasis
control bits lengte segmentbasis
P M other OS bits framenr
virtueel adres
virtueel adres
virtueel adres
paginatabelingang
segmenttabelingang
paginatabelingang
segmenttabelingang
pagineren
segmenteren
combinatie
P
M
present-bitis pagina in geheugen?
modified-bitis pagina veranderd?
8.1. Hardware en besturingsstructuren
HW ondersteuning bij paginatie
pagenr positie
framenr
virtueel adres
P
M
present-bitis pagina in geheugen?
modified-bitis pagina veranderd?
programma pagineringsmechanisme hoofdgeheugen
+
framenr positie
pointerpage table
registerpagenr
pos
pagefra
me
n b
its
m b
its
8.1. Hardware en besturingsstructuren
HW ondersteuning bij paginatie
P
M
present-bitis pagina in geheugen?
modified-bitis pagina veranderd?
mogelijk probleem: paginatabellen per proces kunnen heel groot worden
voorbeeld:proces max. 231 bits = 2 GB virtueel geheugenpagina’s van 29 bits = 512 bytes 222 page table entries (PTE’s) per proces
oplossing: pagineren van page tables
8.1. Hardware en besturingsstructuren
…
base page table (4KB)
user page table (4MB)
user adress space (4GB)
HW ondersteuning bij paginatie
voorbeeld:adressen = 32 bits (4 bytes) => virtuele adresruimte = 232 bitspaginagrootte = 212 bytes (4KB) => 220 pagina’s
user page table = 220 entries X 4 bytes = 4 MB
8.1. Hardware en besturingsstructuren
HW ondersteuning bij paginatie
10 bits 12 bits
virtueel adres
P
M
present-bitis pagina in geheugen?
modified-bitis pagina veranderd?
programma pagineringsmechanisme hoofdgeheugen
+
framenr positie
pointerpage table
register
pos
pagefra
me
10 bits
+
8.1. Hardware en besturingsstructuren
HW ondersteuning bij paginatie
P
M
present-bitis pagina in geheugen?
modified-bitis pagina veranderd?
nadeel van pagineringsmechanisme:omvang van page table ~ omvang virtuele adresruimte
oplossing: geïnverteerde page tables
pagenr positie
HASH
n bitsproces IDpagenr chain
01
2m-1
i
j
framenr positie
contr
ol bit
sm bits
RAM geheugen= 232 bits
8.1. Hardware en besturingsstructuren
HW ondersteuning bij paginatie
P
M
present-bitis pagina in geheugen?
modified-bitis pagina veranderd?
geïnverteerde page tables
pagenr positie
HASH
n bitsproces IDpagenr chain
01
2m-1
i
j
framenr positie
contr
ol bit
sm bits
RAM geheugen= 232 bits
# virtual pages > # real pages chaining
8.1. Hardware en besturingsstructuren
HW ondersteuning bij paginatieTranslation lookaside buffer (~cache)
pagenr pos.virtueel adres
framenr positie
schijfg
eheugen
RA
Mgeheug
en
reeel adres
TLB
PT
TLB_hit
TLB_miss
page_fault
page_loading
8.1. Hardware en besturingsstructuren
start
CPU controleert TLB
toegang tot PT
TLB bijwerken
PT in TLB?
page in RAM?
CPU genereertfysiek adres
OS draagt CPUop om page te lezen van HD
CPU activeertI/O HW
page van HD nr RAM
page vervanginguitvoeren
PT bijwerken
RAMVol?
NEE
NEE
NEE
JAJA
JA
terugkeer nr instructiedie page fault veroorzaakte
8.1. Hardware en besturingsstructuren
HW ondersteuning bij paginatie
paginagrootte???
1. kleine paginagrootte + minder interne fragmentatie
- groot aantal benodigde pagina’s => deel van PT op HD2. grote paginagrootte
- efficientere blokoverdracht van data + meer page faults
opm: nieuwe programmeertechnieken leiden tot meer page faults(~overtreden lokaliteitsprincipe)
1. OO technieken2. multithreading toepassingen
8.1. Hardware en besturingsstructuren
HW ondersteuning bij segmentatie
voordelen van gesegementeerde adresruimte:1. gemakkelijker omgaan met groeiende gegevensstructuren2. onafhankelijke compilatie van programma’s3. gemakkelijk delen van segmenten door verschillende processen4. gemakkelijker toegangsbeheer
organisatie:
segmentnr pos.
segmnr pos=d
basis
virtueel adres
programma segmenteringsmechanisme hoofdgeheugen
+
basis +dregister
segm
nr
d
segm
en
t
length
pointersegm table
+reeel adres
8.1. Hardware en besturingsstructuren
gecombineerde paginatie en segmentatie
voordelen van segmentatie: oa. logisch opdelen van programma (~programmeur)voordelen van paginatie: oa. interne fragementatie minimaliseren (~systeem)
segmnr posvirtueel adres
programma segmentatiemechanisme
hoofdgeheugen
pagenr
paginatiemechanisme
++
posframenr
pointersegm table segment
table
pagetable
8.2. OS softwareaspecten ontwerp OS bij segmentatie/paginatie
doel: goede performantie door optreden van paginafouten te minimaliseren OS beslist welke pagina’s uitgewisseld worden
Andere aspecten die prestatie van systeem beinvloeden:1. grootte van RAM2. snelheid van RAM en HD3. omvang/aantal/gedrag processen
optimale strategie???
8.2. OS softwareVervangingsstrategie (replacement policy)
vraag:welke pagina moet uit RAM weggehaald worden?
doelstelling:“neem pagina waarbij kans op verwijzingen in nabije toekomst
erg klein is”
framevergrendeling:vergrendelde frames kunnen niet vervangen worden (1 bit)
elementaire algoritmen:1. optimaal: vervang pagina die langst niet nodig is
neg: onmogelijk te implementeren2. least recently used (LRU)
neg: overhead dr bijhouden van tijdstippen3. first in, first out (FIFO)
neg: vaak minder optimaal4. clock (use bit + FIFO)
8.2. OS softwareVervangingsstrategie (replacement policy)
page 222
U=0
page 33
U=1 p
age 6
7U
=1
13U=
0
page 556
U=0
page 191U=1
page 45
U=1
page 1
U=1pag
e 19
U=
1
page 9
U=
1
…
page 222
U=0
page 33
U=1 p
age 6
7U
=1
page 13
U=
0
page 727
U=1
page 191U=0
page 45
U=0
page 1
U=1pag
e 19
U=
1
page 9
U=
1
…
(a) buffer state: before (b) buffer state: after
clockstrategy
8.2. OS softwareVervangingsstrategie (replacement policy)
2 23
23
231
235
235
435
435
435
235
235
235
2 23
23
231
251
251
254
254
354
352
352
352
2 23
23
231
531
521
524
524
324
324
354
352
2* 2*3*
2*3*
2*3*1*
5*31
5*2*1
5*2*4*
5*2*4*
3*24
3*2*4
3*25*
3*5*2*
F F F F F
F F F F F F
F F F F
F F F
2 3 2 1 5 2 4 5 3 2 5 2
optimaal
LRU
FIFO
clock
page address stream
8.2. OS softwareVervangingsstrategie (replacement policy)
verfijning van klokalgoritme:vervang eerst ongewijzigde pagina’s
U = use bitM = modify bit
werking van het algoritme:1. Neem U=0 en M = 02. Neem U=0 en M = 13. Neem U=1 en M = 04. Neem U=1 en M = 1
opmerking:vervangen van gewijzigde pagina’s kost meer tijd
8.2. OS softwarebeheer van residente set
vraag:- hoeveel pagina’s toewijzen aan een actief proces?- welke pagina’s komen in aanmerking voor vervanging?
grootte van residente set aantal pages per proces klein
pos: aantal processen in RAM hoog minder swapping nodigneg: aantal paginafouten behoorlijk hoog
twee strategieën:
1. fixed allocation: vast aantal pagina’s per proces (afh. van type proces)2. variable allocation: aantal paginaframes per proces kan variëren
8.2. OS softwarebeheer van residente set
vervangingsbereik
twee strategieën:1. local scope: vervang pagina van zelfde proces2. global scope: maak keuze uit alle onvergrendelde pagina’s
vervangingsbereik
grootte van
residente set
vastetoewijzing
variabeletoewijzing
localevervanging
globalevervanging
OK
OK OK
X
8.2. OS softwarebeheer van residente set
vastetoewijzin
g
variabele
toewijzing
localevervangi
ng
globalevervangi
ng
neg: te weinig pagina’s per proces veel paginafoutenneg: te veel pagina’s per proces veel swapping
variabele
toewijzing
neg: pagina’s kunnen afgenomen worden van andere processen
localevervangi
ng1. wijs aantal pagina’s toe aan proces bij laden in geheugen2. selecteer bij paginafouten een pagina uit residente set van proces3. evalueer af en toe de toewijzing en verhoog/verlaag residente set
8.2. OS softwareopkuisstrategie
vraag:Wanneer moet gewijzigde pagina worden weggeschreven?
strategieën:1. demand cleaning
neg: wachten op 2 paginaoverdrachten2. precleaning
neg: te veel pagina’s wegschrijven
8.2. OS softwaretoezicht op procesbelasting
niveau van multiprogrammering:
niveau van multiprogrammering
beze
ttin
gsg
raad
pro
cess
or
thrashing: teveel paginafouten
strategieën:1. voer enkel processen uit met voldoende grote residente set2. houd bezettingsgraad van paging apparaat op 50%3. bepaal aantal processen ahv snelheid van wijzer bij cirkelvormige buffer
stel: trage snelheid mogelijke oorzaken:1. weinig paginafouten2. veel ongebruikte residente pages
niveau van multiprogramming
verhogen
8.2. OS softwaretoezicht op procesbelasting
welk proces opschorten?1. proces met laagste prioriteit (~afh. van gebruiker)2. proces dat paginafout veroorzaakt (~proces wordt toch al geblokkeerd)3. laatst geactiveerd proces (~minder pages al aanwezig)4. proces met kleinste residente set (~kleine moeite om opnieuw in te laden)5. grootste proces (~veel vrije frames beschikbaar)6. proces met grootste resterende uitvoeringstijd (~SPN)