Geheugenbeheer ICT Infrastructuren 2 december 2013
Doelen van geheugenbeheer • • • • •
Reloca>e (flexibel gebruik van geheugen) Bescherming Gedeeld/gemeenschappelijk geheugen Logische indeling van procesonderdelen Fysieke plaatsing in RAM
Eenvoudig geheugenbeheer • OS gebruikt een klein stukje geheugen • rest is voor gewone processen
OS
0
1000
vrij
Eenvoudig geheugenbeheer • OS gebruikt een klein stukje geheugen • rest is voor gewone processen – processen beginnen op adres 1000 – waar plaats je een tweede proces?
OS
0
1000
proces 1
vrij
Reloca>e • programma aanpassen aan beginadres • OS moet adressen vertalen • bestand bevat nodige informa>e
Van broncode naar proces bron-‐ code
compiler
assembly code
Stallings, appendix 7A
assembler object-‐ bestand symbool-‐ tabel
Van broncode naar proces object-‐ bestand
sta>c library
object-‐ bestand
object-‐ bestand
linker / binder
dynamic library
load module
Van broncode naar proces load module
dynamic library
dynamic library
loader
RAM
Geheugenbeheer voor meer dan één proces • Processen afschermen: geen vreemde gegevens lezen of verknoeien • Gedeeld geheugen: samenwerkende processen kunnen gemeenschappelijke gegevens hebben – b.v. programmacode – gemeenschappelijke variabelen (op verzoek)
Logische organisa>e van RAM • verschillende soorten gegevens in RAM: – programmacode – constanten – variabelen – stapel
• OS kan specifieker beschermen
Fysieke plaatsing in RAM • programma en data vaak te groot voor RAM • trucs om RAM groter te laten lijken: – logisch adres ≠ fysisch adres – logisch = wat de programmeur/CPU ziet – fysiek = wat de RAM-‐chip ziet
• Memory Management Unit vertaalt logisch ! fysiek
Memory Management Unit
Processor
bus
Geheugen
Memory Management Unit
lezen/schrijven
databus Processor
Geheugen adresbus verkeerd adres
Memory Management Unit
lezen/schrijven
databus Processor
Geheugen logisch adr MMU
fysiek adr
logisch of fysiek adres verkeerd
fysiek adres verkeerd
Technieken voor logische adressen • • • •
Par>>onering Paging Segmenta>e Virtueel geheugen
Par>>onering • verouderd, basis van andere technieken • geheugen verdeeld in vaste blokken • elk proces krijgt één blok • logisch adres = adres binnen blok • fysiek adres = logisch adres +
= beginadres van blok
proces 6 7FFF
proces 5 7000
proces 4 6000
proces 3 5000
proces 2 3000
proces 1 2000
proces 0 1000
OS 0
Fysiek geheugen / RAM
4000
0
Logisch geheugen / RAM
FFF
Partitionering Als proces 1 actief is:
fysiek RAM dat het proces niet kan gebruiken
proces 6 7FFF
proces 5 7000
proces 4 6000
proces 3 5000
proces 2 3000
proces 1 2000
proces 0 1000
OS 0
Fysiek geheugen / RAM
4000
0
Logisch geheugen / RAM
FFF
Na een process switch naar proces 2:
proces mag dit logische adres niet gebruiken
Par>>onering • nadeel: kleine en grote processen krijgen evenveel geheugen (interne fragmenta>e) • variant: verschillend grote blokken • nieuw probleem: veel kleine processen ! inefficiënt twee grote processen ! wachten
Dynamische par>>onering • OS maakt blok aan als proces start • bij einde ontstaat gat (externe fragmenta>e) • verschillende grooces – welk gat gebruiken voor nieuw proces? – “first / next / best fit”
drie opdrachten uit Stallings • Paging: hoofdstuk 7.3, figuur 7.9 en 7.12a • Segmenta>e: hoofdstuk 7.4, figuur 7.12b • Virtueel geheugen: hoofdstuk 8.1: pagina 361–364, 367, figuur 8.4
Paging • geheugen verdelen in kleine blokken van vaste grooce – frame = fysiek geheugenblok – pagina = logisch geheugenblok
• proces gebruikt 1 of meer pagina’s • fysieke adressen van pagina’s hoeven niet op elkaar te volgen
Voorbeeld: Paging pagina 0 van proces C is in frame 7 B stopt D start
Paging: Berekening van fysiek adres • hogere bits van logisch adres: paginanummer • lagere bits: offset binnen de pagina
Paging: Berekening van fysiek adres Virtual Address Page #
Physical Address Frame # Offset
Offset
Register n bits
Page Table Ptr
Page Table
m bits
+
Page#
Offset
Page Frame
Frame #
Program
Paging Mechanism
Figure 8.3 Address Translation in a Paging System
Main Memory
Segmenta>e • geheugen verdelen in blokken van variabele grooce – segment bevat een stuk programmacode of gegevens voor één proces
• lijkt op dynamisch par>>oneren – maar proces kan meerdere segmenten hebben
• segmencabel ≈ paginatabel +
Segmenta>e • programmeur ziet segmenten • betere bescherming – read-‐only segmenten – execute-‐only segmenten – strengere controle op verkeerd adres
• geen interne fragmenta>e • wel externe fragmenta>e
Segmenta>e: Berekening van fysiek adres • hogere bits van logisch adres: segmentnr • lagere bits: offset binnen het segment
addi>e offset ≥ lengte?
Segmentatie 3:178E
1:0
1:1072
4470
54E2
3:0
segment 1
3E76
0:9A6
26E8
0:0 19C8
segment 3
236E
2:7B2
Logisch geheugen / RAM
segment 0
105E
2:0
segment 2
7FFF 3:178E
segment 3
3:0
1:0
2:7B2
segment 2
2:0
segment 1
0:9A6
Logisch geheugen / RAM
0:0
segment 0
1:1072
8AC
0
Fysiek geheugen / RAM
fysiek RAM dat het proces niet kan gebruiken
7FFF
54E2
4470
3E76
26E8
236E
19C8
105E
8AC
0
Fysiek geheugen / RAM
proces mag dit logische adres niet gebruiken
Virtueel geheugen: Idee
• Localiteit: proces gebruikt niet alle pagina’s/segmenten tegelijk • ⇒ ongebruikte delen hoeven niet in hoofdgeheugen te staan!
Localiteit
Virtueel geheugen: Uitwerking • stukjes van proces: – sommige in hoofdgeheugen – andere op harde schijf
• als proces stukje op harde schijf gebruikt: – MMU genereert interrupt – OS reserveert nieuw frame/segment – OS laadt stukje daarheen
• extra informa>e in pagina-‐ of segmencabel
FFFF
F000
E000
D000
C000
B000
A000
9000
8000
7000
3000 3000
6000
2000 2000
5000
1000 1000
Logisch geheugen / RAM
4000
0 0
Virtueel RAM met paginering
3FFF
Fysiek geheugen / RAM
fysiek RAM dat het proces niet kan gebruiken
proces mag dit logische adres niet gebruiken
als het proces dit adres gebruikt, regelt het OS fysiek geheugen hiervoor
Virtueel geheugen: Voordelen • meer processen • grotere processen • snellere start van processen • efficiënt! (meestal...)
Meer details over... Paginatabellen • paginatabel kan erg groot worden • idee: paginatabel in virtueel geheugen • twee niveaus • transla>on lookaside buffer = cache
Meer details over... omgekeerde paginatabel • andere oplossing voor grote paginatabel • klassiek: logisch → fysiek adres • omgekeerd: fysiek → logisch adres – één entry per fysiek frame – grooce van paginatabel in verhouding met fysiek geheugen – hash-‐func>e voor snelle vertaling logisch → fysiek
Virtueel geheugen met segmenten • minder gebruikelijk, ook mogelijk • zelfde principes als bij paging, behalve segmentgrooce
Alles-‐in-‐één-‐pakket
• segmenta>e+paging+virtueel geheugen • combineert voordelen van beide kanten • nadeel: ingewikkelde berekening van fysiek adres
Berekening van fysiek adres
Samenvaong • Doelen van geheugenbeheer: Wie weet ze nog?
• meer flexibiliteit door logisch/fysiek geheugen • geheugen groter laten lijken: virtueel RAM – werkt vanwege localiteit