8.4 - Paging (p.364)
- Paging = Memory-Management methode waarbij het geheugen van een process niet aaneengesloten hoeft te zijn.
- Vermijden van external fragmentation en compaction.
- Vroeger was er paging hardware, nu is het meer en meer geintergreerd in het OS.
- Internal fragmentation komt wel voor als blokken te groot zijn voor de data die hierin moet.
- Een regel zou zijn een halve page internal fragmentation per process, dus een kleinere page grote gewenst zijn.
- Alleen hebben pages ook overhead, plus disk IO is meestal beter met grote hoeveelheden.
Basic Method
- Frames = Blokken van een vaste grote van het physical memory.
- Pages = Blokken van een vaste grote van het logical memory.
- De grote wordt gedefinieerd door de hardware. (is meestal een meervoud van 2)
- Dit maakt omzetting van een logical address naar page number en page offset makkelijker.
- Wanneer een process moet worden geladen worden de desbetreffende pages in frames geladen vanuit de backing store of file system.
- De backing store bestaat uit blokken van dezelfde grote als de memory frames.
- Page Number (p) = Duid de page aan.
- Page Offset (d) = Duid de locatie in de page aan.
- Page Table = Bewaart de page numbers als een index in deze tabel, een voor elk process.
- Binaire opstelling page number/offset:
- [Page number bits|page offset bits] = [p|d]
- ex. page size van 32 bytes (
2^5
)(d) , physical memory van 1024 (2^10
) bytes geeft dus max 1024/32 = 32 pages (2^5)
(p)
- Dus wordt de binaire representatie van een locatie: [00000|00000]
- EX: locatie page 4, ofset 30 = [00100|11100] = physical location
(4*32)+30=158
- NB. Afhankelijk van de waarde van de base/relocation register komt dat hier nog bij. 1
- Werkwijze door processen:
- Process komt systeem binnen.
- De grote in pages wordt doorgegeven.
- Systeem kijkt of ook zoveel frames beschikbaar zijn.
- Het eerste page, wordt in de eerste frame gestopt. etc.
- Er wordt een page table opgesteld waarin staat welk nummer page in welk frame staat
- Page 0 in frame 5, page 1 in frame 6, page 2 in frame 1, page 3 in frame 2 etc.
- Het programma ziet het als een enkele aaneengesloten stuk geheugen, terwijl dit dus niet is.
- Mapping wordt geregeld door het OS en is niet zichtbaar bij het process/user.
- Frame Table = Tabel waarin staat welke frames er aan welk process zijn toegekend, hoeveel er beschikbaar zijn etc.
Hardware Support
- Een page table kan in speciale registers.
- Page Table Base Register (PTBR) = Page table bewaard in main memory.
- Kostbaar, want er moet twee keer worden gekeken in de memory.
- 1x voor de geheugenlocatie in de table
- 1x voor het ophalen van de byte.
- Translaton Look-Aside Buffer (TLB) = Associative, hardware, high speed memory vergelijking van de physical en virtual memory. (page table)
- Nadeel: Is duur, en klein.
- Hoe werkt het?:
- De TLB bestaat uit maar een aantal page-table entries.
- Een logical address is gegenereerd door de CPU.
- De TLB gaat het logische address vergelijken met zijn tabel, als een hit vindt wordt het frame number direct gebruikt om geheugen op te halen.
- Bij een miss wordt een referentie tussen het frame en page gemaakt.
- DE gegevens worden opgeslagen voor de volgende keer.
- Wanneer de TLB vol zit moet het OS bepalen welke referentie eruit moet.
- Via LRU (zie 9.4) of random
- Address-space identiefiers (ASIDs) = Opgeslagen door TLB, duid het process uniek aan. Het zorgt ervoor dat het process dat het opvraagt ook eigenaar is van de page.
- Wanneer de TLB geen meerdere ASIDs ondersteund, moet deze worden gewist (flushed) bij elk process.
- Hit-ratio = Het percentage keren dat een zeker page number gevonden wordt in de TLB.
- Effective memory Access time (EMAT) = Gemiddelde tijd het duurt om het geheugen te benaderen, met de hit/miss ratio meegenomen
- EX. 80% hit, 20% miss. Hit tijd is 120ns, Miss tijd is 220ns
- EX.
EMAT = (hit% * hittime)+(miss% * misstime) = (0.80 * 120) + (0.2 * 220) = 140 ns
Protection
- Protection bits bijhorend aan een frame.
- Opgeslagen in de page table.
- Defenieert Read-Write of Read only.
- Bij een write naar een read-only komt er een memort-protect violation hardware trap.
- Valid-invalid bit = Bit in de page table, geeft aan of de geassocieerde page ook een legal/valid page is.
- Page Table Length Register = Hadware register dat de lengte van een page table aangeeft, en een error trap stuurt wanneer een page access hierbuiten valt.
Sharing Pages
- Delen van common code.
- Reentrant code/pure code = Code dat zichzelf niet aanpast, maar zijn gegevens van opslaat op een andere data page.
1. Misschien zeggen ze op de toets wel, ah page 0 begint op address 4096 dan komt dat er dus nog bij. ↩