Upload
lila-oconnor
View
18
Download
1
Embed Size (px)
DESCRIPTION
Planen for i dag. Binding af programkode til lager Lagerallokering Sidebaseret lageradministration Segmenter Segmenter kombineret med sider. Binding af programkode til lager. De relative adresser i programkoden kan bindes til lageret på 3 tidspunkter: - PowerPoint PPT Presentation
Citation preview
Datalogi 1F Forår 2004: Operativsystemer[4]
1
Planen for i dag
• Binding af programkode til lager
• Lagerallokering
• Sidebaseret lageradministration
• Segmenter
• Segmenter kombineret med sider
Datalogi 1F Forår 2004: Operativsystemer[4]
2
Binding af programkode til lager
De relative adresser i programkoden kan bindestil lageret på 3 tidspunkter:• Oversættelsestidspunkt: hvis startadressen er
kendt på oversættelsestidspunktet kan oversætter og lænker generere faste adresser
• Programstart: hvis startadresse bestemmes ved programstart skal oversætter producere relokerbar kode. OS loader omformer kode til at bruge absolutte adresser.
• Køretid: bindingerne kan opdateres på køretidspunkt. Materiellet understøtter afbildning mellem logisk adresserum og fysisk adresserum
Datalogi 1F Forår 2004: Operativsystemer[4]
3
Logiske og fysiske adresser
• Opdelingen i logiske og fysiske adresserum danner basis for lageradministration i de fleste OSer i dag:– logiske adresser: de adresser, CPU’en arbejder
med (kaldes også virtuelle adresser)– fysiske adresser: de lagerreferencer,
lagersystemet arbejder med, f.eks. på systembussen
• Kun ved binding på køretidspunktet er der forskel på logiske og fysiske adresser
Datalogi 1F Forår 2004: Operativsystemer[4]
4
Hardware understøttelse af lageradministration
• Lageradministration varetages af en ”Memory Management Unit” (MMU):– Intel x86 familien introducerede ”protected mode” til 80286
(1982), men først fra 80386 var der en rigtig MMU med sidebaseret lageradm. (1985-…)
– Motorola 68000 familien havde en MMU fra 68030 og frem (1986 - …)
• I indlejrede systemer anvendes ofte CPU’er uden MMU
• MMU’en håndterer oversættelse fra logiske til fysiske adresser, f.eks.:– base og grænseregistre
Datalogi 1F Forår 2004: Operativsystemer[4]
5
Eksempel: omregning fra logiske til fysiske adresser
Datalogi 1F Forår 2004: Operativsystemer[4]
6
SystemarkitekturCPU
lagerI/O bro
I/O styreenheddisk
I/O styreenhednetkort
I/O styreenhedskærm
systembus
I/O bus
cache
MMU
Datalogi 1F Forår 2004: Operativsystemer[4]
7
Overlays• Hvad gør man når programstørrelsen er
større end det tilgængelige lager?
• Programkoden kan splittes op i forskellige faser, hvor kun en fase ad gangen opholder sig i lageret
• Koden til en fase placeres i et ”overlay”. Dette sker som regel i et samarbejde mellem programmør og oversætter
• Kompleks opgave for store programmer
Datalogi 1F Forår 2004: Operativsystemer[4]
8
Eksempel: oversætter med overlay
Datalogi 1F Forår 2004: Operativsystemer[4]
9
Swapping• I multiprogrammeringssystemer kan det blive
nødvendigt at fjerne en proces fra arbejdslageret og gemme den på sekundært lager.
• Hele processens tilstand gemmes – overførsel af arbejdslager til sekundært lager dominerer omkostningerne
• En variant af swapping i moderne systemer er flytning af processer, hvor en proces overføres fra en maskine til en anden
• Swapping kræver at processen har simple eksterne bindinger
Datalogi 1F Forår 2004: Operativsystemer[4]
10
Sammenhængende lagerallokering• Systemer, hvor lager til processer allokeres i
en sammenhængende blok• System- og brugerarbejdslager:
– operativsystemet er typisk placeret i den nederste (laveste) ende af det fysiske adresserum sammen med afbrydelsesvektoren
– brugerprogrammerne placeres i den øvre del af lagerområdet
• Afgrænsning af brugerens lagerområde:– et forskydningsregister, der angiver
brugerprocessens startadresse– et grænseregister, der angiver den maksimale
størrelse på brugerprocessens lagerområde
Datalogi 1F Forår 2004: Operativsystemer[4]
11
Grænse- og baseregister
Datalogi 1F Forår 2004: Operativsystemer[4]
12
Lagerallokering med flere partitioner
• lageradministration uddeler blokke af lager til processerne, når en proces startes
• OS holder rede på allokerede og frie områderOS
proces 5
proces 8
proces 2
OS
proces 5
proces 2
proces 9
OS
proces 5
proces 9
proces 2
proces 10
OS
proces 5
proces 2
proces 10
OS
proces 5
proces 2
proces 11
Datalogi 1F Forår 2004: Operativsystemer[4]
13
Ekstern fragmentering• Opdelingen af arbejdslageret efterlader huller
mellem allokerede blokke:– Måske ikke er store nok til at tilfredsstille
forespørgsler efter yderligere lager
• Ekstern fragmentering kan afhjælpes:– omorganisering af lager på køretidspunkt:
sammenlægning af frie blokke til en stor blok– kræver at lagerafbildning kan ændres på
køretidspunkt– lagerområder kan være bundet af I/O aktivitet (I/O
enheder arbejder typisk med fysiske adresser)
Datalogi 1F Forår 2004: Operativsystemer[4]
14
Sidebaseret lageradministration
proces 11
OS
proces 5
proces 2
proces 10
proces 11:1
proces 11:2
proces 11:3
sider sidepladser
Datalogi 1F Forår 2004: Operativsystemer[4]
15
Intern fragmentering
• Intern fragmentering: pga. effektivitetshensyn uddeles arbejdslageret kun i blokke af en vis størrelse S. I værste fald spildes S-1 bytes hver gang der allokeres lager
• Typiske sidestørrelser er 4KB/8KB
proces 4
Datalogi 1F Forår 2004: Operativsystemer[4]
16
Sidebaseret lageradministration• Processens lager består af ikke sammenhængende
lagerblokke• Det fysiske lager opdeles i et antal sidepladser
(typisk er størrelsen en 2’er potens: alm. 512 – 8192 bytes)
• Det logiske adresserum opdeles i sider med samme størrelse som sidepladsstørrelsen
• OS lageradministration holder rede på frie sidepladser
• Hvis en proces har brug for n sider i det logiske adresserum, forsøger OS’et at finde n frie sidepladser i det fysiske adresserum
• Hver proces har en sidetabel, der beskriver afbildning fra sider (logiske) til sidepladser (fysiske)
• Afvejning: jo mindre sidestørrelse jo større sidetabel, men samtidig mindre intern fragmentering
Datalogi 1F Forår 2004: Operativsystemer[4]
17
Opbygning af adresser• En logisk adresse består af to dele:
– et sidenummer (p) (den mest betydende del af adressen)
– en forskydning (d) indenfor siden
• Adressen findes ved at omsætte sidenummeret til den fysiske adresse (f) på en sideplads og lægge forskydningen til
f d
p d
Datalogi 1F Forår 2004: Operativsystemer[4]
18
Afbildning af adresser
Datalogi 1F Forår 2004: Operativsystemer[4]
19
Eksempel: sideafbildning
side 1
side 2
side 3
side 0logisk adresserum
sidetabel
6
2
5
3
side 0
side 2
side 3
side 1
1
2
34
5
6
0
fysisk adresserum
1
2
3
0
Liste af frie sidepladser:
13 6 25
Datalogi 1F Forår 2004: Operativsystemer[4]
20
Eksempel: sideafbildning
4 e5 f6 g7 h
8 i9 j
10 k11 l
12 m13 n14 o15 p
logisk adresserum
sidetabel
4
0
2
1
0 a1 b2 c3 d
1
2
3
0
fysisk adresserum
efgh
8 abcd
12
16 ijkl
mnop
0
4
Datalogi 1F Forår 2004: Operativsystemer[4]
21
Hvor ligger sidetabellen?• Sidetabellen ligger i arbejdslageret• CPU registre holder styr på hvor
sidetabellen for en proces ligger, f.eks.:– Page-table base register (PTBR) peger på
sidetabellen– Page-table length register (PTLR) angiver
længden på tabellen
• En lagerreference kræver nu to lageroperationer:– opslag i sidetabel– tilgang til sideplads
• Sideopslag caches i en Translation Look-aside Buffer (TLB)
Datalogi 1F Forår 2004: Operativsystemer[4]
22
TLBs rolle
Datalogi 1F Forår 2004: Operativsystemer[4]
23
Hvad koster det at tilgå lageret?
• TLB opslag (tlb): 1 klokcykel• Lageradgang (la): 20 klokcykler• Hitrate (h): typisk omkring 98%• En lagerreference (lr) koster:
K(lr) = (K(tlb)+K(la))*h + (K(tlb) + 2*K(la))*(1-h)
= (1 + 20)*0,98 + (1 + 2*20)*0,02
= 20,58 + 0,82
= 21,4 klokcykler (7% dyrere)
• Men en sidetabel kan sagtens ligge i CPU cache (1., 2. eller måske 3. niveau)
Datalogi 1F Forår 2004: Operativsystemer[4]
24
Beskyttelse i sidebaserede systemer
• Beskyttelse sker på sideniveau - hver side er tilknyttet et antal statusbit
• En gyldig/ugyldig bit i sidetabellen angiver:– gyldig: siden er en del af processens logiske
adresserum– ugyldig: siden er ikke en del af processens logiske
adresserum
• Andre former for statusbit:– side er tildelt sideplads– side er skrivebeskyttet
Datalogi 1F Forår 2004: Operativsystemer[4]
25
Eksempel: sideafbildning med statusbit
side 1
side 2
side 3side 0
logisk adresserum
sidetabel
u
u
g
u
side 0side 3
side 1
5
6
7
4
5
7
4
fysisk adresserum
1
2
3
0
g
g
g
g1
2
3
0
0
0
7
0
6
2
5
3
side 4side 26
side 4
Datalogi 1F Forår 2004: Operativsystemer[4]
26
Hvad fylder en sidetabel?• 4 GB lager, 4 KB sider giver en
sidetabel med 1048576 indgange af f.eks. 4 byte, dvs i alt 4 MB allokeret til sidetabellen
• Hvis der bruges base + længde register skal hver proces have allokeret 4 MB sammenhængende lager
• I stedet bruges:– hierarkiske sidetabeller– hashbaserede sidetabeller– inverterede sidetabeller
Datalogi 1F Forår 2004: Operativsystemer[4]
27
Hierarkiske sidetabel med 2 niveauer
fysisk adresserumniveau 2sidetabel
niveau 1sidetabel
Datalogi 1F Forår 2004: Operativsystemer[4]
28
Adressernes opbygning i hierarkisk sidetabel
• En logisk adresse på en 32 bit maskine med 4KB sider opdeles i 20 bit sidenummer og 12 bit forskydning
• Sidenummeret underopdeles (det er jo hierarkisk):– 10 bit angiver hvilken niveau 2 sidetabel,
der skal anvendes– 10 bit angiver fysisk adresses forskydning i
niveau 2 sidetabel
Datalogi 1F Forår 2004: Operativsystemer[4]
29
Adresseafkodning i hierarkisk sidetabel
fp1 p2
Logisk adresse:
niveau 1sidetabel niveau 2
sidetabel
sideplads i fysisklager
p1
p2
f
Datalogi 1F Forår 2004: Operativsystemer[4]
30
Hashbaserede sidetabeller
• I arkitekturer med 64 bit adresserum bliver hierarkiske sidetabeller upraktiske:– 8KB sider giver 5 niveauer
• I stedet kan man bruge sidehashtabeller:– en virtuel side hashes ind i en indgang i
sidetabellen– hver indgang er tilknyttet en hægtet liste,
der søges igennem for at finde sidepladsen
Datalogi 1F Forår 2004: Operativsystemer[4]
31
Eksempel: hashbaseret sidetabel
Datalogi 1F Forår 2004: Operativsystemer[4]
32
Inverterede sidetabeller
• En anden løsning på størrelsesproblemet er inverterede sidetabeller
• En indgang i sidetabel for hver sideplads
• Tabelindhold specificere virtuel side samt ejende proces
• Sideopslag:– lineær søgning– hashtabel over virtuelle sider
Datalogi 1F Forår 2004: Operativsystemer[4]
33
Eksempel: Inverteret sidetabel
Datalogi 1F Forår 2004: Operativsystemer[4]
34
Variabel sidestørrelse• Nogle processorer understøtter supersider –
dvs. sider af meget stor størrelse, f.eks. op til 4 MB (alpha, pentium) eller 256 MB (itanium)
• TLB’ens dækningsområde forøges• Men hvordan skabes supersiderne:
– overvågning af processers ressourceallokering– reservering af områder til supersider eller
omorganisering af fysiske sider• Operating System Design & Implementation:
Practical, transparent operating system support for superpages viser at flere applikationer opnår forbedringer på 30% til 60% ved dynamisk tilpasning af sidestørrelser
Datalogi 1F Forår 2004: Operativsystemer[4]
35
Deling af sider/data• Ikke-selvmodificerende kode kan deles
mellem processer, der benytter samme kode:– applikationer, f.eks. en editor– systembiblioteker, f.eks. libc
• Koden placeres på samme sted i de forskellige processers logiske adresserum
eller
• Delt kode bruger kun relativ adressering
Datalogi 1F Forår 2004: Operativsystemer[4]
36
Eksempel: deling af data
libc 2
libc 3
ap2.1
libc 1
ap2.2
data1
libc 2
libc 3
libc 1
data
app 1
libc 2
libc 3
app 1
libc 1
data
ap2.3
app 2
8
1
7
6
3
2
1
12
6
5
3
0
1
4
6
11
3
9
libc 2
libc 3
app 1
libc 1
app 2
data
app 3ap3.1
ap1.2
data3
ap1.1
data2
applikation 1
applikation 2
applikation 3
Datalogi 1F Forår 2004: Operativsystemer[4]
37
Segmentering
• Segmentering afbilder større programdele (afhængig af brugerapplikationen) ind i det fysiske adresserum
• Bruger opfatter programmer som bestående af større enheder end sider, nemlig segmenter f.eks:– hovedprogram– objekter– funktioner– globale variable– stak
Datalogi 1F Forår 2004: Operativsystemer[4]
38
Eksempel: strukturering af applikation i segmenter
stak
logisk opbygning fysisk adresserum
main
findmin
staktrædata
trædata
main
findmin
Datalogi 1F Forår 2004: Operativsystemer[4]
39
Segmentering – hvordan?
• Logiske adresser består af to dele:<segmentnummer, forskydning>
• Segmenttabel angiver afbildning fra segmentnummer til fysisk adresse. Hver indgang har:– base: segmentets startadresse– længde: segmentets længde– statusbit: hele segmentet dækkes (oftest
det naturligste)
Datalogi 1F Forår 2004: Operativsystemer[4]
40
Eksempel: segmenteringshardware
Datalogi 1F Forår 2004: Operativsystemer[4]
41
Eksempel: segmenteringstabel
Datalogi 1F Forår 2004: Operativsystemer[4]
42
Deling af segmenter
Datalogi 1F Forår 2004: Operativsystemer[4]
43
Sidebaseret segmentering
• Segmentering lider af ekstern fragmentering
• Derudover kan der være andre grunde til at ville splitte et segment op:– dele af segmentet bruges sjældent og skal
swappes ud
Datalogi 1F Forår 2004: Operativsystemer[4]
44
i386 sidebaseret segmentering
Datalogi 1F Forår 2004: Operativsystemer[4]
45
Opsummering• Opdeling i et logisk og fysisk
adresserum• Afbildning af logisk adresser til fysiske
adresser:– sidebaseret (størrelse af sidetabel, intern
fragmentering):• TLB• hierarkiske sidetabeller• hashbaserede sidetabeller• inverterede sidetabeller
– segmentbaseret (ekstern fragmentering, segmentstørrelse)
Datalogi 1F Forår 2004: Operativsystemer[4]
46
Kilder
• Disse slides er baseret på SG03 samt de af forfatterne udviklede slides