460 likes | 523 Views
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:
E N D
Planen for i dag • Binding af programkode til lager • Lagerallokering • Sidebaseret lageradministration • Segmenter • Segmenter kombineret med sider Datalogi 1F Forår 2004: Operativsystemer[4]
Binding af programkode til lager De relative adresser i programkoden kan bindes til 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]
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]
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]
Eksempel: omregning fra logiske til fysiske adresser Datalogi 1F Forår 2004: Operativsystemer[4]
Systemarkitektur CPU MMU cache systembus lager I/O bro I/O bus I/O styreenhed disk I/O styreenhed netkort I/O styreenhed skærm Datalogi 1F Forår 2004: Operativsystemer[4]
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]
Eksempel: oversætter med overlay Datalogi 1F Forår 2004: Operativsystemer[4]
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]
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]
Grænse- og baseregister Datalogi 1F Forår 2004: Operativsystemer[4]
OS OS OS OS OS proces 5 proces 5 proces 5 proces 5 proces 5 proces 9 proces 9 proces 8 proces 10 proces 10 proces 2 proces 2 proces 2 proces 2 proces 2 Lagerallokering med flere partitioner • lageradministration uddeler blokke af lager til processerne, når en proces startes • OS holder rede på allokerede og frie områder proces 11 Datalogi 1F Forår 2004: Operativsystemer[4]
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]
OS proces 5 proces 10 proces 2 sidepladser sider Sidebaseret lageradministration proces 11:1 proces 11 proces 11:2 proces 11:3 Datalogi 1F Forår 2004: Operativsystemer[4]
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]
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]
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 p d f d Datalogi 1F Forår 2004: Operativsystemer[4]
Afbildning af adresser Datalogi 1F Forår 2004: Operativsystemer[4]
5 3 6 2 Eksempel: sideafbildning 0 side 0 1 5 0 side 1 side 3 3 2 1 side 2 2 6 side 1 3 side 3 2 3 4 sidetabel logisk adresserum side 0 5 Liste af frie sidepladser: side 2 6 1 fysisk adresserum Datalogi 1F Forår 2004: Operativsystemer[4]
Eksempel: sideafbildning 0 m n o p 0 a 1 b 2 c 3 d 4 e f g h 4 e 5 f 6 g 7 h 2 0 1 1 8 a b c d 4 2 8 i 9 j 10 k 11 l 0 3 12 sidetabel 12 m 13 n 14 o 15 p 16 i j k l logisk adresserum fysisk adresserum Datalogi 1F Forår 2004: Operativsystemer[4]
Hvor ligger sidetabellen? • Sidetabellen ligger i arbejdslageret • CPU registre holder styr på hvor sidetabellen for en proces ligger, f.eks.: • Page-tablebase 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]
TLBs rolle Datalogi 1F Forår 2004: Operativsystemer[4]
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]
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]
Eksempel: sideafbildning med statusbit 0 5 g 0 1 3 g side 0 1 side 3 2 6 g side 1 2 side 1 3 2 g side 2 3 4 7 g side 3 4 side 0 5 0 u side 4 5 side 2 6 0 u logisk adresserum 6 side 4 7 0 u 7 fysisk adresserum sidetabel Datalogi 1F Forår 2004: Operativsystemer[4]
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]
Hierarkiske sidetabel med 2 niveauer niveau 1 sidetabel niveau 2 sidetabel fysisk adresserum Datalogi 1F Forår 2004: Operativsystemer[4]
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]
p1 p2 niveau 1 sidetabel niveau 2 sidetabel f Adresseafkodning i hierarkisk sidetabel Logisk adresse: p1 p2 f sideplads i fysisk lager Datalogi 1F Forår 2004: Operativsystemer[4]
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]
Eksempel: hashbaseret sidetabel Datalogi 1F Forår 2004: Operativsystemer[4]
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]
Eksempel: Inverteret sidetabel Datalogi 1F Forår 2004: Operativsystemer[4]
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]
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]
Eksempel: deling af data applikation 1 data1 libc 1 libc 1 libc 3 3 3 libc 2 libc 2 6 data2 6 libc 3 1 libc 3 1 libc 1 data 2 0 data ap1.1 12 app 1 4 app 1 ap2.3 9 11 app 2 app 2 libc 2 5 app 3 ap3.1 applikation 2 libc 1 data3 3 libc 2 ap2.2 6 libc 3 1 data 8 ap1.2 app 1 7 ap2.1 applikation 3 Datalogi 1F Forår 2004: Operativsystemer[4]
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]
Eksempel: strukturering af applikation i segmenter main trædata main findmin findmin stak trædata stak fysisk adresserum logisk opbygning Datalogi 1F Forår 2004: Operativsystemer[4]
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]
Eksempel: segmenteringshardware Datalogi 1F Forår 2004: Operativsystemer[4]
Eksempel: segmenteringstabel Datalogi 1F Forår 2004: Operativsystemer[4]
Deling af segmenter Datalogi 1F Forår 2004: Operativsystemer[4]
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]
i386 sidebaseret segmentering Datalogi 1F Forår 2004: Operativsystemer[4]
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]
Kilder • Disse slides er baseret på SG03 samt de af forfatterne udviklede slides Datalogi 1F Forår 2004: Operativsystemer[4]