In de informatica is geselen is de slechte prestatie van een virtueel geheugen (of paging) systeem wanneer dezelfde pagina's herhaaldelijk worden geladen vanwege een gebrek aan hoofdgeheugen om ze in het geheugen te houden. Afhankelijk van de configuratie en het algoritme kan de daadwerkelijke doorvoer van een systeem met meerdere ordes van grootte afnemen.
In de informatica is geselen treedt op wanneer de virtuele geheugenbronnen van een computer overmatig worden gebruikt, wat leidt tot een constante staat van paging en paginafouten, waardoor de meeste verwerking op applicatieniveau wordt belemmerd. Het zorgt ervoor dat de prestaties van de computer verslechteren of instorten. De situatie kan voor onbepaalde tijd voortduren totdat de gebruiker enkele actieve applicaties sluit of totdat de actieve processen extra virtuele geheugenbronnen vrijmaken.
Om duidelijker te weten te komen over thrashing, moeten we eerst iets weten over paginafouten en swapping.
Geselen Dit is wanneer de paginafout en het wisselen zeer vaak en in een hoger tempo plaatsvindt, en het besturingssysteem meer tijd moet besteden aan het wisselen van deze pagina's. Deze toestand in het besturingssysteem staat bekend als thrashing. Door het thrashing zal het CPU-gebruik worden verminderd of verwaarloosbaar zijn.
Het basisconcept is dat als aan een proces te weinig frames worden toegewezen, er te veel en te frequente paginafouten zullen optreden. Als gevolg hiervan zou de CPU geen waardevol werk verrichten en zou het CPU-gebruik drastisch dalen.
De langetermijnplanner zou dan proberen het CPU-gebruik te verbeteren door wat meer processen in het geheugen te laden, waardoor de mate van multiprogrammering toeneemt. Helaas zou dit resulteren in een verdere afname van het CPU-gebruik, wat een kettingreactie van hogere paginafouten zou veroorzaken, gevolgd door een toename van de mate van multiprogrammering, genaamd thrashing.
Algoritmen tijdens het slaan
Telkens wanneer het thrashing begint, probeert het besturingssysteem het Globale paginavervangingsalgoritme of het Lokale paginavervangingsalgoritme toe te passen.
1. Algemene paginavervanging
Omdat globale paginavervanging elke pagina kan opleveren, probeert het meer pagina's op te halen wanneer er thrashing wordt gevonden. Maar wat er feitelijk zal gebeuren, is dat geen enkel proces voldoende frames krijgt, en als gevolg daarvan zal het geselen steeds groter worden. Daarom is het globale algoritme voor paginavervanging niet geschikt wanneer thrashing plaatsvindt.
2. Vervanging van lokale pagina's
In tegenstelling tot het globale algoritme voor paginavervanging, selecteert lokale paginavervanging pagina's die alleen tot dat proces behoren. Er is dus een kans om het geselen te verminderen. Maar het is bewezen dat er veel nadelen zijn als we lokale paginavervanging gebruiken. Daarom is lokale paginavervanging slechts een alternatief voor globale paginavervanging in een zwaar scenario.
Oorzaken van slaan
Programma's of werklasten kunnen een pak slaag veroorzaken en ernstige prestatieproblemen tot gevolg hebben, zoals:
- Als het CPU-gebruik te laag is, verhogen we de mate van multiprogrammering door een nieuw systeem te introduceren. Er wordt gebruik gemaakt van een globaal algoritme voor paginavervanging. De CPU-planner ziet het afnemende CPU-gebruik en verhoogt de mate van multiprogrammering.
- Het CPU-gebruik wordt uitgezet tegen de mate van multiprogrammering.
- Naarmate de mate van multiprogrammering toeneemt, neemt ook het CPU-gebruik toe.
- Als de mate van multiprogrammering verder wordt verhoogd, treedt er een pak slaag op en daalt het CPU-gebruik scherp.
- Dus om het CPU-gebruik te verhogen en het geraas te stoppen, moeten we op dit punt de mate van multiprogrammering verminderen.
Hoe het geselen te elimineren
Thrashing heeft een aantal negatieve gevolgen voor de gezondheid van de harde schijf en de systeemprestaties. Daarom is het noodzakelijk om enkele maatregelen te nemen om dit te voorkomen. Om het probleem van het slaan op te lossen, zijn hier de volgende methoden, zoals:
Technieken om geselen te voorkomen
De lokale paginavervanging is beter dan de globale paginavervanging, maar de lokale paginavervanging heeft veel nadelen en is daarom soms niet nuttig. Daarom volgen hieronder enkele andere technieken die worden gebruikt om met slaan om te gaan:
1. Plaatsmodel
Een locatie is een reeks pagina's die actief samen worden gebruikt. Het lokaliteitsmodel stelt dat naarmate een proces wordt uitgevoerd, het zich van de ene plaats naar de andere verplaatst. Een programma bestaat dus doorgaans uit verschillende locaties die elkaar kunnen overlappen.
Wanneer een functie bijvoorbeeld wordt aangeroepen, definieert deze een nieuwe plaats waar geheugenverwijzingen worden gemaakt naar de functieaanroepinstructies, lokale en globale variabelen, enz. Op dezelfde manier verlaat het proces deze plaats wanneer de functie wordt verlaten.
2. Werksetmodel
Dit model is gebaseerd op het hierboven genoemde concept van het Locality Model.
Het basisprincipe stelt dat als we voldoende frames aan een proces toewijzen om zijn huidige locatie te accommoderen, het alleen maar een fout zal vertonen als het naar een nieuwe locatie verhuist. Maar als de toegewezen frames kleiner zijn dan de grootte van de huidige locatie, dreigt het proces te mislukken.
Volgens dit model wordt de werkset, gebaseerd op parameter A, gedefinieerd als de set pagina's in de meest recente 'A'-paginareferenties. Daarom zouden alle actief gebruikte pagina's altijd deel uitmaken van de werkset.
c++ paar
De nauwkeurigheid van de werkset is afhankelijk van de waarde van parameter A. Als A te groot is, kunnen werksets elkaar overlappen. Aan de andere kant is het mogelijk dat voor kleinere waarden van A de plaats niet volledig wordt gedekt.
Als D de totale vraag naar frames en WSS isiis de werksetgrootte voor proces i,
D = ⅀ WSSi
Als 'm' het aantal beschikbare frames in het geheugen is, zijn er twee mogelijkheden:
- D>m, d.w.z. als de totale vraag het aantal frames overschrijdt, zal er sprake zijn van thrashing omdat sommige processen niet genoeg frames zouden krijgen.
- D<=m, then there would be no thrashing.< li> =m,>
Als er voldoende extra frames zijn, kunnen er nog meer processen in het geheugen worden geladen. Aan de andere kant, als de optelling van de werksetgroottes de beschikbaarheid van de frames overschrijdt, moeten sommige processen worden opgeschort (uit het geheugen gewisseld).
Deze techniek voorkomt geselen en zorgt voor de hoogst mogelijke mate van multiprogrammering. Het optimaliseert dus het CPU-gebruik.
3. Frequentie van paginafouten
Een meer directe benadering om met thrashing om te gaan, is degene die gebruik maakt van het Page-Fault Frequency-concept.
Het probleem dat gepaard gaat met thrashing is het hoge aantal paginafouten, en daarom is het concept hier om het aantal paginafouten te beheersen.
Als het paginafoutpercentage te hoog is, geeft dit aan dat er te weinig frames aan het proces zijn toegewezen. Integendeel, een laag paginafoutpercentage geeft aan dat het proces te veel frames bevat.
Er kunnen boven- en ondergrenzen worden ingesteld voor het gewenste paginafoutpercentage, zoals weergegeven in het diagram.
Als het paginafoutpercentage onder de ondergrens komt, kunnen frames uit het proces worden verwijderd. Op dezelfde manier kunnen, als het aantal paginafouten de bovengrens overschrijdt, meer frames aan het proces worden toegewezen.
Met andere woorden, de grafische toestand van het systeem moet beperkt blijven tot het rechthoekige gebied dat in het gegeven diagram wordt gevormd.
Als het paginafoutpercentage hoog is zonder vrije frames, kunnen sommige processen worden opgeschort en kunnen de daaraan toegewezen processen opnieuw worden toegewezen aan andere processen. De opgeschorte processen kunnen later opnieuw starten.