NOX CMI • N230 - ARAS Security A/S

Principper for Samtidighed og Styresystemer
Memory management
Ren´e Rydhof Hansen
Apr 2011
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
1 / 24
Memory Management: Opsummering
Lagerhierarki
Virtuelt lager
Virtuelle adresser vs. fysiske adresser
Lagerallokering i primær lager: fast inddeling, dynamisk inddeling
Sidedelt lager (paging)
Segmentering
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
2 / 24
M˚
al
At kunne definere og redegøre for paging
At kunne redegøre for brug og implementation af delt hukommelse i
en sidedelt hukommelse
At kunne redegøre for organisering af sidetabeller (direkte, to-niveau
samt inverterede)
At kunne foretage adresseoversættelse fra virtuelle adreser til fysiske
adresser v.hj.a. sideetabeller
At kunne redegøre for styresystemets brug af hukommelse
At kunne redegøre for implementation og brug af demand paging og
swapping
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
3 / 24
Paging
return
Det virtuelle lager opdeles i et antal sider (pages) af fast størrelse
Det fysiske lager opdeles i et antal rammer (page frames)
Sider placeres i rammer
Rammer har samme faste størrelse som sider
Styresystemet indplacerer sider i rammer og vedligeholder
informationer om dette i en sidetabel
Styresystemet vedligeholder en sidetabel pr. proces
Example
P˚
a en Pentium er sider typisk 4KB og p˚
a en Sparc typisk 8KB store.
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
4 / 24
Delt hukommelse (ved paging)
Hukommelse kan deles mellem processer ved at forskellige sidetabeller
henviser til samme ramme
Samme fysiske lager i to forskellige (processers) adresserum
Delte rammer medfører ikke nødvendigvis samme (lokale) sidenumre
Delt hukommelse bruges til
Interproceskommunikation
Deling af programtekst og biblioteker (DLL, .so)
Ogs˚
a muligt med segmentering
To processers segmenttabeller henviser til samme segment
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
5 / 24
Delt hukommelse
Program1
PSS’2011 (Forelæsning 07)
Primær huk.
Memory management
Program2
Apr 2011
6 / 24
Delt hukommelse: Deling af biblioteker
System library table entry
Typisk bruges memory
mapping
Ofte mere effektivt
end eksplicit
allokering, ˚
abning og
læsning
Name = X.DLL
Ref. count = 2
Fysisk adr.
Kræver at bibliotekerne
er relokerbare
X.DLL
Styresystemet bruger en
reference counter til at
holde styr p˚
a antallet af
processer der deler en
given DLL
PSS’2011 (Forelæsning 07)
Memory management
X.DLL
Shared
copy
of
X.DLL
Proc. 1
Phys. mem.
Proc. 2
Apr 2011
7 / 24
Delt hukommelse: Styresystemet
Styresystemet deles af alle processer
Styresystemets hukommelse afbildes typisk i procesernes adresserum
Windows bruger en 2GB/2GB opdeling
Linux bruger en 3GB/1GB opdeling
Styresystemet afbildes i øverste del af adresserummet
Kerne
Bruger
“Blokeret” (64KB)
Sys.inf. (4KB)
Proc./thread blokke
“Blokeret” (64KB)
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
8 / 24
Memory Management: Oversigt
Intro
Simpel lagerallokering i primær lager
Paging og segmentering
Organisation af sidetabel
Demand paging og sideerstatningsalgoritmer
Rammeallokering
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
9 / 24
Direkte sidetabel (et-niveau sidetabel)
Sidetabellen bruges af MMU’en til adresseoversættelse ved paging
Vedligeholdes af styresystemet
Een sidetabel per process med en indgang per side
n’te indgang i sidetabellen giver placering af den n’te side i fysisk
hukommelse
Logisk adr.
Sidenummer
Offset
Sidetabel
Rammenummer
PSS’2011 (Forelæsning 07)
Memory management
Offset
Apr 2011
10 / 24
To-niveau sidetabeller
Problem: 20-bit sidenumre giver 220 indgange i sidetabellen
Med 32 bit per indgang giver dette 4MB — per process!
Løsning: Del sidetabellen op i flere niveauer
Sidenummeret deles i 2 gange 10 bit
Første 10 bit er indgang til første niveau
Næste 10 bit er indgang til andet niveau
210 indgange per tabel = 4KB = 1 side per tabel
Mulighed for at ikke hele sidetabellen skal allokeres
Mulighed for at swappe sidetabellen (memory management af
sidetabellen!)
Example
Anvendes p˚
a de fleste(?) moderne 32bit arkitekturer
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
11 / 24
To-niveau sidetabel
Logisk adr.
L1 side L2 side Offset
L1 Sidetabel
L2 Sidetabel
PSS’2011 (Forelæsning 07)
Memory management
Rammenummer
Offset
Apr 2011
12 / 24
Inverterede sidetabeller
Problem: to niveauer ikke nok til 64-bit arkitektur
Alpha bruger 43-bit adresser, 3 niveauer med 10 bit til hvert niveau
og de resterende 13 bit som offset (8KB sidestørrelse)
Ved 64 bit adresser kræves endnu flere niveauer
Løsning: Inverterede sidetabeller
Kun een tabel for hele systemet
En indgang per ramme med informationer om hvilken side der
gemmes i rammen
Besværlig adresseoversættelse: hash tabel over sidetabellen skal
gennemsøges først
Cache af adresseoversættelser kan øge effektiviteten
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
13 / 24
Implementering af sidetabeller
Faktisk format for sidetabellen er fastlagt af hardwarearkitekturen
Indgange i sidetabel
Pentium bruger 32 bits pr. indgang i sidetabel
En indgang i sidetabellen kræver kun 20 bits
Resterende 12 bits bruges til administration
Om siden er placeret i en ramme
Adresse (i hukommelse eller p˚
a disk)
Rettigheder (read, write, execute; user eller system)
Bemærk: OS kan altid tilg˚
a (read/write) alle sider
Brugsinformationer (tilg˚
aet eller modificeret)
Ekstra bits til styresystembrug
Stort overhead med 12 “ekstra” bits?
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
14 / 24
Implementering af sidetabeller
Faktisk format for sidetabellen er fastlagt af hardwarearkitekturen
Indgange i sidetabel
Pentium bruger 32 bits pr. indgang i sidetabel
En indgang i sidetabellen kræver kun 20 bits
Resterende 12 bits bruges til administration
Om siden er placeret i en ramme
Adresse (i hukommelse eller p˚
a disk)
Rettigheder (read, write, execute; user eller system)
Bemærk: OS kan altid tilg˚
a (read/write) alle sider
Brugsinformationer (tilg˚
aet eller modificeret)
Ekstra bits til styresystembrug
Stort overhead med 12 “ekstra” bits? Nej, passer med sidestørrelse!
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
14 / 24
Eksempel: Pentium
Example (Pentum sidetabelindgange)
Page frame number (20 bits)
Spare (3 bits); kan evt. benyttes af OS
Global page (1 bit); optimering af side-deling (ikke-flush TLB)
Page size (1 bit)
Dirty (1 bit); skrevet til siden?
Accessed (1 bit); tilg˚
aet?
Cache disabled (1 bit); kan siden caches?
Write-through (1 bit)
User/supervisor (1 bit)
Read/write (1 bit); skrivebeskyttelse
Present (1 bit); i hukommelse?
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
15 / 24
Memory Management: Oversigt
Intro
Simpel lagerallokering i primær lager
Paging og segmentering
Organisation af sidetabel
Demand paging og sideerstatningsalgoritmer
Rammeallokering
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
16 / 24
Demand paging
Demand paging: sider indlæses ved første tilgang
Sider kan i sidetabellen markeres som:
Ubrugte: fejl ved tilgang
Reserverede
Allokeres ved næste tilgang
Sidetabellen indeholder informationer om hvor indholdet skal hentes fra
(fx en fil); nyttigt ved programopstart
Committed: siden er placeret i en ramme
Sider (rammer) der ikke bruges bliver aldrig allokeret
Processer kan være større end fysisk lager
Intet behov for at kende faktisk lagerbehov
Gør det nemt at indlæse et program:
Sidetabellen initialiseres med ubrugte og reserverede sider
N˚
ar første instruktion udføres udløses en page fault og styresystemet
indlæser siden (med programtekst) fra disk
Andre sider indlæses efter behov
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
17 / 24
Swapping
Id´e: Flyt sider, der ikke bruges s˚
a ofte, til sekundært lager
Sideerstatningsalgoritmer (page replacement policies)
Hvilke sider flyttes til sekundært lager?
Hvorn˚
ar flyttes sider til sekundært lager?
N˚
ar der er behov for plads
Tidligere (page buffering)
Hvorn˚
ar hentes sider fra sekundært lager?
N˚
ar der er behov for dem (demand paging)
Tidligere (prepaging)
Lokalitetsprincippet
Definition (Lokalitetsprincippet)
Sider der er tilg˚
aet for nylig vil snart blive tilg˚
aet igen... duh!
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
18 / 24
Swapping
Algoritme vs. policy: policy understreger, at der er tale om et valg;
kan evt. ændres efter behov
Optimering
Sider der ikke er “dirty” behøver ikke at blive skrevet tilbage til disk
Page buffering: en metode til optimering af “swap out”
Pre-paging: en metode til optimering af “swap in”
Rammeallokering
Hvor mange rammer skal der allokeres per process?
For f˚
a rammer medfører øget swapping
For mange rammer medfører spildt plads (en slags “intern
fragmentering”)
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
19 / 24
Sidefejl
Page fault
Hvis processen tilg˚
ar en ubrugt eller reserveret side udløser MMU’en en
sidefejl (page fault)
Kontrollen overdrages til en page fault handler i styresystemet
Ubrugte sider
Terminerer processen (segfault/bus error)
B˚
ade segfault og bus error er adresseringsfejl
Tommelfingerregel: segfault er en fejl opdaget af kernen, bus
error af hardware
Reserverede sider
Kan være blanke datasider
Kan være programtekst (eller andet filindhold)
Kan være sider, der er blevet swappet ud
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
20 / 24
Prepaging
Demand paging indlæser sider efter behov
Prepaging: sider indlæses før de tilg˚
as
I sin reneste form: en proces f˚
ar først lov at køre n˚
ar dens working set
er indlæst i hukommelsen
Mens siden indlæses kan styresystemet skifte til en anden tr˚
ad
og/eller process
Kan resultere i markant bedre ydelse
Working set ændres dynamisk; vanskeligt at forudse
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
21 / 24
Copy-on-write
Teknik (bl.a.) til simplificering af kloning af processer
Nemt at implementere
Marker side som read-only og copy-on-write
MMU’en udløser sidefejl ved forsøg p˚
a at skrive til siden (read-only)
Page fault handler’en laver en kopi af siden (da den er markeret som
copy-on-write)
Skrivetilgang gennemføres derefter p˚
a kopien
Hele sidetabellen skal kopieres (medmindre den kan deles)
Gør det nemt at implementere fork
Kopier sidetabellen
Marker alle processens sider (i kopien) som copy-on-write og lad de to
processser dele siderne
Siderne kopieres efter behov n˚
ar/hvis de modificeres
Sikrer effektiv hukommelsesh˚
andtering for b˚
ade forælder og barn
(selvom de divergerer kraftigt i udførsel)
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
22 / 24
Sidestørrelse og demand paging
Sm˚
a sider
Bedre lokalitet og dermed f˚
a sidefejl
Store sidetabeller
Store sider
Mindre god lokalitet og dermed flere sidefejl
Mindre sidetabeller
Meget store sider
F˚
a sidefejl, men langvarig I/O
Meget intern fragmentering
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
23 / 24
Opsummering og næste gang
Memory management
Paging (segmentering)
Sidetabel
Demand paging
Næste gang
Memory management (fortsat)
Sideerstatingsalgoritmer
Rammeallokering
PSS’2011 (Forelæsning 07)
Memory management
Apr 2011
24 / 24