Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Operativsystemer [6]: Virtuelt lager Datalogi 1F Forår 2003 Jørgen Sværke Hansen

Lignende præsentationer


Præsentationer af emnet: "Operativsystemer [6]: Virtuelt lager Datalogi 1F Forår 2003 Jørgen Sværke Hansen"— Præsentationens transcript:

1 Operativsystemer [6]: Virtuelt lager Datalogi 1F Forår 2003 Jørgen Sværke Hansen cyller@diku.dk

2 Datalogi 1F: Operativsystemer[6]2 Oversigt •Hvad er virtuelt lager •Mekanismen bag tvungent sideskift •Politikker (strategier) for tvungent sideskift: –FIFO –Optimal –Least Recently Used •Fordeling af sidepladser mellem processer •Trashing

3 Datalogi 1F: Operativsystemer[6]3 Virtuel lager •Opdeling i virtuel/logisk (per proces) og fysisk adresserum gør en enkelt proces’ billede af lageret uafhængigt af andre processer •Men afkoblingen af en proces’ adresserum fra det fysiske giver OS’et mulighed for at overvåge en proces’ faktiske lageradgang (dog grovkornet).

4 Datalogi 1F: Operativsystemer[6]4 Virtuelt lager •En proces får først stillet fysisk lager til rådighed når den har brug for det •En proces kan bruge mere lager end der fysisk er i maskinen uden at processen selv skal understøtte det •Deling af lager •Implementeres ved: –tvungent sideskift –tvungent segmentskift

5 Datalogi 1F: Operativsystemer[6]5 42 4 1 5 Virtuelt lager eksempel Proces 5 1 2 sekundært lager virtuelt lager fysisk lager 2 6 2 sidefejl 6 4 1

6 Datalogi 1F: Operativsystemer[6]6 Virkemåde •Fang tilgang til sider: –adgangsrettigheder i sidetabel –proces afbrydes kun hvis siden ikke er tilgængelig •Findes siden ikke i fysisk lager: –proces fryses –find en ledig sideplads –findes der ingen ledig sideplads: •gem indhold af sideplads •frigiv sideplads –er siden brugt tidligere/indhold defineret af fil: •hent indhold ind fra sekundært lager –Giv proces adgang til side –Genstart proces

7 Datalogi 1F: Operativsystemer[6]7 Overvågning af lagertilgang •Sidetabel indeholder statusbit: –gyldig side 0 - ikke i fysisk lager 1 - i fysisk lager •Hvis siden placeret i fysisk lager, lav omkostning (især hvis TLB rammes) •Ellers afbrydelse: –aktiver afbrydelsesroutine for sidefejl –find ledig sideplads –hent side ind fra disk/nulstil side –ændring af statusbit i sidetabel •Genstart proces/instruktion

8 Datalogi 1F: Operativsystemer[6]8 Gyldig/ugyldig eksempel

9 Datalogi 1F: Operativsystemer[6]9 Genudførelse af instruktion •Når sidefejlen er behandlet genstartes den instruktion, der forårsagede fejlen •Kan alle instruktioner genstartes uden problemer? –lagerafbildet kontrol af ydre enheder –instruktioner, der ændrer data inden de er færdige, f.eks. Intel: REP MOVS src, dst: •flytter et lagerområde (kilde og mål kan overlappe) •tager tæller i ECX som argument

10 Datalogi 1F: Operativsystemer[6]10 Tvungent sideskift - eksempel

11 Datalogi 1F: Operativsystemer[6]11 Problemer •Hvornår hentes sider ind (f.eks. ved processtart)? •Hvilke sider skiftes ud, når der ikke er plads nok i det fysiske lager? •For at opnå det bedste resultat skal processens fremtidige opførsel gættes •Hent de sider ind, der snart skal bruges af processen •Fjern den side hvor der går længst tid til der bliver brug for den igen

12 Datalogi 1F: Operativsystemer[6]12

13 Datalogi 1F: Operativsystemer[6]13 Omkostning ved tvungent sideskift •Hvis siden er i fysisk lager i –normal lagertilgangstid •Derudover hvis siden ikke er i lageret –afbrydelsesomkostning –(skriv gammel side til sekundært lager) –(hent side ind fra sekundært lager) –genstart instruktion •Domineres af disk I/O

14 Datalogi 1F: Operativsystemer[6]14 Omkostninger - eksempel •Ved ½% af lagertilgangen skal der hentes en side ind: –20 klokcykler for lageradgang –21,4 klokcykler for lageradgang gennem sidetabel –afbrydelsesomkostning 20 klokcykler –diskomkostning: 10 ms + 4/20000 = 10,2 ms = 49.020 klokcykler –Gennemsnitlig omkostning: 21,4 + 0.005*49.040 = 266,5 klokcykler

15 Datalogi 1F: Operativsystemer[6]15 Processtart •Programkode hentes direkte fra eksekverbare fil •Ved proceskloning ofte copy-on-write: –sider der kan ændres skrivebeskyttes –ved første skrivning fås sidefejl –side kopieres –proces genstartes –KUN sider der ændres kopieres

16 Datalogi 1F: Operativsystemer[6]16 Sideudskiftning •Der er ikke plads nok i det fysiske lager: –En enkelt proces har logisk lager > fysisk lager –Summen af processers logiske lager > fysisk lager –Der er foretaget megen fil I/O - I/O bufre optager fysisk lager: •begrænsning på I/O bufre eller •fri konkurrence

17 Datalogi 1F: Operativsystemer[6]17 Sideudskiftning •Strategi (politik) for at finde side, der skal udskiftes: –Er siden ændret? –First In First Out (FIFO) –Least Recently Used (LRU) –Næsten LRU •Strategi for fordeling af sidepladser mellem processer: –Fast minimum –Baseret på prioritet –Baseret på aktuelt forbrug

18 Datalogi 1F: Operativsystemer[6]18 Udskiftning af side •Når en side skiftes ud, skal indholdet skrives til sekundært lager (disk), men: –hvis sidens indhold tidligere er skrevet til disk er dette ikke nødvendigt •Man kan holde styr på ændringer vha. en statusbit (modify bit) i sidetabellen: –sættes automatisk af processor ved skrivning –kan implementeres manuelt ved at skrivebeskytte sider •Ved udskiftning prioriteres uændrede sider lavere (men udskift ikke alle uændrede sider før ændrede

19 Datalogi 1F: Operativsystemer[6]19 Mål for udskiftningsstrategi •Færrest mulige sidefejl •Evalueres ved hjælp af lagertilgangsmønstre/procesmix •Effektivitet ved forskellige mængder af fysisk lager?

20 Datalogi 1F: Operativsystemer[6]20 Sidefejl som funktion af sidepladser

21 Datalogi 1F: Operativsystemer[6]21 Først ind først ud •Simpel at implementere: –et tidsstempel per side i fysisk lager der angiver hvornår siden er læst ind/oprettet –udskift ældste side

22 Datalogi 1F: Operativsystemer[6]22 Beladys anomalitet •Adgangsmønster: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 •Flere sidepladser => flere sidefejl 1 2 3 3 sidepladser 1 2 3 4 sidepladser 4 4 1 2 5 3 4 5 1 2 3 4 5 9 sidefejl 10 sidefejl

23 Datalogi 1F: Operativsystemer[6]23 Beladys anomalitet

24 Datalogi 1F: Operativsystemer[6]24 Den optimale udskiftning •Udskift den side, der vil gå længst tid til der bliver brug for igen •Svær at implementere •Bruges til at bestemme nedre grænse for udskiftningsalgoritmer

25 Datalogi 1F: Operativsystemer[6]25 Least Recently Used (LRU) •Find sider der ikke er i brug længere – måske den der ikke har været brugt i længst tid? •LRU holder rede på hvornår en side sidst er blevet brugt •Hvis en side skal udskiftes, vælges den der ikke er blevet brugt i længst tid

26 Datalogi 1F: Operativsystemer[6]26 LRU eksempel

27 Datalogi 1F: Operativsystemer[6]27 LRU implementation •Tællere: –opdater per side tæller i sidetabel ved hver lagertilgang (dyrt) og søg efter laveste tæller ved sideudskiftning •Stak: –ved hver lagertilgang bliver den refererede side flyttet til øverst på stakken. Ved sideudskiftning tages sider fra bunden. •Problem: Det er dyrt at holde rede på hver enkelt lagertilgang – især uden hardwareunderstøttelse

28 Datalogi 1F: Operativsystemer[6]28 Næsten LRU •Mange processorer implementerer en ”tilgået” bit, der bliver sat når en side bliver brugt •En systemtråd, der aktiveres periodisk: –gemmer bitten for alle sider ved at skifte den ind som den mest betydende bit i en per side byte/ord/.. T1: 10011000 : side refereret T2: 01001100 : side ej refereret –nulstiller tilgået bitten på alle tilgåede sider

29 Datalogi 1F: Operativsystemer[6]29 2. chance udskiftning •En variation af FIFO •Ved sideudskiftning undersøges tilgået bitten på forreste side i FIFO: –er den 0, skiftes siden ud –er den 1: •opdateres sidens tidsstempel (flyttes forest i FIFO’en) •tilgået bitten sættes til 0 •næste side undersøges •Hvis en side bliver tilgået ofte nok, bliver den i fysisk lager

30 Datalogi 1F: Operativsystemer[6]30 2. chance - cirkulær kø

31 Datalogi 1F: Operativsystemer[6]31 Hvornår skrives en udskiftet side til sekundært lager? •I det foregående har vi antaget at alle sider er brugt •Typisk vil OS’et vedligeholde en pulje af frie sider: –ved sidefejl hentes den ønskede side ind i en ledig side –overførslen til disk af siden, der skal skiftes ud, startes –når overførslen er slut, tilføjes den frie side til puljen –sider i puljen kan genbruges •”Beskidte” sider (især hvis de ikke bliver brugt) kan skrives til disk når der er ledig diskkapacitet

32 Datalogi 1F: Operativsystemer[6]32 Allokering af sidepladser •Fordeling af sidepladser mellem processer –hvad er det mindst mulige antal sidepladser en proces kan klarer sig med –allokeringsstrategier –global versus lokal

33 Datalogi 1F: Operativsystemer[6]33 Mindste antal sidepladser •Hvor mange sider involverer en instruktion på en given arkitektur? –LDA R1, 4(R2) bruger 2 sider: •side med ordren og siden indeholdende *(R2+4) –REP MOVS bruger 3 sider: •side med ordren samt en side hver for src og dst –Ældre arkitekturer har mere komplicerede adresseringsmekanismer •En proces skal have sider nok til at udføre den afbrudte instruktion

34 Datalogi 1F: Operativsystemer[6]34 Allokeringsstrategier •Ligeligt fordelt mellem processer •Fordeling efter størrelse: –hver proces får en andel af fysisk lager svarende til andel af allokeret virtuelt lager •Fordeling efter prioritet –processer med højere prioritet får flere sidepladser

35 Datalogi 1F: Operativsystemer[6]35 Lokal eller global udskiftning •Lokal udskiftning: –en proces leder efter sider blandt sine egne sider •Global udskiftning: –en proces leder blandt alle sider –variant, der leder efter sider allokeret til processer med lavere prioritet •Typisk: Global strategi kombineret med minimumsallokering af sider

36 Datalogi 1F: Operativsystemer[6]36 Når der bare ikke er plads nok •Hvis en proces’ aktuelle lagerbehov ikke kan placeres i fysisk lager, har vi et problem: –processen afbrydes næsten hele tiden af sidefejl og gør næsten ingen fremskridt •Processen tærsker langhalm (thrashing) •Ofte et resultat af for høj multiprogrammeringsgrad

37 Datalogi 1F: Operativsystemer[6]37 Thrashing

38 Datalogi 1F: Operativsystemer[6]38 Hvad kan man gøre? •Mindske graden af multiprogrammering: –suspender en proces og frigiv dens sidepladser •Lokal allokering: –en proces, der ”tærsker”, påvirker ikke andre processer –men de mange sidefejl bruger stadig ressourcer •Forsøg at fastsætte hvor mange sider en proces har brug for – arbejdsmængden

39 Datalogi 1F: Operativsystemer[6]39 Working Set •De sider, en proces har tilgået inden for de sidste D millisekunder, udgår pga. temporal lokalitet, de sider WS(p) processen har brug for •Søg at holde WS(p) i fysisk lager for hver p •D for lille => dækker ikke det reelle WS(p) •D for stor => dækker mere end WS(p)

40 Datalogi 1F: Operativsystemer[6]40 Sidefejlsrate •Overvåg raten af sidefejl for en proces: –bliver raten for høj, er det et tegn på thrashing og der bør allokeres flere sidepladser til processen –bliver raten for lav, kan der fjernes sidepladser fra processen (hvis der er behov for dem hos andre processer)

41 Datalogi 1F: Operativsystemer[6]41 I/O & Caching •Fil I/O er typisk den største forbruger af cache hukommelse •Fil cache og procesallokeret lager konkurrerer om fysisk lager: –fast maksimum på fil cache –lad I/O cache indgå som en del af puljen af brugte sider •Brug lagerafbildet fil I/O for at undgå dobbelt buffering

42 Datalogi 1F: Operativsystemer[6]42 Lagerafbildet filadgang •Betragt en fil som en del af en proces’ virtuelle lager •Filen optræder som repræsentationen af denne del af det virtuelle lager på det sekundære lager •Hvis filen deles, vil siderne deles mellem processerne

43 Datalogi 1F: Operativsystemer[6]43 Lagerafbildet filadgang eksempel

44 Datalogi 1F: Operativsystemer[6]44 Sidefarvning •Processorcaches er baseret på fysiske adresser •Kontinuert fysisk lager håndteres fint af processorcache •De fysiske sider, der afbildes i samme del af cachen får samme farve •Virtuelt lager tildeles sider, så kontinuert virtuelt lager strækker sig over sider med forskellig farve

45 Datalogi 1F: Operativsystemer[6]45 Strukturering af applikationer •Ved beregninger der foretager sekventiel adgang til store mængder data, kan det betale sig at optimere efter: –processorcache –sidestørrelse •int A[][] = new int[1024][1024]; –Hver række placeres i på en side –for (j = 0; j < A.length; j++) for (i = 0; i < A.length; i++) A[i,j] = 0; –1024 x 1024 sidefejl

46 Datalogi 1F: Operativsystemer[6]46 Opsummering •Virtuelt lager med tvungent sideskift tillader: –OS’et at styre hvilke sidepladser allokeres til hvilke processer => bedre udnyttelse af lageret –En proces kan benytte mere lager end der er fysisk lager i en maskine •Det er dyrt at skifte en side ud (disk I/O er MEGET langsom i forhold til arbejdslageret) •Sideudskiftningsstrategier er vigtige – næsten LRU algoritmer de mest anvendte •Overforbrug af virtuelt lager giver seriøs nedgang i ydelse (thrashing)

47 Datalogi 1F: Operativsystemer[6]47 Resten af Dat 1F •Onsdag 4. juni 9-11: Spørgetime •Tirsdag 10. juni: Eksamen •Onsdag 25. juni: censormøde

48 Datalogi 1F: Operativsystemer[6]48 Kilder •Disse slides er baseret på SG03 samt de af forfatterne udviklede slides


Download ppt "Operativsystemer [6]: Virtuelt lager Datalogi 1F Forår 2003 Jørgen Sværke Hansen"

Lignende præsentationer


Annoncer fra Google