Geheugenbeheer

advertisement
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
Download