Planen for i da Bindin af proramkode til laer Laerallokerin Sidebaseret laeradministration Sementer Sementer kombineret med sider Bindin af proramkode til laer De relative adresser i proramkoden kan bindes til laeret på tidspunkter: Oversættelsestidspunkt: hvis startadressen er kendt på oversættelsestidspunktet kan oversætter o lænker enerere faste adresser Proramstart: hvis startadresse bestemmes ved proramstart skal oversætter producere relokerbar kode. loader omformer kode til at brue absolutte adresser. Køretid: bindinerne kan opdateres på køretidspunkt. Materiellet understøtter afbildnin mellem loisk adresserum o fysisk adresserum Loiske o fysiske adresser Opdelinen i loiske o fysiske adresserum danner basis for laeradministration i de fleste er i da: loiske adresser: de adresser, CPU en arbejder med (kaldes oså virtuelle adresser) fysiske adresser: de laerreferencer, laersystemet arbejder med, f.eks. på systembussen Kun ved bindin på køretidspunktet er der forskel på loiske o fysiske adresser Hardware understøttelse af laeradministration Laeradministration varetaes af en Memory Manaement Unit (MMU): Intel x8 familien introducerede protected mode til 88 (98), men først fra 88 var der en riti MMU med sidebaseret laeradm. (98- ) Motorola 8 familien havde en MMU fra 8 o frem (98 - ) I indlejrede systemer anvendes ofte CPU er uden MMU MMU en håndterer oversættelse fra loiske til fysiske adresser, f.eks.: base o rænsereistre Eksempel: omrenin fra loiske til fysiske adresser CPU MMU cache Systemarkitektur systembus laer I/O bro I/O bus I/O styreenhed disk I/O styreenhed netkort I/O styreenhed skærm
Overlays Hvad ør man når proramstørrelsen er større end det tilænelie laer? Proramkoden kan splittes op i forskellie faser, hvor kun en fase ad anen opholder si i laeret Koden til en fase placeres i et overlay. Dette sker som reel i et samarbejde mellem prorammør o oversætter Kompleks opave for store prorammer Eksempel: oversætter med overlay 8 Swappin I multiprorammerinssystemer kan det blive nødvendit at fjerne en proces fra arbejdslaeret o emme den på sekundært laer. Hele processens tilstand emmes overførsel af arbejdslaer til sekundært laer dominerer omkostninerne En variant af swappin i moderne systemer er flytnin af processer, hvor en proces overføres fra en maskine til en anden Swappin kræver at processen har simple eksterne bindiner 9 Sammenhænende laerallokerin Systemer, hvor laer til processer allokeres i en sammenhænende blok System- o bruerarbejdslaer: operativsystemet er typisk placeret i den nederste (laveste) ende af det fysiske adresserum sammen med afbrydelsesvektoren bruerprorammerne placeres i den øvre del af laerområdet Afrænsnin af bruerens laerområde: et forskydninsreister, der aniver bruerprocessens startadresse et rænsereister, der aniver den maksimale størrelse på bruerprocessens laerområde Grænse- o basereister Laerallokerin med flere partitioner laeradministration uddeler blokke af laer til processerne, når en proces startes holder rede på allokerede o frie områder proces proces proces proces proces proces 9 proces 9 proces 8 proces proces proces proces proces proces proces proces
Ekstern framenterin Opdelinen af arbejdslaeret efterlader huller mellem allokerede blokke: Måske ikke er store nok til at tilfredsstille forespørsler efter yderliere laer Ekstern framenterin kan afhjælpes: omoraniserin af laer på køretidspunkt: sammenlænin af frie blokke til en stor blok kræver at laerafbildnin kan ændres på køretidspunkt laerområder kan være bundet af I/O aktivitet (I/O enheder arbejder typisk med fysiske adresser) Sidebaseret laeradministration proces proces : proces : proces : sider sidepladser proces proces proces Intern framenterin Intern framenterin: pa. effektivitetshensyn uddeles arbejdslaeret kun i blokke af en vis størrelse S. I værste fald spildes S- bytes hver an der allokeres laer Typiske sidestørrelser er KB/8KB proces Sidebaseret laeradministration Processens laer består af ikke sammenhænende laerblokke Det fysiske laer opdeles i et antal sidepladser (typisk er størrelsen en er potens: alm. 89 bytes) Det loiske adresserum opdeles i sider med samme størrelse som sidepladsstørrelsen laeradministration holder rede på frie sidepladser Hvis en proces har bru for n sider i det loiske adresserum, forsøer et at finde n frie sidepladser i det fysiske adresserum Hver proces har en, der beskriver afbildnin fra sider (loiske) til sidepladser (fysiske) Afvejnin: jo mindre sidestørrelse jo større, men samtidi mindre intern framenterin Opbynin af adresser En loisk adresse består af to dele: et sidenummer (p) (den mest betydende del af adressen) en forskydnin (d) indenfor siden Afbildnin af adresser p d Adressen findes ved at omsætte sidenummeret til den fysiske adresse (f) på en sideplads o læe forskydninen til f d 8
Eksempel: sideafbildnin side side side side loisk adresserum Liste af frie sidepladser: side side side side 9 Eksempel: sideafbildnin a b c d e f h 8 i 9 j k l m n o p loisk adresserum m n o p e f h 8 a b c d i j k l Hvor lier len? Sidetabellen lier i arbejdslaeret CPU reistre holder styr på hvor len for en proces lier, f.eks.: Pae-table base reister (PTBR) peer på len Pae-table lenth reister (PTLR) aniver lænden på tabellen En laerreference kræver nu to laeroperationer: opsla i tilan til sideplads Sideopsla caches i en Translation Lookaside Buffer (TLB) TLBs rolle Hvad koster det at tilå laeret? TLB opsla (tlb): klokcykel Laeradan (la): klokcykler Hitrate (h): typisk omkrin 98% En laerreference (lr) koster: K(lr) = (K(tlb)+K(la))*h + (K(tlb) + *K(la))*(-h) = ( + )*,98 + ( + *)*, =,8 +,8 =, klokcykler (% dyrere) Men en kan satens lie i CPU cache (.,. eller måske. niveau) Beskyttelse i sidebaserede systemer Beskyttelse sker på sideniveau - hver side er tilknyttet et antal statusbit En yldi/uyldi bit i len aniver: yldi: siden er en del af processens loiske adresserum uyldi: siden er ikke en del af processens loiske adresserum Andre former for statusbit: side er tildelt sideplads side er skrivebeskyttet
Eksempel: sideafbildnin med statusbit side side side side side loisk adresserum u u u side side side side side Hvad fylder en? GB laer, KB sider iver en med 8 indane af f.eks. byte, dvs i alt MB allokeret til len Hvis der brues base + lænde reister skal hver proces have allokeret MB sammenhænende laer I stedet brues: hierarkiske ler hashbaserede ler inverterede ler Hierarkiske med niveauer niveau niveau Adressernes opbynin i hierarkisk En loisk adresse på en bit maskine med KB sider opdeles i bit sidenummer o bit forskydnin Sidenummeret underopdeles (det er jo hierarkisk): bit aniver hvilken niveau, der skal anvendes bit aniver fysisk adresses forskydnin i niveau 8 Adresseafkodnin i hierarkisk Loisk adresse: p p p niveau niveau f p sideplads i fysisk laer f 9 Hashbaserede ler I arkitekturer med bit adresserum bliver hierarkiske ler upraktiske: 8KB sider iver niveauer I stedet kan man brue sidehashtabeller: en virtuel side hashes ind i en indan i len hver indan er tilknyttet en hætet liste, der søes iennem for at finde sidepladsen
Eksempel: hashbaseret Inverterede ler En anden løsnin på størrelsesproblemet er inverterede ler En indan i for hver sideplads Tabelindhold specificere virtuel side samt ejende proces Sideopsla: lineær sønin hashtabel over virtuelle sider Eksempel: Inverteret Variabel sidestørrelse Nole processorer understøtter supersider dvs. sider af meet stor størrelse, f.eks. op til MB (alpha, pentium) eller MB (itanium) TLB ens dækninsområde forøes Men hvordan skabes supersiderne: overvånin af processers ressourceallokerin reserverin af områder til supersider eller omoraniserin af fysiske sider Operatin System Desin & Implementation: Practical, transparent operatin system support for superpaes viser at flere applikationer opnår forbedriner på % til % ved dynamisk tilpasnin af sidestørrelser Delin 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 forskellie processers loiske adresserum eller Delt kode bruer kun relativ adresserin libc libc libc data app app Eksempel: delin af data applikation libc libc libc data app 8 applikation libc libc libc data app app app 9 applikation data libc data libc ap. ap. libc ap. data ap. ap. ap.
Sementerin Sementerin afbilder større proramdele (afhæni af bruerapplikationen) ind i det fysiske adresserum Bruer opfatter prorammer som bestående af større enheder end sider, nemli sementer f.eks: hovedproram objekter funktioner lobale variable stak Eksempel: strukturerin af applikation i sementer main stak findmin trædata loisk opbynin main trædata findmin stak 8 Sementerin hvordan? Loiske adresser består af to dele: <sementnummer, forskydnin> Sementtabel aniver afbildnin fra sementnummer til fysisk adresse. Hver indan har: base: sementets startadresse lænde: sementets lænde statusbit: hele sementet dækkes (oftest det naturliste) Eksempel: sementerinshardware 9 Eksempel: sementerinstabel Delin af sementer
Sidebaseret sementerin i8 sidebaseret sementerin Sementerin lider af ekstern framenterin Derudover kan der være andre runde til at ville splitte et sement op: dele af sementet brues sjældent o skal swappes ud Opsummerin Opdelin i et loisk o fysisk adresserum Afbildnin af loisk adresser til fysiske adresser: sidebaseret (størrelse af, intern framenterin): TLB hierarkiske ler hashbaserede ler inverterede ler sementbaseret (ekstern framenterin, sementstørrelse) Kilder Disse slides er baseret på SG samt de af forfatterne udviklede slides 8