HOGESCHOOL ROTTERDAM / CMI Computersystemen 3 (Operating systems) [email protected] HOGESCHOOL ROTTERDAM / CMI 4 Geheugenbeheer HOGESCHOOL ROTTERDAM / CMI Geheugenbeheer (1/4) • Het geheugen kan worden beschouwd als een van de belangrijkste hulpbronnen (resources). • Omdat dit niet onbeperkt groot is, is het zaak het geheugen zo effectief mogelijk te beheren. L.V. de Zeeuw Computersystemen 3 3 HOGESCHOOL ROTTERDAM / CMI Geheugenbeheer (2/4) • De omvang van programma’s neemt even snel toe als de omvang van het geheugen. • Wet van Parkinson: de omvang van programma’s is afhankelijk van de beschikbare geheugenruimte. L.V. de Zeeuw Computersystemen 3 4 HOGESCHOOL ROTTERDAM / CMI Geheugenbeheer (3/4) Het deel van het besturingssysteem dat het geheugen beheert noemen we de memory manager. Taken: • Bijhouden wat wordt gebruikt en wat niet. • Toewijzen geheugen aan processen. • Vrijgeven van geheugen als een proces is beëindigd. • Zo nodig verplaatsen van processen van geheugen naar disk en vice versa (swappen). L.V. de Zeeuw Computersystemen 3 5 HOGESCHOOL ROTTERDAM / CMI Geheugenbeheer (4/4) We onderscheiden : Geheugenbeheer • zonder swappen of paging • met swapping Lapmiddel, het • met virtual memory geheugen is te klein voor alle processen L.V. de Zeeuw Computersystemen 3 6 HOGESCHOOL ROTTERDAM / CMI Monoprogrammering zonder swapping of paging • Eén proces in het geheugen. L.V. de Zeeuw Computersystemen 3 7 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering en gebruik van het geheugen Argumenten voor multiprogrammering: • Applicaties zijn eenvoudiger te ontwikkelen: Toepassingen verdelen in processen. • Verkrijgen van een redelijke responstijd. • Processen wachten vaak lang op I/O. • Verbeteren bezettingsgraad CPU L.V. de Zeeuw Computersystemen 3 8 HOGESCHOOL ROTTERDAM / CMI Model voor multiprogrammering (1/4) De bezettingsgraad van de CPU is 100% als 5 processen gemiddeld 20% van de tijd berekeningen uitvoeren … Dit model is te optimistisch omdat processen vaak tegelijk op I/O wachten. L.V. de Zeeuw Computersystemen 3 9 HOGESCHOOL ROTTERDAM / CMI Model voor multiprogrammering (2/4) Een beter model verkrijgen we door rekening te houden met statistische verschijnselen. • Process wacht een fractie p van zijn tijd op I/O. • Bij n processen in het geheugen is de kans dat alle processen tegelijk wachten pn . (CPU is nu idle) • De bezettingsgraad van de CPU is dan 1- pn N is de graad van multiprogrammering L.V. de Zeeuw Computersystemen 3 10 HOGESCHOOL ROTTERDAM / CMI Model voor multiprogrammering (3/4) Processen zijn niet onafhankelijk van elkaar: een proces dat klaar is om te worden uitgevoerd moet soms wachten op een ander proces. Een beter model maakt gebruik van de wachtrij theorie. L.V. de Zeeuw Computersystemen 3 11 HOGESCHOOL ROTTERDAM / CMI Model voor multiprogrammering (4/4) Conclusie: Het gebruik van multiprogrammering verbetert de bezettingsgraad van de CPU. L.V. de Zeeuw Computersystemen 3 12 HOGESCHOOL ROTTERDAM / CMI Batch-Performance Multiprogrammeringssystemen a) b) c) Aankomst en verwerkingstijden van 4 jobs. Bezettingsgraad CPU van job 1 t/m 4 als 80% van de tijd op I/O wordt gewacht. Gebeurtenissen als jobs worden aangeboden en uitgevoerd. De getallen boven de horizontale lijn is de tijdsduur dat een job de CPU kan gebruiken. (20-15) x .16 = 0.8 minuut / process L.V. de Zeeuw Computersystemen 3 13 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van een vaste grote (1/9) • Het is handig meer processen in het geheugen te plaatsen. • Hoe kunnen we nu het beste het geheugen organiseren? • De eenvoudigste manier is gebruik te maken van partities: een verdeling van het geheugen in niet noodzakelijkerwijs even grote delen. (OS/360 IBM mainframe) L.V. de Zeeuw Computersystemen 3 14 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van een vaste grote (2/9) L.V. de Zeeuw Computersystemen 3 15 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van een vaste grote (3/9) Gescheiden input queues: • Job in de kleinst mogelijke partitie. Nadeel: Er kunnen wachtrijen ontstaan bij kleine partities, terwijl en grote partities vrij zijn. Enkele input queue: • Kleine jobs kunnen in grote partities komen te staan. Nadeel: Deze strategie discrimineert de kleine jobs L.V. de Zeeuw Computersystemen 3 16 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van een vaste grote (4/9) Jobs worden uitgevoerd op verschillende adressen De linker moet het begin adres weten waar het programma in het geheugen moet worden geplaatst. L.V. de Zeeuw Computersystemen 3 17 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van een vaste grote (5/9) Oplossing: Relocatie Relocatie is het aanpassen van instructies op moment dat een programma in het geheugen wordt geladen. Een bit map bepaald of iets een adres, opcode (instructie), of constante is of andere betekenis heeft. Alleen adressen moeten worden vertaald. L.V. de Zeeuw Computersystemen 3 18 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van een vaste grote (6/9) Beveiligingsprobleem: Een kwaadaardig programma kan kan altijd nieuwe instructies maken en daarnaar toe springen… Zeker in een multiuser systeem is dit ongewenst L.V. de Zeeuw Computersystemen 3 19 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van een vaste grote (7/9) Oplossing (IBM/360): • Geheugen verdelen in blokken van 2K bytes • Per blok een 4 bits beschermingscode. • De PSW bevat een sleutel voor deze beschermingscode. • De hardware veroorzaakt een trap als een proces geheugen gebruik waarvan de beschermingscode niet overeenstemt met de PSW sleutel. L.V. de Zeeuw Computersystemen 3 20 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van een vaste grote (8/9) PSW sleutel L.V. de Zeeuw Computersystemen 3 21 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van een vaste grote (9/9) Andere oplossing voor relocatie en bescherming: • • • • • Hardware registers base en limit Base bevat het adres waar de partitie begint. Limit bevat de grootte van de partitie Geheugenadres<limit Geheugenadres:= geheugenadres+base voordat de instructie in het geheugen wordt gezet. L.V. de Zeeuw Computersystemen 3 22 HOGESCHOOL ROTTERDAM / CMI Swappen Het gebruik van partities met een vaste grote is … • effectief bij een batch systeem. • niet effectief bij een time-sharing systeem met vele gebruikers – meestal zijn er meer gebruikers dan het geheugen aan processen kan opslaan. Swappen is het verplaatsen van processen van disk naar geheugen en vice versa. L.V. de Zeeuw Computersystemen 3 23 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van variabele grootte (1/5) Bij swappen is het gebruik van partities van vaste grote niet zo aantrekkelijk. Reden: veel programma’s zijn te klein voor een partitie verspilling van geheugenruimte. Oplossing: variabele lengte partities L.V. de Zeeuw Computersystemen 3 24 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van variabele grootte (2/5) L.V. de Zeeuw Computersystemen 3 25 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van variabele grootte (3/5) Variabele grootte partities. Voordeel: het geheugen wordt beter benut. Nadeel: gecompliceerd. L.V. de Zeeuw Computersystemen 3 26 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van variabele grootte (4/5) Memory compaction: Het nog beter benutten van het geheugen door het verplaatsen van processen naar het kleinst mogelijk beginadres. Nadeel: Tijdrovend. Oplossing: Speciale hardware gebruiken L.V. de Zeeuw Computersystemen 3 27 HOGESCHOOL ROTTERDAM / CMI Multiprogrammering met partities van variabele grootte (5/5) L.V. de Zeeuw Computersystemen 3 28 HOGESCHOOL ROTTERDAM / CMI Systemen voor het bijhouden van geheugen gebruik • Bit maps • Lijsten • Buddy systemen L.V. de Zeeuw Computersystemen 3 29 HOGESCHOOL ROTTERDAM / CMI Geheugenbeheer met behulp van bitmaps en lineaire lijsten L.V. de Zeeuw Computersystemen 3 30 HOGESCHOOL ROTTERDAM / CMI Bit maps • Het geheugen wordt verdeeld in eenheden van gelijke grootte. • Per eenheid correspondeert een bit uit de bit map. 0 = eenheid ongebruikt 1 = eenheid gebruikt. • Grotere eenheden kleinere bit map (maar verspilling van geheugen ruimte) • Groter geheugen grotere bitmap • Voordeel bitmap: Eenvoudig • Nadeel bitmap: Doorzoeken duurt lang L.V. de Zeeuw Computersystemen 3 31 HOGESCHOOL ROTTERDAM / CMI Lineaire lijsten (1/5) Iedere entry in de lijst beschrijft of het geheugensegment wordt • gebruikt (Process) of • vrij is (Hole) en • het beginadres en de • lengte L.V. de Zeeuw Computersystemen 3 32 HOGESCHOOL ROTTERDAM / CMI Lineaire lijsten (2/5) L.V. de Zeeuw Computersystemen 3 33 HOGESCHOOL ROTTERDAM / CMI Lineaire lijsten (3/5) Algoritmen voor geheugen toewijzing • First-fit: – Zoeken naar een gat dat groot genoeg is. – Gat splitsen in P en H Werkt snel. • Next-fit – Werkt als first-fit maar zoekt verder naar een gat dat groot genoeg is. Werkt iets langzamer dan first-fit. • Best-fit – De hele lijst wordt doorzocht naar het kleinste gat. Langzamer dan first-fit. Minder efficiënt geheugen gebruik, er onstaan kleine onbruikbare gaten. • Worst fit – Het grootste gat wordt toegewezen. Na verdeling blijft er nog een bruikbaar gat over. Geen goed algoritme. L.V. de Zeeuw Computersystemen 3 34 HOGESCHOOL ROTTERDAM / CMI Lineaire lijsten (4/5) Algoritmen voor geheugen toewijzing Verbetering: aparte lijsten voor gaten en processen – Voordeel er wordt sneller een geschikt gat gevonden – Nadeel: vrijgeven van geheugen gaat langzamer • Gaten lijst sorteren op grootte. – First- en Best-fit werkt dan even snel • Gaten kunnen zelf ook voor de gaten lijst worden gebruikt, dit maakt aparte lijst overbodig: – 1ste word in gat: grootte van het gat – 2de word: pointer naar volgend gat L.V. de Zeeuw Computersystemen 3 35 HOGESCHOOL ROTTERDAM / CMI Lineaire lijsten (5/5) Algoritmen voor geheugen toewijzing Quick-fit: • Apparte lijsten met elementen met de meeste gevraagde geheugen grootte. Bv tabel met n-entries: 1ste entry pointer naar 4 kb gaten lijst 2de entry pointer naar 8 kb gaten lijst 3de entry pointer naar 12 kb gaten lijst Etc Toewijzen werkt snel. Vrij geven van geheugen complex en langzaam L.V. de Zeeuw Computersystemen 3 36 HOGESCHOOL ROTTERDAM / CMI Geheugen beheer met buddy-systeem (1/) • Toewijzen van gaten snel maar • Vrijgeven van geheugen langzaam: Niet alleen proces lijst aanpassen maar ook in gaten lijst zoeken naar buurelementen. Oplossing: buddy-systeem L.V. de Zeeuw Computersystemen 3 37 HOGESCHOOL ROTTERDAM / CMI Geheugen beheer met buddy-systeem (1/5) • Lijst met vrije blokken van 1,2,4,8,16, … bytes t/m omvang geheugen. • Voorbeeld voor een geheugen van 1 Mbyte = 1048576 byte zijn 2log(1048576) = 20 lijsten nodig. L.V. de Zeeuw Computersystemen 3 38 HOGESCHOOL ROTTERDAM / CMI Geheugen beheer met buddy-systeem (2/5) L.V. de Zeeuw Computersystemen 3 39 HOGESCHOOL ROTTERDAM / CMI Geheugen beheer met buddy-systeem (3/5) • Als het geheugen leeg is, is er één gat met omvang van het geheugen. • Voor een een proces van x bytes is een gat nodig van: 2 int( (log(x)/log 2) +1) bytes. • Als er geen vrije blokken zijn van de juiste omvang, wordt een te groot blok gesplist in twee gelijke delen. • Het eerste deel wordt weer gesplitst in twee delen totdat het proces net past. • Bij het splitsen ontstaan twee naast liggende buddy’s van gelijke grootte. L.V. de Zeeuw Computersystemen 3 40 HOGESCHOOL ROTTERDAM / CMI Geheugen beheer met buddy-systeem (4/5) • Bij vrijgeven van geheugen wordt een blok weer opgenomen in de betreffende lijst met vrije blokken. • Tevens wordt onderzocht of er eventueel blokken kunnen worden samengevoegd. • Dit kan alleen bij buddy blokken. L.V. de Zeeuw Computersystemen 3 41 HOGESCHOOL ROTTERDAM / CMI Geheugen beheer met buddy-systeem (5/5) Voordeel: Buddy systemen zijn snel: de memory manager door zoekt alleen de juiste lijst de correspondeert met de omvang van het proces. Nadeel: Inefficiënt gebruik geheugen. Voorbeeld: 35 KB proces krijgt 64KB toegewezen. Dit lijdt tot interne fragmentatie. L.V. de Zeeuw Computersystemen 3 42 HOGESCHOOL ROTTERDAM / CMI Interne / externe fragmentatie • Bij interne fragmentatie slaat ‘intern’ op aan een proces toegewezen geheugen ruimte die niet zal worden gebruikt door het proces. • Externe fragmentatie bestaat uit kleine gaten die vaak niet kunnen worden toegewezen aan processen. L.V. de Zeeuw Computersystemen 3 43 HOGESCHOOL ROTTERDAM / CMI Toewijzen van swap-ruimte • Bij verplaatsing van een process van geheugen naar disk (swappen) moet de benodigde ruimte worden gezocht en toegewezen. • Twee systemen: Processen hebben geen/wel een vast plek binnen de swap-area op de disk. Een vaste plek op disk wordt toegewezen op moment van het creëren van een proces • Voor de toewijzing van ruimte op disk worden dezelfde algoritmen gebruikt als voor geheugenbeheer. L.V. de Zeeuw Computersystemen 3 44 HOGESCHOOL ROTTERDAM / CMI Analyse swapping systeem: externe fragmentatie Voor een systeem in evenwicht is de … • • De helft van het aan geheugen operaties bestaat uit toewijzen de andere helft uit vrijgeven. Van de helft van de operatie die geheugen vrijgeeft leidt de helft tot gaten die moeten worden samengevoegd. fifty percent rule L.V. de Zeeuw Computersystemen 3 45 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (1/3) Probleem: Geheugen te klein voor een programma. • Een oplossing: verdeel programma in stukjes (overlays) en run de overlays na elkaar … • Ovelays moeten door de programmeur worden gemaakt (tijdrovend). • Overlays worden door het operating system van en naar disk verplaatst. L.V. de Zeeuw Computersystemen 3 46 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (2/3) • De CPU kan meestal méér geheugen adresseren dan feitelijk aanwezig. • Voorbeeld: Met 32 bits adressen kun je 232 = 4 294 967 296 geheugenplaatsen adresseren. • Meestal is er niet zoveel RAM. • Er is wel genoeg diskruimte. • Het maximaal adresseerbare geheugen wordt daarom op disk gesitueerd. • Maar disks zijn relatief traag. • Dat is niet erg omdat programma’s en data ‘lokaliteit’ vertonen. • Programma instructies of data die op schijf staan en die de processor nodig heeft worden naar het intern geheugen gekopieerd (swap). • Dit concept heet virtueel geheugen. L.V. de Zeeuw Computersystemen 3 47 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (3/3) • Virtueel geheugen – de gezamenlijke grootte van alle programma’s, data en stack mag de grootte van het fysieke geheugen overschrijden. • Het operating system zorgt ervoor dat wat op een bepaald moment nodig is in het geheugen staat. De rest staat op disk. L.V. de Zeeuw Computersystemen 3 48 HOGESCHOOL ROTTERDAM / CMI Paging (1/3) • Een virtueel geheugen wordt gebouwd een techniek die paging wordt genoemd. • Virtuele adressen vormen de virtuele adres ruimte. • Een chip, de memory management unit (MMU) vertaalt virtuele adressen in fysieke adressen. L.V. de Zeeuw Computersystemen 3 49 HOGESCHOOL ROTTERDAM / CMI Paging (2/3) L.V. de Zeeuw Computersystemen 3 50 HOGESCHOOL ROTTERDAM / CMI Paging (3/3) L.V. de Zeeuw Computersystemen 3 51 HOGESCHOOL ROTTERDAM / CMI De Memory Management Unit L.V. de Zeeuw Computersystemen 3 52 HOGESCHOOL ROTTERDAM / CMI Multitasking en de MMU (1/2) Programma weet van te voren niet waar ze in het geheugen komt Process Programma dat door de CPU in uitvoering is genomen. L.V. de Zeeuw Een programma mag niet lezen of schrijven in het geheugen gebied van een ander programma. Computersystemen 3 53 HOGESCHOOL ROTTERDAM / CMI Multitasking en de MMU (2/2) L.V. de Zeeuw Computersystemen 3 54 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (1/7) • Het virtueel geheugen wordt in pagina’s verdeeld (pages) van bijvoorbeeld elk 210= 1024 adressen. • Bij 232 adressen kunnen er 232/210 = 222 pagina’s worden geadresseerd. • Alleen de pagina’s waar de processor mee bezig is staan in het interngeheugen. L.V. de Zeeuw Computersystemen 3 55 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (2/7) L.V. de Zeeuw Computersystemen 3 56 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (3/7) L.V. de Zeeuw Computersystemen 3 57 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (4/7) VM = Virtual Memory PM = Physical Memory L.V. de Zeeuw Computersystemen 3 58 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (5/7) Page fault Als de CPU een adres vraagt op een pagina die niet in het werkgeheugen staat. LRU Least Recently Used (minst recent gebruikt). Algoritme dat gebruikt kan worden bij de vervanging van pagina’s in het werkgeheugen. Dirty bit Vlag die aangeeft dat een schrijfactie op de pagina heeft plaatsgevonden. Hieraan kan het OS zien dat de pagina naar de disk teruggeschreven moet worden als hij plaats moet maken voor een ander. L.V. de Zeeuw Computersystemen 3 59 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (6/7) Associatief geheugen Geheugen dat op inhoud geadresseerd kan worden. L.V. de Zeeuw Computersystemen 3 60 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen (7/7) TLB Translation Lookaside Buffer. Hier worden de meest recente adresvertalingen van de page table bewaard. L.V. de Zeeuw Computersystemen 3 61 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen en de cache (1/4) • Afdelingsbibliotheek • Hoofdbibliotheek L.V. de Zeeuw Computersystemen 3 62 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen en de cache (2/4) L.V. de Zeeuw Computersystemen 3 63 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen en de cache (3/4) Cache Snel geheugen waarin lokale data staat. Cache miss/hit Als de gevraagde data niet/wel in de cache wordt gevonden. Multilevel cache Als meerdere caches aanwezig zijn, worden ze genummerd. De level 1-cache is de eerste vanuit de processor gezien. L.V. de Zeeuw Computersystemen 3 64 HOGESCHOOL ROTTERDAM / CMI Virtueel geheugen en de cache (4/4) L.V. de Zeeuw Computersystemen 3 65 HOGESCHOOL ROTTERDAM / CMI Segmentatie • Paging: Eén dimensionale (lineaire) adres ruimte. • Segemtatie: Twee dimensionale adres ruimte. – Ieder programma beschikt over een groot aantal segmenten. Bijvoorbeeld 232 segmenten. – Een segment bestaat uit een groot aantal bytes. Bijvoorbeeld 232 bytes. – Binnen de adres ruimte, voor elk programma, bevinden zich: Alle procedures, data, stack, heap, en benodigde files. – De processen hoeven niet eerst files te open of speciale I/O operaties te gebruiken. L.V. de Zeeuw Computersystemen 3 66 HOGESCHOOL ROTTERDAM / CMI Lengte: 0 tot 16 pages MMU Hardware met tabel bestaande uit 16 gedeelten Lezen of schrijven Bevat nummer page frames Elk segment bevat 16 pages Ieder deel is bestemd voor één van de maximaal 16 processen Elk deel bevat 64 segment descriptors L.V. de Zeeuw In dit voorbeeld: •Hardware ondersteuning voor 16 processen •Elk proces beschikt over 1024 pages •Elke page is 4 KB groot Computersystemen 3 67 HOGESCHOOL ROTTERDAM / CMI Segmentatie • Bij het laden van een proces wordt een 4 bits procesnummer in een speciaal hardwareregister geladen. • Adres vertaling: L.V. de Zeeuw Computersystemen 3 68 HOGESCHOOL ROTTERDAM / CMI Segmentatie • Bij een proceswisseling hoeft alleen het 4 bits proces nummer te worden veranderd. • Twee processen kunnen gemeenschappelijke segmenten gebruiken wanneer hun segment descriptors naar dezelfde page table verwijzen. L.V. de Zeeuw Computersystemen 3 69 HOGESCHOOL ROTTERDAM / CMI Page replacement algoritmen • Page fault: De cpu vraagt een pagina die niet in het geheugen staat. • Bij een pagefault moet het OS een pagina aanwijzen die uit het geheugen moet worden verwijderd. • Indien de aangewezen pagina in het geheugen is gewijzigd moet deze naar disk worden geschreven. L.V. de Zeeuw Computersystemen 3 70 HOGESCHOOL ROTTERDAM / CMI Page replacement algoritmen Naar page replacement algoritmen is veel experimenteel en theoretisch onderzoek verricht. • • • • Optimal page replacement Non recently-used page replacement First-in first-out page replacement Least recently used page replacement L.V. de Zeeuw Computersystemen 3 71 HOGESCHOOL ROTTERDAM / CMI Optimal page replacement • Dit is het beste vervanginsalgoritme. • Bij een page fault zijn een aantal pages in het geheugen. • Op één van deze pagina’s is nodig voor de volgende instructie: de pagina die deze instructie bevat. • Aan andere pages wordt misschien pas na 10, 100 of 1000 instructies gerefereerd. • Iedere page kan worden voorzien van een label met het aantal instructies voorafgaand aan de eerste keer dat deze page nodig is. • Het page algoritme verwijderd de page met het hoogste label: deze page is voorlopig niet nodig. L.V. de Zeeuw Computersystemen 3 72 HOGESCHOOL ROTTERDAM / CMI Optimal page replacement • Er is een probleem: op het moment van een pagefault is niet te achterhalen wanneer iedere page nodig is. • Je kunt het algoritme echter wel simuleren door van historische gegevens gebruik te maken. • Het resultaat leert je de best mogelijke performance waarmee andere page replacement algoritmen kunnen worden vergeleken. L.V. de Zeeuw Computersystemen 3 73 HOGESCHOOL ROTTERDAM / CMI Non recently-used (NRU) page replacement (1/3) Elke page wordt geassocieerd met twee bits: • R (eferenced): 0 als de page niet gebruikt • M(odified): 0 als de page niet is gewijzigd R en M in hard- of software. • • • • 1 als de page wel is gebruikt 1 als de page wel is gewijzigd Bij het starten van een proces krijgen beide bits de waarde 0 Per vast tijd interval (klok interrupt) worden alle R bits weer op 0 gezet. Het OS kan daarna zien welke pagina’s binnen het komende tijd interval wordt gebruikt. Het NRU deelt de page in in 4 classes: R M Class 0 0 0 Class 1 0 1 Class 2 1 0 Class 3 1 1 L.V. de Zeeuw Computersystemen 3 Ontstaat vanuit Class 3 nadat R op 0 is gezet door een klok interrupt 74 HOGESCHOOL ROTTERDAM / CMI Non recently-used (NRU) page replacement (2/3) • Na indeling in classes kiest het NRU algoritme een willekeurige pagina van de laagst mogelijke class. R M Class 0 0 0 Het NRU algoritme heeft de voorkeur voor gewijzigde niet aan gerefereerde pages boven pages die wel gebruikt zijn maar ongewijzigd! Class 1 0 1 Class 2 1 0 Class 3 1 1 L.V. de Zeeuw Computersystemen 3 75 HOGESCHOOL ROTTERDAM / CMI Non recently-used (NRU) page replacement (3/3) • Is eenvoudig te begrijpen • Efficiënt te implementeren • Voldoende maar niet optimale performance L.V. de Zeeuw Computersystemen 3 76 HOGESCHOOL ROTTERDAM / CMI First-in first-out (FIFO) page replacement (1/3) • De page die het langst in het geheugen staat wordt verwijderd. Dit wordt bijgehouden in een page list. • In analogie met een supermarkt betekent dit dat de langst lopende produkten (bv kaas) plaats moeten maken voor de nieuwste produkten. L.V. de Zeeuw Computersystemen 3 77 HOGESCHOOL ROTTERDAM / CMI First-in first-out (FIFO) page replacement (2/3) We willen niet dat veel gevraagde pages worden verwijderd. Oplossingen: • Combineer de NRU en het FIFO algoritme: van de oudste pages worden eerst de class 0 pages verwijderd, daarna class 1 pages, etc. • Second chance algoritme: – Als R = 0 dan page verwijderen. – Als R = 1 page dan R:=0. Vervolgens de page behandelen als of hij nieuw is: de page wordt aan het einde van de pagelist geplaatst. • Clock algoritme: – Is een variant op het second chance algoritme – Maakt gebruik van een ‘cyclische lijst’. Dit is de pagelist waarbij een pointer die naar begin van de lijst wijst wordt aangepast zodat hij nu naar het tweede page in de page list wijst. L.V. de Zeeuw Computersystemen 3 78 HOGESCHOOL ROTTERDAM / CMI First-in first-out (FIFO) page replacement (3/3) • Intuïtief: Meer pages in het geheugen geeft minder page faults. • Belady’s anomaly is het tegenvoorbeeld L.V. de Zeeuw Computersystemen 3 79 HOGESCHOOL ROTTERDAM / CMI Least recently used page replacement (1/3) • Pages die in de laatste instructies vaak zijn gebruikt worden waarschijnlijk ook in de volgende instructies vaak gebruikt en omgekeerd. • Nodig: lineaire lijst van alle pages in het geheugen – De meest recente page staat aan het begin. – De minst gebruikte page staat aan het eind. • Tijdrovend • Kan in software of dure hardware L.V. de Zeeuw Computersystemen 3 80 HOGESCHOOL ROTTERDAM / CMI Least recently used page replacement (2/2) Hardware oplossing 1: • 64 bits counter (C) • Na elke instructie C:=C+1 • Elke page table entry bevat een veld dat de actuele waarde van C bevat indien aan deze page werd gerefereerd. • Bij een page fault wordt gezocht naar de page met de laagste waarde. Dit is dan de ‘least recently used’ page. L.V. de Zeeuw Computersystemen 3 81 HOGESCHOOL ROTTERDAM / CMI Least recently used page replacement (3/3) Hardware oplossing 2: • In hardware voor elk van de n pages is er een n x n bitmatrix. • Initiële waarde is 0 • Als aan frame k wordt gerefereerd worden alle bits in rij k op 1 gezet en alle bits in kolom k op 0. • De rij met de kleinste waarde is het minst recent gebruikt. a b c d e f Waarom? L.V. de Zeeuw g h i j 0 1 2 3 2 1 0 3 2 3 Computersystemen 3 82 HOGESCHOOL ROTTERDAM / CMI LRU is software: Not Frequently Used (NFU) algoritme (1/5) Als er geen hardware voor LRU is kan worden gekozen voor het NFU algoritme: • Elke page kent een teller. • Bij elke klok interrupt worden alle pages in het geheugen onderzocht. • De waarde van R (0 of 1) wordt bij de teller opgeteld. • Bij een page fault wordt de page met de kleinste teller vervangen. L.V. de Zeeuw Computersystemen 3 83 HOGESCHOOL ROTTERDAM / CMI LRU in software: Modificatie van Not Frequently Used (NFU) algoritme (2/5) Probleem: NFU is niet in staat het verleden te vergeten. • Tellers die snel groot worden blokkeren onterecht bijbehorende pages voor verwijdering. L.V. de Zeeuw Computersystemen 3 84 HOGESCHOOL ROTTERDAM / CMI LRU in software: Modificatie van Not Frequently Used (NFU) algoritme (3/5) Door NFU aan te passen krijgen we een simulatie van LRU: Per klok puls: • Bits in de teller één bit naar rechts schuiven. • De waarde van R bij het linker bit van de teller opgetelllen. NB: de bits schuiven per klok puls van links naar rechts de teller binnen. Bij een page fault wordt de page met de laagste waarde van de teller verwijderd. L.V. de Zeeuw Computersystemen 3 85 HOGESCHOOL ROTTERDAM / CMI LRU in software: Modificatie van Not Frequently Used (NFU) algoritme (4/5) L.V. de Zeeuw Computersystemen 3 86 HOGESCHOOL ROTTERDAM / CMI LRU in software: Modificatie van Not Frequently Used (NFU) algoritme (5/5) • LRU in hardware is nauwkeuriger. LRU in software kan geen vroege of late referenties binnen één klok puls onderscheiden. • 8 bits betekent dat maximaal 8 klok pulsen terug kan worden gekeken. In de praktijk blijkt dit voldoende. L.V. de Zeeuw Computersystemen 3 87 HOGESCHOOL ROTTERDAM / CMI Ontwerpoverwegingen bij paging systemen • Het working set model • Lokale versus globale toewijzingsstrategieën • De grootte van een page • Implementatie-overwegingen L.V. de Zeeuw Computersystemen 3 88 HOGESCHOOL ROTTERDAM / CMI Het working set model (1/4) Demand paging • Bij het starten van een proces staan meestal geen pages behorende bij het proces in het geheugen. • Bij het starten van een proces zijn er dus veel page faults • Na enige tijd staan alle benodigde pages in het geheugen en neemt het aantal page faults af. L.V. de Zeeuw Computersystemen 3 89 HOGESCHOOL ROTTERDAM / CMI Het working set model (2/4) Locality of reference • Gedurende een willekeurige fase tijdens de uitvoering van een proces wordt aan een klein aantal pages gerefereerd. Working set • De verzameling pages die op een bepaald moment door het proces wordt gebruikt. L.V. de Zeeuw Computersystemen 3 90 HOGESCHOOL ROTTERDAM / CMI Het working set model (3/4) Trashing • Met spreekt over trashing indien een proces doorlopend veel page faults veroorzaakt. Working set model of prepaging • Het naar het geheugen brengen van de working set van een proces voordat het proces is gestart. L.V. de Zeeuw Computersystemen 3 91 HOGESCHOOL ROTTERDAM / CMI Het working set model (4/4) • Indien de working sets van alle processen samen het beschikbare geheugen overschrijdt zal trashing zich voordoen. • Indien het working set model wordt gebruikt dient het OS bij te houden welke pages tot de working set behoren. • Het LRU algoritmen kan hiervoor worden gebruikt: de meest recent gebruikte pages behoren tot de working set. L.V. de Zeeuw Computersystemen 3 92 HOGESCHOOL ROTTERDAM / CMI Lokale versus globale toewijzingsstrategieën (1/3) • Moet het page replacement algoritme alleen de working set van proces x in overweging nemen of ook working sets van andere processen? De page die het langst in het geheugen staat is de page met de laagste ‘leeftijd’. (LRU algoritme) L.V. de Zeeuw Computersystemen 3 93 HOGESCHOOL ROTTERDAM / CMI Lokale versus globale toewijzingsstrategieën (2/3) • Local page replacement – Alleen de eigen working set wordt bekeken • Global page replacement – De working sets van alle processen worden bekeken. Global page replacement werkt over het algemeen beter L.V. de Zeeuw Computersystemen 3 94 HOGESCHOOL ROTTERDAM / CMI Lokale versus globale toewijzingsstrategieën (3/3) De toewijzing is voor één proces en dient tussen de lijnen A en B te blijven. Page Fault Freqeuncy (PFF) • Het aantal page faults per tijds eenheid. De PFF daalt indien er meer pageframes beschikbaar zijn. Het PFF algoritme probeert de PFF binnen aanvaardbare grenzen te houden. L.V. de Zeeuw Computersystemen 3 Dit geldt voor LRU maar niet voor het FIFO algoritme (Belady’s onregelmatigheid) 95 HOGESCHOOL ROTTERDAM / CMI De grootte van een page (1/2) • De optimale page grootte vereist een zorgvuldige afweging van tegenstrijdige factoren. • Een willekeurig segment vult niet een geheel aantal pages: gemiddeld is de helft van de laatste page niet gevuld (interne fragmentatie). • Bij n segmenten in het geheugen en een page grootte van p bytes worden n x p/2 bytes niet benut: Beter kleine page grootte. • Bij een grote page omvang staat een groter ongebruikt deel van een programma in het geheugen. L.V. de Zeeuw Computersystemen 3 96 HOGESCHOOL ROTTERDAM / CMI De grootte van een page (2/2) • Een kleine page omvang vraagt een grote page tabel. • Het verplaatsen van een kleine page kost bijna evenveel tijd als het verplaatsen van een grote page (ivm disk seek en rotional delay). Vergelijk bijvoorbeeld het laden van: • 64 pages (512 bytes) x 15 ms / page = 960 ms • 4 pages (8192 bytes) x 25 ms / page = 100 ms L.V. de Zeeuw Computersystemen 3 97 HOGESCHOOL ROTTERDAM / CMI Implementatie-overwegingen • Backup voor een instructie: • Het vastzetten (locken) van pages in het geheugen. • Het delen van pages (shared pages) L.V. de Zeeuw Computersystemen 3 98 HOGESCHOOL ROTTERDAM / CMI Backup voor een instructie (1/2) • Indien een instructie een page fault veroorzaakt wordt de instructie tijdens de uitvoering afgebroken • Na het ophalen van de page moet de instructie worden herstart. • Auto in- of decrement instructie leveren extra problemen. •Drie geheugen referenties •De page fault kan optreden indien de program counter de waarde 1000,1002, of 1004 heeft… •Het OS kan niet vaststellen waar de instructie begint L.V. de Zeeuw Computersystemen 3 99 HOGESCHOOL ROTTERDAM / CMI Backup voor een instructie (2/2) • Een processor moet over extra registers beschikken voor een roll-back van de instructie die een page fault heeft veroorzaakt. • Waarde van de program counter kopiëren naar speciaal register voorafgaand aan een uit te voeren instructie. • Een register waarin wordt aangegeven met welke waarde een auto in- of decrement is uitgevoerd. L.V. de Zeeuw Computersystemen 3 100 HOGESCHOOL ROTTERDAM / CMI Het vastzetten (locken) van pages in het geheugen. • Bij I/O zal een proces data van een I/O device naar het interne geheugen kopieren (I/O buffer). • Bij I/O is het proces geblokkeerd. • Een ander proces wordt uitgevoerd. • Dit proces veroorzaakt een page fault • De kans bestaat dat de I/O buffer wordt verwijderd uit het geheugen. • Een DMA (Direct Memory Access) I/O device schrijft echter over de nieuw geladen page …. Een oplossing is de bij I/O betrokken pages te locken L.V. de Zeeuw Computersystemen 3 101 HOGESCHOOL ROTTERDAM / CMI Het delen van pages (shared pages) • Bij time sharings systemen zijn er vaak meerdere gebruikers met dezelfde programma’s bezig. • Het is efficiënter deze programma’s maar één keer te laden en de bijbehorende pages (read-only) gezamenlijk te gebruiken. • Data pages kunnen niet gezamenlijk worden gebruikt. • De scheduler moet gebruik makend van geschikte hardware ‘shared page aware’ zijn. L.V. de Zeeuw Computersystemen 3 102 HOGESCHOOL ROTTERDAM / CMI L.V. de Zeeuw Computersystemen 3 103