Title: Besturingssystemen / hoofdstuk 8

Naam: standard swapping
Wat is/doet het?: adresruimte vergroten
Hoe werkt het?: bij een tekort aan plaats wordt een proces naar de harde schijf geschreven
OS houdt een ready-queue bij om te weten welke processen in geuheugen of op swapruimte staan, dispatcher kijkt waar proces is en haalt van schijf indien nodig
Waar gebruikt?: memory management
Wanneer gebruikt?: geen of niet genoeg plaats vrij in geheugen
Voordelen: grotere adresruimte
Nadelen: - tijd nodig om in en uit te swappen
- bij swap-in wordt al het geheugen terug in main memory gezet, niet alleen de stukken die effectief gebruikt worden
- bij proces met DMA moet dubbele buffer in kernel memory bijgehouden worden als het uitgeswapt is
Alternatieven: modificaties van standaard swapping (niet altijd swappen, niet volledig proces...)
Pagina: 352
Figuur: 8.5

Naam: Variable partition memory allocation
Wat is/doet het?: geuheugen alloceren aan processen
Hoe werkt het?: - proces in een gat in het geheugen laden; er ontstaat een kleiner gat
- OS houdt een queue bij van processen die een gealloceerd worden (= queue bij scheduling algoritme)
Welke types zijn er?: first fit: eerste gat waarin het proces past
best fit: kleinste gat waarin het proces past
worst fit: grootste gat, dus het grootst mogelijke gat blijft over
first-fit en best-fit hebben beste combinatie tijd-geheugengebruk
Waar gebruikt?: memory allocation
Wanneer gebruikt?: inladen nieuw proces
Voordelen: contiguous memory allocation
Nadelen: fragmentatie
Alternatieven: partities van vaste grootte (zodat er geen te kleine gaten zijn, bv. 10 bytes )
noncontiguous memory allocation
Pagina: 356

Naam: compaction
Wat is/doet het?: externe fragmentatie minimaliseren
Hoe werkt het?: blokken gebruikt geheugen bij elkaar plaatsen en gaten samenvoegen
Waar gebruikt?: memory management
Wanneer gebruikt?: wanneer er teveel externe framentatie is
Voordelen: minder externe fragmentatie
Nadelen: alleen mogelijk bij dynamische relocatie
Alternatieven: segmentation of paging
Pagina: 358

Naam: Segmentation
Wat is/doet het?: geheugen opdelen om te alloceren
Hoe werkt het?: verschillende delen van een programma (stapel, code, libraries, functies) hebben een eigen segment. Adressen worden gespecfieerd als index binnen dit segment. Het fysieke adres wordt opgezocht in een tabel en verhoogd zoals bij dynamische relocatie
Waar gebruikt?: geheugenadressen gespecifieerd in assembly of geconstrueerd door compiler
Wanneer gebruikt?: geheugentoegang in zowel programmacode als uitvoering
Voordelen: code is opgedeeld => past in kleinere gaten => minder externe fragmentatie (maar nog wel bestaande)
sluit aan bij hoe programmeur denkt over geheugen
Alternatieven: paging, contiguous memory
Pagina: 358
Figuur: 8.8, 8.9

Naam: principe van paging
Wat is/doet het?: geheugen opdelen
Hoe werkt het?: - fysiek geheugen opgedeeld in frames van 4 tot 8 kiB, met evenveel logische pagina's
- adressen gespecifieerd met paginanummer en offset
- tabel gebruiken om fysiek adres op te zoeken
- pagina's zijn non-contiguous
Waar gebruikt?: memory management in de meeste hedendaagse OS's
Wanneer gebruikt?: geheugentoegang, specificatie van adressen
Voordelen: - geen externe fragmentatie
- onmogelijk om in adresruimte van een ander proces te schrijven (404 page not found)
- gemakkelijk geheugenblokken op secundair geheugen schrijven
Nadelen: nog wel interne fragementatie
Alternatieven: contiguous, segmentation
Pagina: 360
Figuur: 8.10 8.11 8.12 8.13

Naam: translation look-aside buffer
Wat is/doet het?: hardware om pagina-opzoekingen te versnellen
Hoe werkt het?: bij opzoeken van een adres wordt eerst gezocht in een TLB die 32 tot 1024 entries bevat (soms meerdere).
Welke types zijn er?: - soms meerdere levels van TLB
- sommige hebben address space identifier om te controleren of het juiste proces aan de gevraagde pagina toegang mag
Waar gebruikt?: paging
Wanneer gebruikt?: opzoeken van adressen
Voordelen: snellere opzoektijd, zeer kleine miss ratio
Pagina: 367
Figuur: 8.14

Naam: memory protection bij paging
Wat is/doet het?: zorgen dat een proces niet aan de verkeerde pagina'skomt
Hoe werkt het?: valid-invalid bit per pagina: valid <=> in logische adresruimte van proces
Waar gebruikt?: paging
Wanneer gebruikt?: memory access
Nadelen: bij interne fragmentatie zijn sommige ongebruikte geheugenadressen toch valid
Alternatieven: page table length register om te checken of paginanummer erbinnen valt
Pagina: 369
Figuur: 3.15

Naam: shared pages
Wat is/doet het?: geheugen delen tussen processen
Hoe werkt het?: pagina's van verschillende processen wijzen naar hetzelfde frame
Welke types zijn er?: - shared code (reentrant code)
- shared variables
Waar gebruikt?: processen met dezelde code of gedeelde data
Wanneer gebruikt?: meerdere procesen die geheugen kunne delen
Voordelen: minder geheugengebruik
Pagina: 370
Figuur: 8.16

Naam: hierarchical paging
Wat is/doet het?: paginatabel opslaan en paginanummers opdelen
Hoe werkt het?: pagina's opgedeeld in outer en inner page, outer page table wijst dan naar een aparte inner page table
Welke types zijn er?: meerdere niveaus van paging, grootte van outer/inner page is variabel
Waar gebruikt?: page table
Wanneer gebruikt?: opzoeken adres
Voordelen: - niet alle logisch beschrijfbare adressen moeten in geheugen worden opgeslagen
- page table moet niet contiguous worden opgeslagen
Nadelen: langere opzoektijd
Alternatieven: hashed paging, inverted tables
Pagina: 8.6
Figuur: 8.17 8.18

Naam: hashed page tables
Wat is/doet het?: page table opslaan
Hoe werkt het?: hasjtabel
Waar gebruikt?: opslaan page tabel van een proces
Wanneer gebruikt?: memory access
Voordelen: geen contiguous tabel
Nadelen: opzoeken in gelinkte lijst bij separate chaining
Alternatieven: mutilevel paging, inverted page tables
Pagina: 374
Figuur: 8.19

Naam: inverted page table
Wat is/doet het?: page table opslaan
Hoe werkt het?: in plaats van 1 entry per logisch adres is er 1 entry per fysisch frame
Welke types zijn er?: standaardimplementatie
hashtabel
Waar gebruikt?: page tabel van elk proces opslaan
Wanneer gebruikt?: memory access
Voordelen: minimaal geheugengebruik
Nadelen: lineair zoeken => combineren met hasjtabel
gedeeld geheugen is moeilijk te implementeren want per fysisch adres wordt hoogstens 1 virtueel adres opgeslagen (dus geen 2 vrituele adressen voor 2 processen)
Alternatieven: hashtable, multilevel paging
Pagina: 375
Figuur: 8.20