Geheugenbeheer ICT Infrastructuren 2 december 2013 Doelen van geheugenbeheer • • • • • Reloca>e (flexibel gebruik van geheugen) Bescherming Gedeeld/gemeenschappelijk geheugen Logische indeling van procesonderdelen Fysieke plaatsing in RAM Eenvoudig geheugenbeheer • OS gebruikt een klein stukje geheugen • rest is voor gewone processen OS 0 1000 vrij Eenvoudig geheugenbeheer • OS gebruikt een klein stukje geheugen • rest is voor gewone processen – processen beginnen op adres 1000 – waar plaats je een tweede proces? OS 0 1000 proces 1 vrij Reloca>e • programma aanpassen aan beginadres • OS moet adressen vertalen • bestand bevat nodige informa>e Van broncode naar proces bron-­‐ code compiler assembly code Stallings, appendix 7A assembler object-­‐ bestand symbool-­‐ tabel Van broncode naar proces object-­‐ bestand sta>c library object-­‐ bestand object-­‐ bestand linker / binder dynamic library load module Van broncode naar proces load module dynamic library dynamic library loader RAM Geheugenbeheer voor meer dan één proces • Processen afschermen: geen vreemde gegevens lezen of verknoeien • Gedeeld geheugen: samenwerkende processen kunnen gemeenschappelijke gegevens hebben – b.v. programmacode – gemeenschappelijke variabelen (op verzoek) Logische organisa>e van RAM • verschillende soorten gegevens in RAM: – programmacode – constanten – variabelen – stapel • OS kan specifieker beschermen Fysieke plaatsing in RAM • programma en data vaak te groot voor RAM • trucs om RAM groter te laten lijken: – logisch adres ≠ fysisch adres – logisch = wat de programmeur/CPU ziet – fysiek = wat de RAM-­‐chip ziet • Memory Management Unit vertaalt logisch ! fysiek Memory Management Unit Processor bus Geheugen Memory Management Unit lezen/schrijven databus Processor Geheugen adresbus verkeerd adres Memory Management Unit lezen/schrijven databus Processor Geheugen logisch adr MMU fysiek adr logisch of fysiek adres verkeerd fysiek adres verkeerd Technieken voor logische adressen • • • • Par>>onering Paging Segmenta>e Virtueel geheugen Par>>onering • verouderd, basis van andere technieken • geheugen verdeeld in vaste blokken • elk proces krijgt één blok • logisch adres = adres binnen blok • fysiek adres = logisch adres + = beginadres van blok proces 6 7FFF proces 5 7000 proces 4 6000 proces 3 5000 proces 2 3000 proces 1 2000 proces 0 1000 OS 0 Fysiek geheugen / RAM 4000 0 Logisch geheugen / RAM FFF Partitionering Als proces 1 actief is: fysiek RAM dat het proces niet kan gebruiken proces 6 7FFF proces 5 7000 proces 4 6000 proces 3 5000 proces 2 3000 proces 1 2000 proces 0 1000 OS 0 Fysiek geheugen / RAM 4000 0 Logisch geheugen / RAM FFF Na een process switch naar proces 2: proces mag dit logische adres niet gebruiken Par>>onering • nadeel: kleine en grote processen krijgen evenveel geheugen (interne fragmenta>e) • variant: verschillend grote blokken • nieuw probleem: veel kleine processen ! inefficiënt twee grote processen ! wachten Dynamische par>>onering • OS maakt blok aan als proces start • bij einde ontstaat gat (externe fragmenta>e) • verschillende grooces – welk gat gebruiken voor nieuw proces? – “first / next / best fit” drie opdrachten uit Stallings • Paging: hoofdstuk 7.3, figuur 7.9 en 7.12a • Segmenta>e: hoofdstuk 7.4, figuur 7.12b • Virtueel geheugen: hoofdstuk 8.1: pagina 361–364, 367, figuur 8.4 Paging • geheugen verdelen in kleine blokken van vaste grooce – frame = fysiek geheugenblok – pagina = logisch geheugenblok • proces gebruikt 1 of meer pagina’s • fysieke adressen van pagina’s hoeven niet op elkaar te volgen Voorbeeld: Paging pagina 0 van proces C is in frame 7 B stopt D start Paging: Berekening van fysiek adres • hogere bits van logisch adres: paginanummer • lagere bits: offset binnen de pagina Paging: Berekening van fysiek adres Virtual Address Page # Physical Address Frame # Offset Offset Register n bits Page Table Ptr Page Table m bits + Page# Offset Page Frame Frame # Program Paging Mechanism Figure 8.3 Address Translation in a Paging System Main Memory Segmenta>e • geheugen verdelen in blokken van variabele grooce – segment bevat een stuk programmacode of gegevens voor één proces • lijkt op dynamisch par>>oneren – maar proces kan meerdere segmenten hebben • segmencabel ≈ paginatabel + Segmenta>e • programmeur ziet segmenten • betere bescherming – read-­‐only segmenten – execute-­‐only segmenten – strengere controle op verkeerd adres • geen interne fragmenta>e • wel externe fragmenta>e Segmenta>e: Berekening van fysiek adres • hogere bits van logisch adres: segmentnr • lagere bits: offset binnen het segment addi>e offset ≥ lengte? Segmentatie 3:178E 1:0 1:1072 4470 54E2 3:0 segment 1 3E76 0:9A6 26E8 0:0 19C8 segment 3 236E 2:7B2 Logisch geheugen / RAM segment 0 105E 2:0 segment 2 7FFF 3:178E segment 3 3:0 1:0 2:7B2 segment 2 2:0 segment 1 0:9A6 Logisch geheugen / RAM 0:0 segment 0 1:1072 8AC 0 Fysiek geheugen / RAM fysiek RAM dat het proces niet kan gebruiken 7FFF 54E2 4470 3E76 26E8 236E 19C8 105E 8AC 0 Fysiek geheugen / RAM proces mag dit logische adres niet gebruiken Virtueel geheugen: Idee • Localiteit: proces gebruikt niet alle pagina’s/segmenten tegelijk • ⇒ ongebruikte delen hoeven niet in hoofdgeheugen te staan! Localiteit Virtueel geheugen: Uitwerking • stukjes van proces: – sommige in hoofdgeheugen – andere op harde schijf • als proces stukje op harde schijf gebruikt: – MMU genereert interrupt – OS reserveert nieuw frame/segment – OS laadt stukje daarheen • extra informa>e in pagina-­‐ of segmencabel FFFF F000 E000 D000 C000 B000 A000 9000 8000 7000 3000 3000 6000 2000 2000 5000 1000 1000 Logisch geheugen / RAM 4000 0 0 Virtueel RAM met paginering 3FFF Fysiek geheugen / RAM fysiek RAM dat het proces niet kan gebruiken proces mag dit logische adres niet gebruiken als het proces dit adres gebruikt, regelt het OS fysiek geheugen hiervoor Virtueel geheugen: Voordelen • meer processen • grotere processen • snellere start van processen • efficiënt! (meestal...) Meer details over... Paginatabellen • paginatabel kan erg groot worden • idee: paginatabel in virtueel geheugen • twee niveaus • transla>on lookaside buffer = cache Meer details over... omgekeerde paginatabel • andere oplossing voor grote paginatabel • klassiek: logisch → fysiek adres • omgekeerd: fysiek → logisch adres – één entry per fysiek frame – grooce van paginatabel in verhouding met fysiek geheugen – hash-­‐func>e voor snelle vertaling logisch → fysiek Virtueel geheugen met segmenten • minder gebruikelijk, ook mogelijk • zelfde principes als bij paging, behalve segmentgrooce Alles-­‐in-­‐één-­‐pakket • segmenta>e+paging+virtueel geheugen • combineert voordelen van beide kanten • nadeel: ingewikkelde berekening van fysiek adres Berekening van fysiek adres Samenvaong • Doelen van geheugenbeheer: Wie weet ze nog? • meer flexibiliteit door logisch/fysiek geheugen • geheugen groter laten lijken: virtueel RAM – werkt vanwege localiteit