46
Datalogi 1F Forår 2004: O perativsystemer[4] 1 Planen for i dag • Binding af programkode til lager • Lagerallokering • Sidebaseret lageradministration • Segmenter • Segmenter kombineret med sider

Planen for i dag

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

Page 1: Planen for i dag

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

Page 2: Planen for i dag

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

Page 3: Planen for i dag

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

Page 4: Planen for i dag

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

Page 5: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

5

Eksempel: omregning fra logiske til fysiske adresser

Page 6: Planen for i dag

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

Page 7: Planen for i dag

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

Page 8: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

8

Eksempel: oversætter med overlay

Page 9: Planen for i dag

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

Page 10: Planen for i dag

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

Page 11: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

11

Grænse- og baseregister

Page 12: Planen for i dag

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

Page 13: Planen for i dag

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)

Page 14: Planen for i dag

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

Page 15: Planen for i dag

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

Page 16: Planen for i dag

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

Page 17: Planen for i dag

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

Page 18: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

18

Afbildning af adresser

Page 19: Planen for i dag

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

Page 20: Planen for i dag

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

Page 21: Planen for i dag

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)

Page 22: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

22

TLBs rolle

Page 23: Planen for i dag

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)

Page 24: Planen for i dag

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

Page 25: Planen for i dag

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

Page 26: Planen for i dag

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

Page 27: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

27

Hierarkiske sidetabel med 2 niveauer

fysisk adresserumniveau 2sidetabel

niveau 1sidetabel

Page 28: Planen for i dag

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

Page 29: Planen for i dag

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

Page 30: Planen for i dag

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

Page 31: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

31

Eksempel: hashbaseret sidetabel

Page 32: Planen for i dag

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

Page 33: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

33

Eksempel: Inverteret sidetabel

Page 34: Planen for i dag

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

Page 35: Planen for i dag

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

Page 36: Planen for i dag

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

Page 37: Planen for i dag

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

Page 38: Planen for i dag

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

Page 39: Planen for i dag

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)

Page 40: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

40

Eksempel: segmenteringshardware

Page 41: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

41

Eksempel: segmenteringstabel

Page 42: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

42

Deling af segmenter

Page 43: Planen for i dag

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

Page 44: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

44

i386 sidebaseret segmentering

Page 45: Planen for i dag

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)

Page 46: Planen for i dag

Datalogi 1F Forår 2004: Operativsystemer[4]

46

Kilder

• Disse slides er baseret på SG03 samt de af forfatterne udviklede slides