8.3 - Contiguous Memory Allocation
- Geheugen is opgedeeld in een gedeelte voor het OS en een gedeelte voor de user processen.
- Contiguous Memory Allocation = Elk process heeft zijn eigen aaneengesloten stuk geheugen.
Memory Mapping and Protection
- Gebruik van de relocation en limit zorgen voor een flexibele invulling van het geheugen.
- Transient = Het komt en gaat wanneer het nodig is. (Ex. transient os code)
- Device driver code kan worden weggehaald uit het geheugen wanneer het device niet veel wordt gebruikt.
Memory Allocation
- Multiple Partition Method = Verdelen van het geheugen in partities met een vaste grote. Waarin een partitie maar 1 process mag bezitten.
- Graad van multiprogramming is gebonden aan het aantal partities.
- Variable Partition Scheme = Het OS beheert een tabel waarin staat aangegeven welke delen van het geheugen beschikbaar zijn en welke in gebruik zijn.
- Hole = Een groot blok van beschikbaar geheugen.
- Wanneer processen in het systeem komen worden ze in de input queue geplaatst. Bij het plaatsen van het process in het geheugen neemt het OS mee hoeveel geheugen elk process nodig heeft.
- Processen worden in het geheugen geplaatst totdat de requirements van een process niet meer kan worden gehaald. (aka er is geen hole groot genoeg meer).
- Het process moet dan wachten tot er een groot genoeg hole beschikbaar komt, een process verder in de queue met kleinere requirements gaat meestal dan voor.
- Na verloop van tijd bestaat het geheugen uit meerdere holes van verschillende grotes.
- Een te grote hole is opgedeeld in 2en. Een voor het process, en de andere leeft verder als een kleiner hole.
- Als een process klaar is wordt de ruimte vrijgegeven, en deze ruimte wordt samengevoegt met een eventeueel hole tegen dat process aan om een grotere hole te vormen.
- Het passen van een process in een hole kan op verschillende manieren:
- First Fit = Zet een process in het hole dat het grootste genoeg is, gekeken vanaf het begin of de huidige locatie.
- Best Fit = Zet een process in het hole dat het dichtste in de buurt komt van de groote van het process. Zorgt voor het kleinste "leftover" hole. Veel zoekwerk.
- Worst Fit = Zet het process in de grootste beschikbare hole. Zorgt voor het grootste "leftover" hole. Veel zoekwerk.
- Simulaties hebben gebleken dat first fit en best fit maken het meest optimaal gebruik van de opslag (zowel in snelheid) dan worst fit.
Fragmentation
- External Fragmentation = Wanneer verschillende processen geheugen vrijgeven, welke niet achter elkaar liggen.
- Hierdoor ontstaan niet-aaneengesloten stukken met vrije ruimte.
- [1111][22][333][44][5] --> 2+4 zijn klaar --> [1111][..][333][..][5] --> 2x2 plekken vrij.
- Niet genoeg voor een process dat 4 aaneengesloten locaties nodig heeft.
- 50-percent rule = Bij 80 toegewezen blokken geheugen, zijn er 40 die op gaan aan fragmentatie. (dus totaal 120 gebruikt)
- Wanneer een hole erg klein is, kan de overhead voor het bijhouden van de hole groter zijn dan de groote van het hole.
- Internal Fragmentation = Wanneer het geheugen is opgedeeld in blokken van een vaste grote, kan het process alleen hele blokken innemen. Wanneer het process dan een half blok vult, wordt de andere helft gezien als internal fragmentation
- Compaction = Alle vrije stukken geheugen achter elkaar plaatsen, zodat een groot hole ontstaat.
- Kostbaar om het allemaal bijelkaar te plakken vanaf het begin van het geheugen, met de vrije ruimte aan het eind.
- Oplossing: Toestaan om processen non-contingous te laten plaatsen in het geheugen. Dus plaatsen waar ruimte is.