Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren...

26
Hoofdstuk 8: Virtueel geheugen

Transcript of Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren...

Page 1: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

Hoofdstuk 8: Virtueel geheugen

Page 2: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen 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

Page 3: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 4: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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?

Page 5: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 6: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 7: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 8: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

+

Page 9: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 10: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 11: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 12: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 13: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 14: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 15: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 16: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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???

Page 17: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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)

Page 18: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 19: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 20: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 21: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 22: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 23: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 24: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 25: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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

Page 26: Hoofdstuk 8: Virtueel geheugen. 8.1. Hardware en besturingsstructuren technieken segmenteren pagineren partitioneren: gebruikt geen virtueel geheugen.

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)