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

Post on 14-Jun-2015

232 views 2 download

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

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)