Operativsystemer of C Efterår 2013 Virtuel hukommelse (kap. 9)

Relaterede dokumenter
Algorithms & Architectures II

1 Operativsystemer oversigt

Design Systemkald. User-mode Linux, The Linux kernel/

Principper for Samtidighed og Styresystemer

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Opgradere fra Windows Vista til Windows 7 (brugerdefineret installation)

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

KOMPONENT BESKRIVELSE

AVR MP Ingeniørhøjskolen i Århus Michael Kaalund

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Disk-vedligeholdelse i Windows 10 - juli 2017

Schedulering. dopsys 1

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Processer og tråde. dopsys 1

Computer Literacy. En stationær bordmodel. En Bærbar Notebook, Labtop, Slæbbar, Blærebar mm.

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

Brugervejledning. ComX brugervejledning version 4.1

Brugermanual MP3 afspiller

DME Bootstrap Version 1.4x

Dannelse af PDF-dokumenter

ViKoSys. Virksomheds Kontakt System

STANDARD SYSTEMINDSTILLINGER

Ruko Security Master Central Database

Daglig brug af JitBesked 2.0

Aktuel driftsstatus for IndFak

Brugervejledning til Kørebog for Pocket PC

CPU i7 2.2 GHz 4 kerner i5-4210u 1,7 GHz 2 kerner, 4 logiske kerner GPU integreret Nvidia GeForce 820M Ram 8GB 6 GB Harddisk HDD HDD

Viditronic NDVR Quick Guide. Ver. 2.0

Vejledning til DTU DOC & RSS Feeds

Installation og aktivering af Windows 7

MANUAL SKIOLD GØR EN FORSKEL DM6000 INSTALLATION

midi2style - program for konvertering af MIDI-filer til YAMAHA PSR stylefiler

OpenTele Server Performance Test Rapport

Selvbetjening og automatisering


Professionel Hjernetræning - Nyt layout og nye funktioner

Når du køber hukommelse til printeren, skal du sikre dig, at SDRAM DIMMhukommelseskortet

FAQ IJ80/110. Display IJ80/110

AgroSoft A/S AgroSync

Database "opbygning"

Jobliste overblik

Indholdsfortegnelse. Installation

Blockprog Rev1.0. Block programmering CS1/CJ1. Qiuck guide OMRON

BRUGERVEJLEDNING VER.

1. Generelt om denne brugervejledning

Pixi vejledning til TeamShare

Sektornet VPN Installationsvejledning Windows Vista/7

Videregående pc-vejledning

Betjeningsvejledning. Brugerhåndtering på SafeLAN Mini- og Filial-anlæg

Quick guide Dynamicweb 9. Kom godt i gang med brugen af redigeringsværktøjet bag vores hjemmesideløsning CMS-systemet Dynamicweb

Indledning. På de følgende sider vises, primært i tegneserieform, lidt om mulighederne i PC-AXIS for Windows.

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold:

Vejledning Dataarkiv (regnskab/budget) menighedsråd, 2016

Dannelse af PDF dokumenter

Vejledning til opgraderet version af Danmarks Arealinformation

Hvordan du opretter, bruger og tildeler kategorier til arrangementer og nyheder

Vejledning til Teknisk opsætning

Transkript:

Operativsystemer of C Efterår Virtuel hukommelse (kap. 9) 8//

Planen for idag q Virtuel hukommelse. q Demand paging / page faults. q Sideudskiftningsalgoritmer. q Rammeallokering til processer. Ø Øvelser: Obligatorisk opgave skal afleveres i dag kl.. 8//

Fra sidste uge I paging adskilles den logiske og fysiske hukommelse: Opdeler den fysiske hukommelse i rammer af fast størrelse. Ø Herved undgås ekstern fragmentering. Opdeler processernes hukommelse i sider af lille størrelse (KB). Ø Herved bliver intern fragmentering ubetydelig lille. Delt hukommelse implementeres nemt med delte rammer. side side side side logisk adresserum sidetabel Liste af frie sidepladser: 5 6 5 6 rammer 5 6 side side side side fysisk adresserum 8//

Kun delvist i hukommelsen Som udgangspunkt kræver paging, at hele processen ligger i hukommelsen. I praksis er dette dog sjældent nødvendigt! Fx behøver følgende ikke ligge i hukommelsen hele tiden Kode til håndtering af sjældne fejl. Statiske arrays int a[nmax]; (defineret med en max størrelse) vil ofte indeholde elementer der aldrig adresseres. Specielle features/funktionalitet i et program, der anvendes meget sjældent (fx kun hvis brugeren klikker). Fordele hvis en proces kun er delvist i hukommelsen En proces kan bruge mere hukommelse end der fysisk er i maskinen uden at processen selv skal understøtte det. Plads til flere processer (= bedre CPU udnyttelse). Load-tid formindskes, evt. swap-tid formindskes. 8//

Virtuel hukommelse Antag, at vi har en vilkårlig stor virtuel hukommelse + at en proces først får fysisk hukommelse når den har brug for det. side Lazy swapper (=pager) swap in, swap out! Virtuel hukommelse side side side side side 5 side 6 side 7 side 9. 5 6 5 sidetabel 6 side side side side fysisk adresserum side side 6 side 5 side 7 side 8 harddisk (swap-space) 8// 5

Demand Paging Demand paging implementeres ved at En side først indlæses når den adresseres af processen. Dvs. sider som aldrig bruges vil aldrig blive indlæst. Virtuel hukommelse side side side side side side 5 side 6 side 7 side 8. Page fault gyldig/ugyldig bit 5 v v 6 v i v 5 sidetabel 6 side side side side fysisk adresserum side side 6 side 5 side 7 side 8 harddisk (swap-space) 8// 6

Page fault (). Opslag i sidetabel (hardware) Hvis gyldig, fortsæt alm. paging Ø Processen kan fortsætte. Hvis ugyldig, send trap til OS. Ø Processen afbrydes med det samme. 8// 7

Page fault (). Håndtering af trap (OS kernen). Gem kontekst; registre + PCB. Tjek at interrupt er page fault. Tjek om den virtuelle adressen er lovlig (dette gøres gennem en tabel i PCB). Ø Hvis ulovlig, termines processen ( segmentation fault ). Ø Hvis lovlig, kald funktion til indlæsning af side. 8// 8

Page fault (). Forberedelse til indlæsning. Find en fri ramme. Ø Hvis en er fri, allokeres denne. Ø Ellers anvendes sideudskiftningsalgoritme (se slides senere). 8// 9

Page fault (). I/O indlæsning af siden. (systemkald) Vent i en I/O kø indtil enheden er ledig. Lokaliser siden på harddisken. Begynd overførsel af siden til den frie ramme. Udfør kontekstskift. Ø CPUen scheduleres til at køre en anden proces. 8//

Page fault (5) 5. Håndtering af I/O interrupt. (OS kernen) Gem kontekst; registre + PCB. Tjek at interrupt er I/O færdig. Sidetabeller opdateres. Ø Den ønskede side angives til at være i den valgte ramme i hukommelsen. Den oprindelige proces flyttes til klar-køen. 8//

Page fault (6) 6. Genstart af processen. (OS kernen) Der ventes indtil den oprindelige processen scheduleres til kørsel på CPUen igen. Den gemte kontekst genskabes. Instruktionen der gav page fault nulstilles. Ø Program counter sættes tilbage. Ø Fetch-decode-execute udføres på ny. 8//

Effektiv tid for hukommelsestilgang Hvad koster en hukommelsestilgang med demand paging: Antag interrupt håndtering tager t Int = mikrosek. Antag harddisktilgang t HD = ms (latency) + 5 ms (seek+transf). Antag direkte hukommelsestilgang tager t mem = nanosek. Page fault raten p er: (= aldrig) p (= altid). Én demand paging hukommelsestilgang koster effektivt: T demand_paging = t mem *(-p) + (t Int +t HD )*p = [x -9 *(-p) + 8.x - *p] sek. = [ + 8998*p] nanosek. Antag % overhead è max page fault per 99 tilgange! Som regel bruges en swap partition hvor processernes binære gemmes som har væsentlig hurtigere I/O (bl.a. mindre seek). 8//

Pure demand paging/ copy-on-write / vfork Demand paging helt fra opstart af en proces (hvor intet indlæses fra starten) kaldes pure demand paging. Kan gøre opstart til en langsommelig affære. Nemt at implementere fork() men ikke så effektivt. Copy-on-write er en teknik til hurtig fork() af processer. Sider med kode markeres som read-only. Sider med data markeres som read-only + copy-on-write. Ø Hardware udløser page fault ved alle forsøg på at skrive til siden. Ø Page fault handler'en laver en kopi af siden (hvis den er markeret som copy-on-write) så forælder og barn har hver sin. Fordelagtigt fx ved fork() efterfulgt af exec(). Virtual memory fork (vfork()) Barneprocessen arbejder direkte på forælderens sider (suspend). 8//

Sideudskiftning Når der ikke er plads nok skal en side i en ramme udskiftes. Hvilken ramme ( offeret ) skal vælges? Hvilken information er til rådighed? Proc s sidetabel H v PC mov $,M! v J M 5 v i Proces s logiske adresserum Proc s sidetabel A PC 6 v B i v D 7 v E Process s logiske adresserum 5 6 7 OS OS D H mov $,M! J A E? fysisk adresserum Vælges, giver det en ny page fault. Vælges, er det måske ok. B M 8// 5

Sideudskiftnings-algoritmer Hvert OS har som regel sin helt egen specialiserede version. Lærebogens eksempler: FIFO, Optimal, LRU, Second-Change. Generelt gælder, at Målet for algoritmerne: Færrest mulige page faults under kørsel. Ved udskiftning kan sider der er uændrede prioriteres så vi undgår at skulle gemme på disken (ca. 5 % mindre overhead). For at opnå det bedste resultat skal processens fremtidige opførsel i princippet kendes (dvs. tilnærmes); Ø Udskift den side, der sandsynligvis ikke skal bruges i længst tid. Selv en lille forbedring i effektivitet under demand paging vil kunne resultere i store forbedringer af hele systemets kørsel. 8// 6

Evaluering af sideudskiftnings-algoritmer Algoritmerne evalueres ved at tælle antal page faults for givet Antal af rammer i det fysiske lager. Sidetilgangsmønster, fx givet ved en streng: 7,,,,,,,,,,,,,,,,,7. Ø Disse kan genereres tilfældigt eller som trace under kørsel. Typisk opførsel af page faults vs. antal rammer. 8// 7

First-In-First-Out (FIFO) En simpel udskiftningsalgoritme: Hver ramme i det fysiske lager for et tidsstempel, der angiver hvornår siden er læst ind/oprettet. Udskift den ældste side (antages ikke at skulle bruges foreløbig). Med tre rammer: page faults. Med fire rammer: page faults. Bemærk: Flere rammer è færre page faults. 8// 8 7 7 7 7 7 7 7 7 7 7 Page hit 7,,,,,,,,,,,,,,,,,7 Page fault

Belady s anormailitet FIFO sideudskiftnings-algoritmen med et alternativt sidetilgangsmønster:,,,,,,5,,,,,5. Med tre rammer: 9 page faults. Med fire rammer: page faults. FIFO er tydeligvis ikke optimal. Det uventede resultat at flere rammer è flere page faults kaldes Belady s anormalitet. 8// 9 5 5 5 5 5 5 5 5 5 5 5

Optimal (OPT) sideudskiftningsalgoritme Den optimale sideudskiftning er Udskift den side, der vil gå længst tid til skal bruges. Kan ikke implementeres i praksis kræver at vi kender fremtiden, hvilket vi ikke gør. Bruges til at bestemme en nedre grænse for page faults. Ø Når man laver en ny algoritme kan det være nyttig information. Med tre rammer: 9 page faults (= optimalt!). 8// 7 7 7 7 7,,,,,,,,,,,,,,,,,7

Least-recently-used (LRU) algoritme LRU holder rede på hvornår en side sidst er blevet brugt Udskift den side, der har været ubrugt i længst tid. Ø måske er denne side ikke i brug længere. Tids -tæller implementation Ø Time-of-use værdi på hver indgang i sidetabellen opdateres af hardware tidstæller når siden bruges. Ø Siden med mindste værdi udskiftes (vha. søgning i sidetabellen). Stak implementation Ø Når en side bruges, flyttes den til toppen af stakken. Dyrt Ø Siden der udskiftes tages fra bunden (ingen søgning). Med tre rammer: page faults. 7,,,,,,,,,,,,,,,,,7 7 7 7 7 8//

Tilnærmet LRU Som regel understøtter hardwaren ikke ægte LRU men tilbyder kun en tilgået bit, der bliver sat når en side bliver brugt. En systemproces, der aktiveres periodisk udfører aging : Time-of-use = tilgået bits skubbes ind fra venstre. Periode: Tilgået bits: 5 >> Senest tilgået = største værdi 8//

Second-chance ( clock ) algoritmen Anvend tilnærmet LRU med kun bit (= modificeret FIFO). Alle sider findes i en cirkulær linket liste. Ved sideudskiftning Ø Undersøg tilgået bit en på siden som næste offer pointeren peger på. Ø = siden skiftes ud. Ø = siden får en ekstra chance, dvs. flyt næste offer pointeren en frem og gentag. Sider tilgået ofte nok bliver aldrig udskiftet! Næste offer pointer Udvidelse med (tilgået, modify) bits. Udskiftning i prioriteret rækkefølge Ø (,) = siden skiftes ud. Ø (,) = siden skal skrives til disk. Ø (,) = siden bliver sikkert brugt igen snart. Ø (,) = værste udskiftning. Udskift denne 8//

Page-buffering Typisk vil OS vedligeholde en pulje af frie rammer som buffer Ved page fault hentes den ønskede side ind i en ledig ramme. Offer-siden overføres til disk Ø Enten startes overførslen med det samme. Ø Eller siden registreres som modificeret og overføres på et tidspunkt når paging enheden er idle. Når overførslen er slut, tilføjes den frie side til puljen. En udvidelse hertil er at huske hvilke sider der er i puljen. Sider i puljen kan herved genbruges (de ændres ikke på disken) hvis den givne ramme ikke er blevet fyldt med en ny side. Ø Ved page fault tjekkes først om siden er i puljen. Ø Hvis siden er i puljen, behøves ingen I/O. Et dårlig valg af offer-ramme kan på den måde evt. rettes op. 8//

Allokering af rammer til processerne Mindste antal rammer (en proces kan klare sig med) Min. rammer = max antal hukommelsesreferencer i en instr.: Ø movl %eax,x(%rip) è til instr. + til *(x+rip) =. Allokering med #rammer = m, #processer = n: Ligeligt fordelt Allokér m/n rammer per proces. Fordeling efter størrelse s i, i =,,n I alt bruges S = Σs i rammer. Allokér a i = s i / S * m rammer til proces i. Fordeling efter prioritet p i, i =,,n Allokér flere rammer til processer med høj prioritet, fx k * p i * a i. 8// 5

Lokal eller global udskiftning Et stort spørgsmål er, hvordan rammeallokeringen vil ændre sig under kørsel på grund af sideudskiftning. Lokal udskiftning Offer-siden findes altid i processens egne allokerede rammer. Antallet af rammer allokeret til en proces er uændret. En proces kontrollerer således sin egen page fault rate. Global udskiftning Alle sider kan være en potentielt offer-side, uanset om de tilhører processen selv eller ej. En proces (høj prioritet) kan stjæle rammer fra andre processer. Overordnet mere effektiv end lokal udskiftning, men forskellige kørsler kan variere meget i forhold til hinanden. 8// 6

Thrashing () Hvis en proces behov for rammer ikke tilfredsstilles: Processen afbrydes igen og igen pga. page faults. Stagnerer = tærsker langhalm (thrashing).. OS opdager lav CPU udnyttelse.. OS øger graden af multiprogramming.. En ny proces startes op som stjæler rammer fra de andre.. Thrashing øges. 5. - gentages Resultatet er at CPU udnyttelsen styrtdykker alle processer er konstant i gang med paging. 8// 7

Thrashing () Hvordan kan thrashing forhindres? Brug lokal udskiftning Ø En proces, der tærsker, påvirker ikke andre processer. Ø Men de mange page faults bruger stadig resurser. Regulere graden af multiprogrammering fornuftigt Ø Suspender en proces og frigiv dens rammer. 8// 8

Lokalitetsmodel og working-set En almindelig proces har et typisk hukommelsesforløb. Working-set En mængde af sider udgør den nødvendig pulje af sider på et givet tidspunkt. Fx et funktionskald Ø Instruktioner. Ø Lokale variable. Ø Få globale variable. Derfor virker det at have caches i hardwaren! 8// 9

Model for working-set Hvordan finder vi working-set? WS(t i ) : Working-set til tiden t i. Δ : Working-set vindue (= et fast antal hukommelsestilgange). Fx for Δ = : I praksis implementeres det med interrupt og tilgået bit. Herved opnås en tilnærmelse til working-set. 8//

Regulering af multiprogramming () Regulering ved hjælp af working-set WSS i : Størrelsen af working-set for proces i. D = Σ WSS i : total antal rammer krævet af alle processer. Når D > m Thrashing, dvs. en af processerne suspenderes. Fx n =, m = 8, s = s = s =, Δ = : P:,,,,,,,,,,,,,,, WSS,,,,,,,,,,,,,,, P:,,,,,,,,,,,,,,, WSS,,,,,,,,,,,,,,, P:,,,,,,,,,,,,,,, WSS,,,,,,,,,,,,,,, Thrashing Σ WSS i, 5, 6, 6, 8, 7, 6, 5,, 7, 8, 7, 9, 7, 9, 8 8//

Regulering af multiprogramming () Regulering ved hjælp af page fault hyppighed. Overvåg frekvensen af page faults for alle processer. Ø 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 rammer fra processen (hvis der er behov for dem hos andre processer). 8//

Oversigt q Sidste gang q Paging er super cool q Ingen ekstern fragmentering af hukommelse q Ingen flytning af kørende processer q Denne gang q Virtuel hukommelse er super cool q Kan vha. demand paging bla. kører processer der er større end din hukommelse uden performance reduktion**) **) Undtagen ved page faults som minimeres med q Sideudskiftningsalgoritmer. q Strategier for sideallokering q Opdage og undgå thrashing ved at pause processer. 8//