1 / 46

Planen for i dag

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:

Download Presentation

Planen for i dag

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 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]

  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. 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]

  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. 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]

  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. 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]

  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 p d f d Datalogi 1F Forår 2004: Operativsystemer[4]

  18. Afbildning af adresser Datalogi 1F Forår 2004: Operativsystemer[4]

  19. 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]

  20. 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]

  21. 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]

  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 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]

  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 niveau 1 sidetabel niveau 2 sidetabel fysisk adresserum 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. 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]

  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 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]

  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 main trædata main findmin findmin stak trædata stak fysisk adresserum logisk opbygning 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 Datalogi 1F Forår 2004: Operativsystemer[4]

More Related