C1 - martenserver.com

advertisement
1
C1
Vraag A: Definieer het begrip deadlock. Aan welke voorwaarden moet voldaan zijn opdat een
deadlock zou kunnen optreden?
Een deadlock is een verzameling processen waarin elk proces van de verzameling wacht op
een gebeurtenis, die alleen een ander proces in de verzameling kan veroorzaken. Omdat alle
processen aan het wachten zijn kan geen enkel proces zo’n gebeurtenis veroorzaken.
Voorwaarden voor een deadlock:
 Wederzijdse uitsluiting: het systeem bevat bronnen die slechts door één proces
kunnen gebruikt worden.
 Vasthouden en wachten: een proces mag toegewezen voorzieningen vasthouden
terwijl het wacht op de toewijzing van andere voorzieningen
 Geen preëmptieve verwijderingen: Een bron kan niet gedwongen verwijderd
worden van een proces dat de bron vasthoudt. Alleen het proces dat de bron vasthoudt
kan vrijwillig de bron afstaan.
 Cyclisch wachten: er bestaat een gesloten keten van processen waarin elk proces ten
minste één voorziening vasthoudt die het volgende proces in de keten nodig heeft.
Vraag B: Bespreek de strategie detectie en opheffing van deadlocks. Behandel zowel het
aspect detectie als het aspect opheffing. Verduidelijk zowel hulpmiddelen uit de grafentheorie
als numerieke technieken die hierbij van dienst kunnen zijn. Bespreek eveneens de praktische
implementeerbaarheid van deze strategie.
Detectie:
Benaderingen voor het detecteren van deadlocks beperken noch de toegang tot voorzieningen,
noch de acties van processen: indien mogelijk wordt altijd voldaan aan alle verzoeken van
processen om bronnen. Het deadlockprobleem wordt maar aangepakt als het zich effectief
voordoet. Het is echter niet zo eenvoudig deadlocks te detecteren. Het proces dat zich in een
deadlock bevindt weet dit immers zelf niet en ook het besturingssysteem weet dit niet.
Resourcegraaf:
Bij elke toestand van het systeem kunnen deadlocks pas worden vastgesteld door analyse van
de resourcegraaf. Een resourcegraaf toont de aanvragen en toewijzingen van processen aan
bronnen bij elke toestand van het systeem. In principe moet na elke aanvraag de resourcegraaf
geanalyseerd worden.
 Indien van elke bron maar één element beschikbaar is => wacht-op-graaf: een mogen
geen cycli voorkomen, anders DEADLOCK!
 Indien bronnen meerdere elementen beschikbaar hebben => graafreductie: een
resourcegraaf kan worden gereduceerd indien er tenminste één procesknooppunt
bestaat waarvoor alle uitgaande pijlen kunnen worden omgedraaid (= alle gewenste
bronnen kunnen worden toegewezen) Indien volledige reductie mogelijk is => geen
deadlocksituatie
Numerieke reductiemethoden:
Worden uitgevoerd mbv vectoren en matrices
Vectoren:
aanwezige bronnen: totaal aantal elementen van elke bron
beschikbare bronnen: aantal vrije elementen van elke bron
Matrices:
Toewijzingsmatrix: geeft voor elk proces i hoeveel exemplaren van elke bron j reeds
zijn toegewezen
Aanvraagmatrix: geeft voor elk proces i hoeveel exemplaren het proces nog wil van
elke bron j.
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
1
2
Algoritme voor het detecteren van deadlocks:
Tijdens de uitvoering van het algoritme worden processen gemarkeerd om aan te geven dat ze
geen last hebben van een deadlock.
1) zoek een niet gemarkeerd proces i waarvoor geldt dat alle elementen op de i-de rij van
A kleiner zijn dan de overeenkomstige elementen van B. Indien zo’n proces er niet is
stopt het algoritme. Deze stap zoekt een proces op waaraan kan worden voldaan vanuit
de momenteel beschikbare bronnen, en dat tot het einde kan uitgevoerd worden.
2) tel alle elementen van de i-de rij van T op bij de overeenkomstige elementen van B.
Het geselecteerde proces wordt gedraaid tot het klaar is, en geeft alle bronnen, die het
in zijn bezit heeft, terug. Het proces wordt gemarkeerd als afgelopen.
Op het einde van het algoritme geven ongemarkeerde processen aan dat ze in een deadlock
zijn.
Opheffen
Het controleren op deadlocks vraagt veel overhead en bovendien is het probleem er niet mee
opgelost. Er zijn een aantal manieren om deadlocks op te heffen, maar bij elke methode gaat
informatie verloren.
 Elk proces in een deadlock, één voor één afbreken, detectie algoritme toepassen tot
alle deadlocks zijn verdwenen
 Tijdens het uitvoeren van processen checkpoints (volledige procesbeeld) opslaan in
een bestand. Bij deadlock teruggaan naar vorige toestand zonder deadlock (rollback).
Het werk dat na de checkpoint is uitgevoerd gaat verloren.
 Preëmptieve verwijdering van bronnen tot wanneer de deadlock niet meer bestaat.
Praktische implementeerbaarheid:
Veel overhead!
Vraag C: Vermeld 3 andere benaderingen om met deadlocks om te gaan. Geef hiervan telkens
een korte situering, zonder echter op details in te gaan.
 Deadlocks vermijden door aanvragen van bronnen te analyseren en eventueel te
vermijden.
1) Toestandsdiagrammen: veilige toestanden
2) Claimgrafen
3) Resourcetrajecten
 Deadlocks onmogelijk maken door een van de 4 voorwaarden uit te sluiten
1) resources exclusief toegewezen aan één proces, beschermd door wederzijdse
uitsluiting
2) processen houden resources vast en wachten op andere resources
3) preëmptieve verwijdering van resources
4) cyclisch wachten: cyclus keten in de resourcegraaf
 Kans op deadlocks minimaliseren. Het volledig uitsluiten van deadlocks vraagt
meestal teveel overhead.
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
2
3
C2
Vraag A: Verduidelijk aan de hand van resourcetrajecten het verschil tussen de strategieën
vermijden van deadlocks en onmogelijk maken van deadlocks.
Vermijden
Onmogelijk maken
Verticale as: Voortgang van proces Q
Horizontale as: Voortgang van proces P
Dikke zwarte lijnen: Het pad dat uiteindelijk gevolgd wordt door de processor. (Omwille van
proceswisselingen kan het pad niet gewoon horizontaal of verticaal lopen)
De extra horizontale en verticale lijnen duiden op het aanvragen en vrijgeven van een bron.
De gearceerde gebieden duiden de momenten aan waarop beide processen dezelfde bronnen
nodig hebben. Door wederzijdse uitsluiting kunnen deze gebieden niet betreden worden.
Vermijden van Deadlocks:
De scheduler beslist om het zwarte gebied niet te betreden = de scheduler verwerpt het
verzoek van Q om B zolang A aan P toegewezen is.
Onmogelijk maken van Deadlocks:
Een proces geeft zijn bron vrij alvorens een andere bron te vragen. Deadlocks zijn
onmogelijk.
Vraag B: Bespreek in detail de strategie vermijden van deadlocks. Verduidelijk zowel
hulpmiddelen uit de grafentheorie als numerieke technieken die hierbij van dienst kunnen zijn.
Bespreek eveneens de praktische implementeerbaarheid van deze strategie.
Voor het ontwerp van het algoritme voor vermijding van deadlocks hebben we claimgrafen
nodig. Claimgrafen zijn een bijzonder soort resourcegrafen, die ook de potentiële aanvragen
weergeven. Deze extra informatie zal het besturingssysteem nodig hebben om te weten welke
bronnen een proces in de toekomst zal aanvragen en gebruiken.
Het belangrijkste algoritme voor het vermijden van deadlocks is gebaseerd op het begrip
veilige toestand. Dit is een toestand waarin het besturingssysteem bronnen kan toewijzen
zonder te moeten vrezen voor deadlocks.
Om te bepalen of een toestand veilig is moet het besturingssysteem, behalve de reeds
toegewezen bronnen, ook weten wat elk proces in de toekomst zou kunnen aanvragen. Deze
informatie zit precies vervat in de claimgraaf op dat ogenblik. Een toestand is veilig indien de
claimgraaf volledig gereduceerd kan worden.
Uit deze concepten kan de volgende praktische benadering voor het vermijden van deadlocks
afgeleid worden:
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
3
4
Verzoekt een proces om een bijkomende voorziening die beschikbaar is, veronderstel dan
fictief dat aan dit verzoek voldaan wordt en pas de claimgraaf aan. Controleer vervolgens via
graafreductie of het resultaat een veilige toestand is. Is het resultaat een veilige toestand,
voldoe dan ook effectief aan het verzoek. Indien niet, blokkeer het proces totdat veilig aan het
verzoek voldaan kan worden. (= het bankiersalgoritme)
Numerieke technieken:
Worden uitgevoerd mbv vectoren en matrices
Vectoren:
aanwezige bronnen: totaal aantal elementen van elke bron
beschikbare bronnen: aantal vrije elementen van elke bron
Matrices:
Toewijzingsmatrix: geeft voor elk proces i hoeveel exemplaren van elke bron j reeds
zijn toegewezen
Aanvraagmatrix: geeft voor elk proces i hoeveel exemplaren het proces nog wil van
elke bron j.
1) Zoek in de aanvraagmatrix A een rij waarvan alle elementen kleiner of gelijk zijn dan
de corresponderende elementen in B. Indien deze rij niet kan gevonden worden dan
komt het systeem bij een maximaal gebruik van bronnen uiteindelijk in een deadlock,
omdat geen van de processen kan worden afgemaakt.
2) Tel de overeenkomstige elementen van de toewijzingsmatrix T op bij B, en markeer
het proces als beëindigd
3) Herhaal stappen 1 en 2 tot alle processen gemarkeerd zijn als beëindigd. Is dit niet
mogelijk, dan is de oorspronkelijke toestand onveilig.
Praktische implementeerbaarheid:
Dit wordt in praktijk in geen enkel besturingssysteem gebruikt omdat het een onhaalbare zaak
is om van elk proces a priori te weten te komen welke bronnen het ooit nodig zal hebben
Vraag C: Bespreek de alternatieve mogelijkheden in de strategie onmogelijk maken van
deadlocks. Behandel telkens in hoeverre deze praktisch kunnen verwezenlijkt worden.
Het optreden van deadlocks is onmogelijk indien aan verzoeken om bronnen en aan de
gelijktijdigheid van uitvoering van processen zondanige beperkingen worden opgelegd zodat
aan één van de vier noodzakelijke voorwaarden voor het optreden van deadlocks niet wordt
voldaan.
1) Wederzijdse uitsluiting vermijden: Geen wederzijdse uitsluiting implementeren is in
praktijk niet mogelijk. Indien bronnen niet exclusief zouden worden toegewezen, zou
er chaos ontstaan.
2) Vasthouden en wachten vermijden: deadlocks kunnen onmogelijk gemaakt worden
door te voorkomen dat processen, die één of ander bron in bezit hebben, op nog meer
bronnen wachten. Dit kan bereikt worden door te eisen dat alle bronnen tegelijk
worden aangevraagd, voor de uitvoering. Indien een van de bronnen niet beschikbaar
is, wordt geen enkele bron toegewezen en moet het proces wachten.
Probleem: bronnen moeten a priori bekend zijn & uithongering mogelijk.
Oplossing: proces bij elke aanvraag van een nieuwe bron verplichten om de bronnen,
die het reeds in bezit heeft, vrij te geven.
Of twee-fasen-lock protocol:
fase 1: Groeifase: alle benodigde bronnen afgaan en op slot proberen zetten. Als er een
niet op slot kan gezet worden, alles vrijgeven en opnieuw beginnen
fase 2: Krimpfase: wijziging aanbrengen en slot verwijderen
Kan niet voor alle processen gerealiseerd worden
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
4
5
3) Preëmptieve verwijdering van bronnen: Het verwijderen van een bron dat door een
proces wordt vastgehouden is over het algemeen nog moeilijker te realiseren. De bron
kan weggehaald worden op voorwaarde dat de toestand van de bron gemakkelijk is op
te slaan. Bij printers en tapedrives is dit bijvoorbeeld niet mogelijk. Indien de bron is
toegewezen aan een proces dat niet geblokkeerd is, zijn aanvullende checkpoint en
rollbackprocedures vereist.
4) Cyclisch wachten doorbreken: Dit is de enigste mogelijkheid die in praktijk
enigszins haalbaar is. De meest voor de hand liggende oplossing is een globale
nummering invoeren voor alle bronnen. Processen kunnen op iedere moment een
nieuwe bron aanvragen, maar de aanvragen moeten in volgorde van de nummering
van de bronnen gebeuren. Bovendien moeten verschillende instanties van eenzelfde
brontype in één keer aangevraagd worden. Met deze regels kan een resourcegraaf en
een wacht-op-graaf nooit een cyclus bevatten. Alle processen worden sequentieel
afgewerkt.
Echter INEFFICIËNT: processen worden vertraagd en onnodig de toegang geweigerd
tot bronnen. Dezelfde volgorde van bronnen voor elk proces is bovendien zeker niet
optimaal.
Vraag D: Vermeld twee andere benaderingen om met deadlocks om te gaan. Geef hiervan
telkens een korte situering, zonder op details in te gaan.
1) Detecteren en opheffen van deadlocks (zie C1)
2) Kans op deadlocks minimaliseren.
C3
Vraag A: Vul op de figuur hieronder de benaming van de zeven modellen die in een
besturingssysteem voor geheugenbeheer worden aangewend.
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
5
6
Vraag B: Welke technologische stap wordt aangeduid door de stippellijn op de figuur. Hoe
wordt deze stap gerealiseerd? Bespreek voor een nadelen van deze evolutie.
Technologische stap:
Om externe en interne fragmentatie zoveel mogelijk te beperken kunnen we proberen de
processen op te splitsen in stukjes die vrije ruimten in het geheugen kunnen opvullen. Het
geheugen wordt dus niet meer als een aaneengesloten blok in het geheugen geladen.
Hoe realiseren?
1) Paginering ~ vaste partitionering:
 Het hoofdgeheugen in frames verdeelt = stukken met gelijke, relatief kleine, grootte
 Procesbeelden in pagina’s verdeelt ter grootte van frames.
Het besturingssysteem houdt een paginatabel bij voor elk proces. Deze bevat de framelocatie
voor elke pagina van het proces.
2) Segmentatie ~ dynamische partitionering
Programma’s worden verdeelt in blokken, echter niet met gelijke grootte.
Het besturingssysteem houdt een segmenttabel bij voor elk proces, die de fysieke locatie van
elk segment van het proces bevat.
Voor- en nadelen:
Voordelen: - interne (paginering) en externe (segmentatie) fragmentatie kleiner
- segmentatie vergemakkelijkt sharing
- meer processen in geheugen
Nadelen:
- ingewikkeldere adresvertalingen
Vraag C: Waarom is adresvertaling noodzakelijk? Hoe en door wie wordt adresvertaling
gerealiseerd, in het kader van geheugenmodellen 3 en 4.
Een proces kan in de loop van de tijd verschillende partities bezetten. De locaties waarnaar
een proces verwijst zijn dus niet vast. Daarom wordt onderscheidt gemaakt tussen:
 Logische adressen ~ het geheugenbeeld dat de programmeur heeft: verwijzingen naar
geheugenlocaties, onafhankelijk van de huidige toewijzing van het proces aan het
geheugen. Speciaal geval zijn de relatieve adressen. Hierbij worden alle adressen
uitgedrukt tov één bepaald punt, meestal het begin van het programma
 Fysieke adressen ~ het geheugenbeeld dat het besturingssysteem & de processor heeft:
Dit zijn de werkelijke locaties in het hoofdgeheugen.
Logische adressen moeten vertaald worden in fysieke adressen vooraleer geheugentoegang
mogelijk is. Deze omzetting wordt geregeld door het memory management unit op elk
moment dat een instructie wordt uitgevoerd.
Bij paginering:
Het besturingssysteem houdt een paginatabel bij voor elk proces. Elke ingang in de
paginatabel bevat het nummer van het frame in het hoofdgeheugen dat de corresponderende
pagina bevat.
Alle pagina hebben een gelijke grootte die een macht is van 2 => logisch verband tussen
logische en relatieve adressen.
Logisch adres = Relatief adres = paginanummer + relatieve positie binnen pagina
MMU: - linker bits van logisch adres = paginnanummer
- paginanummer is index procespaginatabel => framenummer
- fysiek adres = framenummer en relatieve positie samenvoegen
=> globale actie: tijdens instructiecyclus paginanummer veranderen in framenummer.
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
6
7
Bij segmentatie:
Het besturingssysteem houdt een segmenttabel bij voor elk proces, die de fysieke locatie van
elk segment van het proces bevat.
Segmenten hebben verschillende groottes => geen logisch verband tussen logische en
relatieve adressen. => adresvertaling minder gemakkelijk
Logische adres = segmentnummer + relatieve positie
MMU: - segmentnummer uit linkerbits van logisch adres
- segmentnummer = index processegmenttabel => fysiek beginadres & lengte segm.
- fysiek adres = begin adres en relatieve positie optellen.
De lengte van het segment moet groter zijn dan de rechterbits van het logisch adres aangeven,
zoniet is het logisch adres ongeldig en wordt een interrupt gegenereerd.
Vraag D: Vergelijk de onderlinge voor- en nadelen van de modellen 3 en 4.
Paginering
Segmentatie:
Voordelen: - gemakkelijke adresvertaling
- blokken van verschillende grootte
- verborgen voor programmeur
- sharing
- lengte segmenten kan wijzigen in
de loop van de uitvoering
Nadelen:
- interne fragmentatie
- externe fragmentatie
- ingewikkeldere adresvertaling
Vraag E: Bespreek 3 manieren waarop het geheugengebruik in model 2 kan geadministreerd
worden.
Administratie van geheugen gebeurt door het besturingssysteem. Er wordt bijgehouden welke
geheugenpartities reeds in gebruik zijn en welke nog beschikbaar zijn.
1) Bitmaps:
Het geheugen wordt verdeeld in kleine allocatie-eenheden van gelijke grootte. Bij elke
allocatie-eenheid hoort een bit die aangeeft of het geheugen vrij of bezet is.
Niet veel gebruikt, want tijdverslindend proces bij zoeken naar aaneengeschakelde allocatieeenheden die groot genoeg zijn voor een proces.
2) Gekoppelde lijsten:
Het geheugen wordt voorgesteld als een gekoppelde lijst van segmenten die ofwel in gebruik
zijn door een proces ofwel vrij zijn.
De meest efficiënte oplossing plaatst aan het begin en het eind van een segment informatie
met de status en de grootte van het segment en neemt enkel de vrije segmenten op in een
dubbelgekoppelde lijst.
3) Buddysysteem:
Gehele geheugenruimte die beschikbaar voor toewijzing wordt behandeld als een blok met
groot 2y. Zolang de vereiste geheugenruimte kleiner is dan de helft van de beschikbare ruimte
wordt die ruimte gesplitst in 2. Zo wordt de ruimte verder gesplitst tot het kleinst mogelijke
blok wordt bereikt. Het buddysysteem houdt voortdurend een gekoppelde lijst bij van alle niet
toegewezen blokken.
Het buddysysteem versnelt samenvoeging, omdat het alleen moet zoeken in de lijst van
blokken met dezelfde grootte.
Interne fragmentatie helaas zeer groot!
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
7
8
C4
Vraag A: Vul op de figuur hiernaast de benaming in van de zeven modellen die in het
besturingssysteem voor geheugenbeheer worden aangewend.
Zie vraag C2.
Vraag B: Welke technologische stap wordt aangeduid door de stippellijn in de figuur.
Bespreek de gevolgen (voordelen, potentiële gevaren,…) van deze evolutie.
(De stippellijn ligt hier na proces 3 en 4)
Technologische stap:
Bij de eerste 2 manieren van geheugenbeheer is het noodzakelijk dat het proces volledig in het
geheugen geladen wordt. Door invoering van pagineren in segmentatie wordt het echter
mogelijk enkel die pagina’s (of segmenten) in het geheugen te laden die we op dat moment
nodig hebben. Dit concept noemen we virtueel geheugen.
Gevolgen:
Het deel dat zich op een bepaald moment in het hoofdgeheugen bevindt noemen we de
residente set. Op basis van de paginatabel (of segmenttabel) kan de processor vaststellen of
alle geheugenverwijzingen betrekking hebben op locaties die zich in de residente set
bevinden. Wordt een logisch adres (nu virtueel adres genoemd) tegengekomen dat zich niet in
de residente set bevindt, dan genereert de processor een interrupt = paginafout. Op dat
moment neemt het besturingssysteem de besturing over en plaatst een I/O-verzoek om de
nodige pagina’s op te halen. Indien het gewenste stuk is binnengehaald wordt een I/Ointerrupt gegenereerd, die opnieuw het besturingssysteem activeert, waardoor dit de
paginatabellen kan bijwerken en het betrokken proces terug in de gerede toestand kan
plaatsen.
Voordelen:
=> Verbetering van systeemgebruik door:
 Meer ruimte voor processen => kans is groter dat er minstens 1 proces in de gerede
toestand zal zijn
 Geheugenhoeveelheid dat een proces kan aanspreken kan groter zijn dan de totale
hoeveelheid beschikbare hoofdgeheugen => programmeur moet geen rekening houden
met het beschikbaren geheugen, geen overlay-technieken nodig.
 Geheugen wordt efficiënter benut. I/O-operaties en bijgevolg tijd bespaard omdat
ongebruikte stukken niet in en uit geheugen moeten geswapt worden.
Nadelen:
 Heel wat overhead bij paginafouten. Bij teveel paginafouten -> trashing: processor is
meer bezig met swappen, dan uitvoeren van instructies.
Vraag C: Bespreek in het kader van geheugenmodel 5 op welke manier de grootte van de
noodzakelijke tabellen in het geheugen kan beperkt worden, en wat hiervan de gevolgen zijn.
Paginering vereist een weloverwogen keuze voor de paginagrootte.
 Kleine pagina’s -> weinig interne fragmentatie, maar wel groot aantal pagina’s per
proces -> grote paginatabellen, waardoor er minder geheugen vrij blijft voor het
proces.
 Grotere pagina’s geven ook een efficiëntere blokoverdracht van gegevens uit
secundair geheugen.
 Bij een constante hoeveelheid toegewezen geheugen heeft de paginagrootte invloed op
de frequentie waarmee paginafouten optreden.
Relatief kleine paginagrootte is efficiënter. (order kb in praktijk)
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
8
9
In veel computersystemen is de virtuele adresruimte die elk proces kan aanspreken groter dan
de beschikbare hoeveelheid reëel geheugen. Hierdoor wordt de hoeveelheid geheugen die per
proces alleen al voor paginatabellen vereist is te groot om in het hoofdgeheugen te kunnen
worden geladen. Hiervoor bestaan 2 oplossingen:
1) Paginatabellen zelf in virtueel geheugen:
Hiervoor kan een systeem met 2 niveaus gebruikt worden: forward-mapped page table
Het paginanummer in het logisch adres wordt opgesplitst in 2 delen:
1. meest significante deel = index voor steeds residente paginatabel, en verwijst naar
specifieke paginatabel
2. minst significante deel = index specifiek paginatabel, verwijst naar fysieke frame
=> 2 soorten paginafouten mogelijk. Een voor binnenhalen specifieke paginatabel en een voor
het binnenhalen van de procespagina
2) Geïnverteerde paginatabel voor ganse systeem ipv procestabel voor elk proces.
Een geïnverteerde paginatabel bevat een ingang per geheugenframe. Grootte paginatabel is
enkel afhankelijk van de grootte van het geheugen.
Omdat de geïnverteerde paginatabel niet is gesorteerd op paginanummer, maar op
framenummer, en om te vermijden dat het paginanummer sequentieel moet opgezocht
worden, past men hashing toe. Bij virtueel geheugenbeheer wordt het paginanummer en de
procesidentificatie vertaald naar een hashwaarde, die gebruikt wordt als een index in een
hashtabel. Deze tabel bevat een verwijzing naar één van de elementen in de geïnverteerde
paginatabel die de specifieke hashwaarde oplevert. Alle elementen met dezelfde hashwaarde
zijn in de geïnverteerde paginatabel aan elkaar gekoppeld in een circulaire lijst. Het
framenummer kan berekend worden op basis van het adres van het element (ten opzichte van
het beginadres van de geïnverteerde paginatabel) en hoeft bijgevolg niet expliciet opgeslagen
te worden.
In beide technieken veroorzaakt elke verwijzing naar een virtueel adres minimaal 2
geheugentoegangen: één voor het opvragen van de juiste paginatabel en één voor het
opvragen van de gewenste gegevens. Om verdubbeling van de geheugentoegangstijd te
vermijden wordt een hardwarecache in de MMU gebruikt die de meest recent gebruikte
paginatabelingangen bevat.
Vraag D: Vergelijk de onderlinge voor- en nadelen van modellen 5 en 6. Waarom werd model
7 ingevoerd? In hoeverre is men hierin geslaagd?
Paginering:
Segmentatie:
Voordelen:
- onzichtbaarheid voor programmeur
- gemakkelijker afhandeling van
- eenvoudigere algoritmen voor geheugenbeheer
groeiende structuren
- eliminatie externe fragmentatie
Nadelen:
- interne fragmentatie
- externe fragmentatie
=> voordelen samenvoegen: besturingssystemen met zowel paginering als segmentatie. In
gecombineerde paginering- segmentatie virtueel geheugensystemen wordt de adresruimte van
een proces opgebroken in enkele segmenten, gekozen door de programmeur. Elk segment
wordt verdeeld in pagina’s met vaste grootte, gelijk aan de grootte van een frame in het
hoofdgeheugen.
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
9
10
Vraag E: Bespreek de adresstructuur gehanteerd in model 7 en verduidelijk in een figuur hoe
de adresvertaling gebeurt.
Adresstructuur:
Adresvertaling:
Logische of virtueel adres = Segmentnummer + segmentpositie
Segmentpositie = paginanummer + paginapositie
Elk proces heeft zijn eigen segmenttabel, elk processegment zijn eigen paginatabel.
Seg # = index voor segmenttabel => ‘p’-bit, grootte v. segment, geheugenadres
Page # + geheugenadres = paginanummer = index paginatabel => framenummer
Frame # (= fysiek beginadres) + offset (= afstand van beginadres tot instructie) => instructie
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
10
11
C5
Vraag A: Welke globale taken bij geheugenbeheer moeten worden vervuld door
 de computerhardware en in het bijzonder door de processor?
 de besturingssysteemsoftware?
Processor:
1) genereren van paginafouten
Besturingssysteem:
- beslissen of een pagina of segment naar het secundair geheugen moet verplaatst
worden of niet en de uitwerking ervan
Vraag B: Welke (zes) specifieke vragen moet besturingssysteemsoftware beantwoorden? Ga
hierbij zoveel mogelijk in detail voor wat invulling ervan betreft, behalve voor het probleem
vervangingsstrategieën. Bij deze laatste moet je enkel de vraagstelling formuleren. Vermeld
ook steeds hoe het probleem in Unix en in Windows NT wordt aangepakt.
1) Wanneer moet een pagina worden overgebracht naar het hoofdgeheugen?
2 alternatieven:
1. vraagpaginering:
een pagina wordt pas overgebracht naar het hoofdgeheugen als hierom
gevraagd wordt => veel paginafouten bij opstarten van proces
2. prepaginering:
Meerdere aaneengesloten pagina’s, zoals ze opgeslagen zijn in het secundair
geheugen, worden ineens binnengehaald, ook al is maar een pagina gevraagd.
Unix: vraagpaginering
Windows: prepaginering, aantal pagina’s is afhankelijk van het geheugen en de aard
van de pagina’s.
2) Op welke plaats in het hoofdgeheugen moeten pagina’s geladen worden?
Enkel relevant bij pure segmentatiesystemen.
o First-fit: zoekt vanaf het begin van het geheugen en plaatst het segment in de
eerste plaatst die groot genoeg is.
o Next-fit: zoekt vanaf de plaats van waar het geëindigd is. Plaatst het blok in de
eerst geheugenplaats die groot genoeg is.
o Best-fit: zoekt het hele geheugen af naar de plaats die het best past. Het
geheugen wordt snel verdeeld in blokken die te klein zijn voor nieuwe
processen.
o Worst-fit: wijst het grootst beschikbare blok toe, in de hoop veel gaten te
krijgen die nog voldoende groot zijn voor nieuwe processen.
o Optimal-fit: Schakelt dynamisch tussen de vier basisalgoritmen.
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
11
12
3) Hoeveel paginaframes moeten worden toegewezen aan elk actief proces?
o Hoe kleiner de hoeveelheid geheugen die wordt toegewezen aan elk proces,
hoe groter het aantal processen dat kan worden geladen, hoe groter de kans dat
er een proces zich in de gerede toestand bevind.
o Een te klein aantal pagina’s per proces zal de frequentie van paginafouten doen
toenemen.
o Een overtoewijzing van geheugen aan een proces levert geen merkbare
verbeteringen
 2 mogelijke strategiën:
1. Vaste toewijzing: aantal pagina’s wordt toegekend bij creatie proces
2. Variabele toewijzing: paginaframes worden dynamisch toegewezen of
onttrokken aan processen om de paginafoutfrequentie te verlagen. Hierbij moet
echter het gedrag van de processen worden beoordeeld wat overhead
veroorzaakt.
Unix: variabele toewijzing
Windows: variabele toewijzing
4) Lokale of globale vervanging?
Wanneer we een pagina moeten vervangen, omdat een nieuwe pagina moet worden
geladen zijn er 2 mogelijkheden:
o Lokale vervanging: alleen de pagina’s van het proces dat een fout veroorzaakte
komen in aanmerking voor vervanging
o Globale vervanging: alle pagina’s in het hoofdgeheugen komen in aanmerking
voor vervanging.
Gebruik van paginabuffering en werksetbenadering
Unix: variabele toewijzing met globale vervangingsstrategie
Windows: variabele toewijzing met lokale vervanginsstrategie
5) Wanneer moet een gewijzigde pagina worden weggeschreven naar het secundair
geheugen?
2 strategieën:
1. vraagopschoning: een pagina wordt alleen weggeschreven naar het secundair
geheugen als deze is geselecteerd voor vervanging.
2. opschoning vooraf: pagina’s worden in batches weggeschreven ook al zijn hun
paginaframes nog niet aan vervanging toe. Dit leidt tot verspilling als de kans
groot is dat de pagina’s later opnieuw zullen worden gewijzigd. Daarom wordt
vaak paginabuffering gebruikt.
6) Welke specifieke pagina’s in het hoofdgeheugen moeten worden vervangen
wanneer een nieuwe pagina moet worden geladen?
Vraag C: Bespreek paginabuffering. Bij welke vragen in b) komt deze techniek ter sprake?
Parallel met de paginatabellen per proces worden op systeemniveau twee intermediaire lijsten
van slachtofferframes bijgehouden: de lijst van vrije frames en de lijst van vrije frames met
gewijzigde pagina’s, die als cache werken voor te vervangen pagina’s.
Beslist een besturingssysteem om een pagina uit te swappen, dan wordt die pagina nog niet
direct verwijderd of naar het secundaire geheugen geschreven. Enkel de ingang in de
paginatabel wordt verwijderd en onderaan één van de lijsten van slachtofferframes
bijgeplaatst, naar gelang de pagina gewijzigd is of niet.
Moet er een nieuwe pagina geladen worden dan wordt de pagina bovenaan de lijst effectief
verwijderd of vanuit het hoofdgeheugen naar het secundair geheugen verplaatst.
Doordat een pagina nog even beschikbaar blijft in een intermediaire lijst kunnen we tijd
besparen wanneer er toch nog naar die pagina verwezen zou worden.
Komt aan bod bij vraag 4 & 5
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
12
13
Vraag D: Bespreek de werksetbenadering. Bij welke vraag in b) kom deze techniek ter
sprake? Hoe wordt werksetbenadering in praktijk benaderd?
Bij combinatie variabele toewijzing met lokale vervangingsstrategie (vraag 3 & 4 van b)
selecteert het besturingssysteem te vervangen pagina’s uit de residente set van het actieve
proces dat de fout veroorzaakt heeft. Hierdoor moeten alternatieve technieken gebruikt
worden om de waarschijnlijke toekomstige behoeften, meer bepaald de ideale grootte van de
residente set, van deze actieve processen in te schatten. Hiervoor gebruikt men soms de
werksetbenadering.
De werkset is de verzameling pagina’s die nodig is voor de uitvoering van een proces
gedurende een bepaalde periode. Als die set in het hoofdgeheugen staat treden geen
paginafouten op. Periodiek worden de pagina’s uit de residente set van een proces die niet
voorkomen in de werkset, verwijderd.
Een proces wordt enkel efficiënt uitgevoerd als de in het hoofdgeheugen residente set de
werkset kan bevatten: zijn er te weinig frames, dan zullen er veel meer verwijzingen zijn die
paginafouten opleveren. Indien de som van de werksetgroottes van alle processen groter is
dan het totaal aantal beschikbare frames, dan treedt trashing op. Het besturingssysteem kan
beslissen om een of meer processen volledig uit het geheugen te swappen. De
werksetstrategie kan bijgevolg automatisch en dynamisch het aantal actieve programma’s en
hun geheugenverbruik beheren, en kan bovendien trashing vermijden.
Praktisch gebruik:
- Het nauwkeurig bepalen van de werksetgrootte vraagt veel overhead, daarom wordt de
foutenfrequentie van elk proces bijgehouden: daalt deze onder een drempelwaarde dan
kunnen frames van het proces aan andere processen worden toegekend. Wordt de
foutenfrequentie te hoog dan heeft het proces meer frames nodig.
- Windows NT gebruikt een andere methode: bij elke paginafout wordt de
werksetgrootte van dat proces vergroot, op voorwaarde dat een drempelwaarde niet
wordt overschreden. Pas bij overschrijding leidt een paginafout tot paginavervanging.
C6
Vraag A: Waar in de besturingssysteemsoftware voor geheugenbeheer situeren deze
vervangingsstrategieën zich? In welke situaties (omschrijf!), buiten dit specifieke domein van
geheugenbeheer, zijn eveneens vervangingsstrategieën noodzakelijk? Wie zorgt in deze
situaties voor de implementatie ervan?
Op het moment er geheugen moet vrijgemaakt worden moet een er pagina’s uit het
hoofdgeheugen geswapt worden. Welke pagina’s dit best zijn wordt bepaald door de
vervangingsstrategie.
Ook op hoger lagen van de geheugenhiërarchie zijn vervangingstrategieën nodig. Hiervoor
kan het hardwaremechanisme van de LRU gebruikt worden.
Vraag B: Bespreek de principes van de diverse vervangingsstrategieën, met inbegrip van
eventuele varianten.
 Optimale strategie: vervangt de pagina’s waarvoor het het langst zal duren voor ze
opnieuw opgevraagd zullen worden. In praktijk niet realiseerbaar.
 Last Recently used: vervangt de pagina in het geheugen waarnaar het langst niet
verwezen is.
Niet geschikt voor processen met een cyclisch verwijzingspatroon, waarbij het
paginabereik groter is dan de hoeveelheid geheugen.
In praktijk moeilijk te implementeren: het is in principe nodig om een gesorteerde lijst
of stapel van pagina’s bij te houden, waarbij de recentst gebruikte pagina voorop staat
en de minst recente achteraan. De lijst moet softwarematig bij elke verwijzing naar het
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
13
14



geheugen aangepast worden wat veel te lang duurt.
Oplossing: hardwaremechanisme
Er wordt voor een machine met N paginaframes een matrix van NxN bits bijgehouden
die geïnitialiseerd zijn op 0. Telkens een paginaframe X gebruikt wordt, maakt de
hardware eerst in een rij X alle bits 1 en vervolgens in kolom X alle bits 0. Op elk
moment geeft de binaire waarde van de rij dan aan hoe recent de overeenkomstige
pagina dan gebruikt is. Niet bruikbaar op niveau van hoofdgeheugen – secundair
geheugen, maar wel in hogere lagen van de geheugenhiërarchie.
Not Frequently Used: Aangezien het hardwaremechanisme niet beschikbaar, wordt
een licht afwijkend software-algoritme gebruikt. In plaatst van het algoritme na elke
geheugenverwijzing toe te passen, wordt het slechts periodiek toegepast. Er wordt
voor elke pagina een softwareteller bijgehouden. Wanneer een paginafout optreedt
wordt de pagina verwijderd waarvan de teller het kleinst is.
First In, First Out: behandelt de frames die zijn toegewezen aan een proces als een
circulaire buffer, voegt nieuwe pagina’s toe aan het eind van de buffer en verwijdert
pagina’s die zich al het langst in het geheugen bevinden.
Pagina’s die langdurig nodig zijn voor het proces worden dan ook herhaaldelijk in en
uit het hoofdgeheugen gepagineerd.
Presteert zeer slecht!
Anomalie van Belady: meer frames beschikbaar, toch meer fouten!
Klokstrategie: Ook wel tweede-kans-algoritme genoemd. Aan elk frame wordt een
extra use-bit gekoppeld, die in de paginatabel opgeslagen wordt. ~ NFU-algoritme
waarbij de teller maar uit 1 bit bestaat. De usebit wordt op 1 ingesteld bij het laden in
het hoofdgeheugen en wanneer de pagina gebruikt wordt. De frames die kandidaat zijn
voor vervangen worden behandeld als een circulaire buffer (FIFO) Moet een pagina
vervangen worden dan zoekt het besturingssysteem adhv een pointer naar een frame
waarvoor de usebit 0 is. Komt het hierbij frames tegen waar de usebit 1 is dan worden
die op 0 ingesteld. Het verschil met FIFO is dat de recent geadresseerde frames
worden overgeslagen.
o Kan geoptimaliseerd worden door het aantal usebits te verhogen. (Linux)
o Ook kan men de dirty bit bij de selectie betrekken => pagina’s die niet recent
gebruikt zijn en niet gewijzigd zijn worden verwijdert. Wordt bij een eerste
rondje niets gevonden dan worden de pagina’s opnieuw overlopen en wordt
naar pagina’s gezocht die gewijzigd zijn maar niet recent gebruikt zijn. Ook dit
rondje kan niets opleveren.
=> derde-kans-algoritme (Mac)
o In Unix wordt nog een andere verfijning gebruikt voor het beheren van
gebruikersprocessen. (Voor kernelprocessen wordt een niet-virtueel
buddysysteem gebruikt.) De paginering wordt gedeeltelijk uitgevoerd door een
specifiek proces, de paginadeamon. Unix houdt een dubbelgekoppelde lijst bij
waarin alle vrije paginaframes staan. Bij een fout wordt het eerste element uit
de lijst verwijdert en wordt de benodigde pagina in dat frame ingelezen. De
paginadeamon onderzoekt regelmatig of het aantal vrije frames gelijk is aan de
parameter lotsfree. Als er niet voldoende frames vrij zijn dan wordt er geswapt.
Er wordt bij het swappen geen rekening gehouden met bij welk proces de
pagina’s behoren => globaal vervangingsalgoritme.
o Omdat een volledige doorgang van het klokalgoritme vrij lang blijkt te duren
wordt een klokalgoritme met 2 wijzers (pointers) gebruikt. De voorste wijzer
zet de usebit op 0 terwijl de achterste pagina’s voor verwijdering selecteert.
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
14
15
Vraag C: Vergelijk en bespreek de efficiëntie van deze strategieën (onderling met de optimale
strategie), aan de hand van volgend voorbeeld: bovenaan het schema worden de
achtereenvolgende pagina’s vermeld die nodig zijn voor de uitvoering van een proces
waaraan drie geheugenframes zijn toegewezen. Bepaal voor de diverse strategieën de inhoud
van de paginatabel op elk ogenblik. Duidt eveneens telkens aan wanneer paginafouten
optreden.
Vraag D: Welke (reële) strategie is globaal de meest efficiënte? Is dit steeds het geval (geef
eventueel tegenvoorbeeld)? Hoe kan deze strategie in hardware en software worden
geïmplementeerd?
LRU benadert in het voorbeeld het best de optimale strategie. LRU is echter niet geschikt
voor processen met een cyclisch verwijzingspatroon en is in praktijk moeilijk te
implementeren. NFU benadert LRU. FIFO is het snelste proces.
Aangezien het klokalgoritme gebaseerd is op NFU en FIFO is dit globaal het meest efficiënte.
Dit algoritme kan in software worden geïmplementeerd. Dit proces kan aangeroepen worden
door verschillende gebeurtenissen:
 Op tijdbasis (bv elke seconde)
 Door de scheduler, indien de paginafoutenfrequentie te hoog oploopt
 Indien de lijst van vrije frames te klein wordt
Uw bak stella, als bedanking mag opgestuurd worden naar de Krijgslaan 180, in Gent.
© Maarten De Muynck
15
Download