Geheugenbeheer in besturingssysteem: aaneengesloten, wisselen, fragmentatie

Wat is geheugenbeheer?

Geheugen management is het proces waarbij computergeheugen wordt gecontroleerd en gecoördineerd, waarbij delen die bekend staan ​​als blokken worden toegewezen aan verschillende actieve programma's om de algehele prestaties van het systeem te optimaliseren.

Het is de belangrijkste functie van een besturingssysteem dat het primaire geheugen beheert. Het helpt processen om heen en weer te bewegen tussen het hoofdgeheugen en de uitvoeringsschijf. Het helpt OS om elke geheugenlocatie bij te houden, ongeacht of deze is toegewezen aan een proces of vrij blijft.

Waarom geheugenbeheer gebruiken?

Hier volgen enkele redenen om geheugenbeheer te gebruiken:

  • Hiermee kunt u controleren hoeveel geheugen moet worden toegewezen aan processen die beslissen welke processor op welk moment geheugen moet krijgen.
  • Houdt bij wanneer voorraad wordt vrijgegeven of niet wordt toegewezen. Volgens het zal de status bijwerken.
  • Het wijst de ruimte toe aan toepassingsroutines.
  • Het zorgt er ook voor dat deze applicaties elkaar niet hinderen.
  • Helpt verschillende processen tegen elkaar te beschermen
  • Het plaatst de programma's in het geheugen, zodat het geheugen volledig wordt benut.

Technieken voor geheugenbeheer

Hier zijn enkele van de meest cruciale technieken voor geheugenbeheer:

Eén aaneengesloten toewijzing

Het is de eenvoudigste geheugenbeheertechniek. Bij deze methode zijn alle typen computergeheugen, behalve een klein deel dat is gereserveerd voor het besturingssysteem, beschikbaar voor één toepassing. Het MS-DOS-besturingssysteem wijst bijvoorbeeld geheugen op deze manier toe. Een ingebed systeem draait ook op één enkele toepassing.

Gepartitioneerde toewijzing

Het verdeelt het primaire geheugen in verschillende geheugenpartities, meestal aaneengesloten geheugengebieden. Elke partitie slaat alle informatie op voor een specifieke taak of taak. Deze methode bestaat uit het toewijzen van een partitie aan een taak wanneer deze begint en niet-toegewezen wanneer deze eindigt.

Beheer van wisselgeheugen

Deze methode verdeelt het hoofdgeheugen van de computer in eenheden van vaste grootte, ook wel paginaframes genoemd. Deze hardwaregeheugenbeheereenheid wijst pagina's toe in frames die op paginabasis moeten worden toegewezen.

Gesegmenteerd geheugenbeheer

Gesegmenteerd geheugen is de enige geheugenbeheermethode die het gebruikersprogramma niet voorziet van een lineaire en aaneengesloten adresruimte.

Segmenten hebben hardwareondersteuning nodig in de vorm van een segmenttabel. Het bevat het fysieke adres van de sectie in het geheugen, de grootte en andere gegevens zoals toegangsbeveiligingsbits en status.

Wat is ruilen?

Swapping is een methode waarbij het proces tijdelijk van het hoofdgeheugen naar de backing store moet worden geswapt. Het wordt later teruggebracht in het geheugen voor continue uitvoering.

Back-upopslag is een harde schijf of een ander secundair opslagapparaat dat groot genoeg moet zijn om kopieën van alle geheugenimages voor alle gebruikers te kunnen bevatten. Het is ook in staat directe toegang te bieden tot deze geheugenbeelden.

Het ruilen

Voordelen van ruilen

Hier zijn de belangrijkste voordelen/voordelen van ruilen:

  • Het biedt een hogere mate van multiprogrammering.
  • Maakt dynamische verplaatsing mogelijk. Als bijvoorbeeld adresbinding tijdens de uitvoeringstijd wordt gebruikt, kunnen processen op verschillende locaties worden uitgewisseld. Anders moeten processen in het geval van compileer- en laadtijdbindingen naar dezelfde locatie worden verplaatst.
  • Het helpt om het geheugen beter te benutten.
  • Minimale verspilling van CPU-tijd bij voltooiing, zodat deze eenvoudig kan worden toegepast op een op prioriteiten gebaseerde planningsmethode om de prestaties te verbeteren.

Wat is geheugentoewijzing?

Geheugentoewijzing is een proces waarbij aan computerprogramma's geheugen of ruimte wordt toegewezen.

Hier is het hoofdgeheugen verdeeld in twee soorten partities

  1. Slecht geheugen - Operating systeem bevindt zich in dit type geheugen.
  2. Hoog geheugen– Gebruikersprocessen worden in een hoog geheugen bewaard.

Partitietoewijzing

Het geheugen is verdeeld in verschillende blokken of partities. Elk proces wordt toegewezen op basis van de vereiste. Partitietoewijzing is een ideale methode om interne fragmentatie te voorkomen.

Hieronder vindt u de verschillende partitietoewijzingsschema's:

  • Eerste aanpassing: Bij dit type fit wordt de partitie toegewezen, wat het eerste voldoende blok is vanaf het begin van het hoofdgeheugen.
  • Beste pasvorm: Het wijst het proces toe aan de partitie die de eerste kleinste partitie is onder de vrije partities.
  • Slechtste pasvorm: Het wijst het proces toe aan de partitie, de grootste voldoende vrij beschikbare partitie in het hoofdgeheugen.
  • Volgende pasvorm: Het is grotendeels vergelijkbaar met de eerste Fit, maar deze Fit zoekt naar de eerste voldoende partitie vanaf het laatste toewijzingspunt.

Wat is paging?

Paging is een opslagmechanisme waarmee het besturingssysteem processen in de vorm van pagina's van de secundaire opslag naar het hoofdgeheugen kan ophalen. Bij de Paging-methode wordt het hoofdgeheugen verdeeld in kleine blokken fysiek geheugen van vaste grootte, die frames worden genoemd. De grootte van een frame moet hetzelfde worden gehouden als die van een pagina om maximaal gebruik te maken van het hoofdgeheugen en om externe fragmentatie te voorkomen. Paging wordt gebruikt voor snellere toegang tot gegevens, en het is een logisch concept.

Wat is fragmentatie?

Processen worden opgeslagen en uit het geheugen verwijderd, waardoor vrije geheugenruimte ontstaat die te klein is om door andere processen te worden gebruikt.

Soms worden processen die niet aan geheugenblokken kunnen worden toegewezen omdat de kleine omvang en geheugenblokken altijd ongebruikt blijven, fragmentatie genoemd. Dit type probleem doet zich voor tijdens een dynamisch geheugentoewijzingssysteem wanneer de vrije blokken vrij klein zijn, waardoor het niet aan enig verzoek kan voldoen.

Er zijn twee soorten fragmentatiemethoden:

  1. Externe fragmentatie
  2. Interne fragmentatie
  • Externe fragmentatie kan worden verminderd door de geheugeninhoud te herschikken, zodat al het vrije geheugen samen in één blok wordt geplaatst.
  • De interne fragmentatie kan worden verminderd door de kleinste partitie toe te wijzen, die nog steeds goed genoeg is om het hele proces te dragen.

Wat is segmentatie?

De segmentatiemethode werkt vrijwel hetzelfde als paging. Het enige verschil tussen de twee is dat segmenten een variabele lengte hebben, terwijl bij de pagingmethode de pagina's altijd een vaste grootte hebben.

Een programmasegment omvat de hoofdfunctie van het programma, datastructuren, hulpprogrammafuncties, enz. Het besturingssysteem onderhoudt een segmentkaarttabel voor alle processen. Het omvat ook een lijst met vrije geheugenblokken, samen met de grootte, segmentnummers en de geheugenlocaties in het hoofdgeheugen of virtueel geheugen.

Wat is dynamisch laden?

Dynamisch laden is een routine van een programma dat pas wordt geladen als het programma het oproept. Alle routines moeten op schijf staan ​​in een verplaatsbaar laadformaat. Het hoofdprogramma wordt in het geheugen geladen en uitgevoerd. Dynamisch laden zorgt ook voor een beter gebruik van de geheugenruimte.

Wat is dynamisch koppelen?

Koppelen is een methode waarmee het besturingssysteem verschillende code- en gegevensmodules kan verzamelen en samenvoegen tot één uitvoerbaar bestand. Het bestand kan in het geheugen worden geladen en uitgevoerd. OS kan bibliotheken op systeemniveau koppelen aan een programma dat de bibliotheken tijdens het laden combineert. Bij de dynamische koppelingsmethode worden bibliotheken gekoppeld tijdens de uitvoering, zodat de omvang van de programmacode klein kan blijven.

Verschil tussen statisch en dynamisch laden

Statisch laden Dynamisch laden
Statisch laden wordt gebruikt wanneer u uw programma statisch wilt laden. Vervolgens wordt op het moment van compilatie het hele programma gekoppeld en gecompileerd zonder dat er enige externe module- of programmaafhankelijkheid nodig is. In een dynamisch geladen programma worden referenties verstrekt en wordt het laden uitgevoerd op het moment van uitvoering.
Tijdens het laden wordt het volledige programma in het geheugen geladen en begint de uitvoering ervan. Routines van de bibliotheek worden alleen in het geheugen geladen als ze in het programma nodig zijn.

Verschil tussen statische en dynamische koppeling

Hier volgen de belangrijkste verschillen tussen statische en dynamische koppelingen:

Statische koppeling Dynamische koppeling
Statische koppeling wordt gebruikt om alle andere modules die een programma nodig heeft, te combineren in één uitvoerbare code. Dit helpt het besturingssysteem elke runtime-afhankelijkheid te voorkomen. Wanneer dynamisch koppelen wordt gebruikt, hoeft de daadwerkelijke module of bibliotheek niet aan het programma te worden gekoppeld. Gebruik in plaats daarvan een verwijzing naar de dynamische module die werd geleverd op het moment van compileren en koppelen.

Samenvatting

  • Geheugenbeheer is het proces waarbij het computergeheugen wordt gecontroleerd en gecoördineerd, waarbij gedeelten, zogenaamde blokken, worden toegewezen aan verschillende actieve programma's om de algehele prestaties van het systeem te optimaliseren.
  • Hiermee kunt u controleren hoeveel geheugen moet worden toegewezen aan processen die beslissen welke processor op welk moment geheugen moet krijgen.
  • Bij Single Contiguous Allocation zijn alle soorten computergeheugen, met uitzondering van een klein gedeelte dat gereserveerd is voor het besturingssysteem, beschikbaar voor één applicatie
  • De Partitioned Allocation-methode verdeelt het primaire geheugen in verschillende geheugenpartities, meestal aaneengesloten geheugengebieden
  • De Paged Memory Management-methode verdeelt het hoofdgeheugen van de computer in eenheden van vaste grootte, ook wel paginaframes genoemd
  • Gesegmenteerd geheugen is de enige geheugenbeheermethode die het gebruikersprogramma niet voorziet van een lineaire en aaneengesloten adresruimte.
  • Swapping is een methode waarbij het proces tijdelijk van het hoofdgeheugen naar de backing store moet worden geswapt. Het wordt later teruggebracht in het geheugen voor continue uitvoering.
  • Geheugentoewijzing is een proces waarbij aan computerprogramma's geheugen of ruimte wordt toegewezen.
  • Paging is een opslagmechanisme waarmee het besturingssysteem processen in de vorm van pagina's van de secundaire opslag naar het hoofdgeheugen kan ophalen.
  • Fragmentatie verwijst naar de toestand van een schijf waarin bestanden zijn verdeeld in stukken die over de schijf verspreid zijn.
  • De segmentatiemethode werkt vrijwel hetzelfde als paging. Het enige verschil tussen de twee is dat segmenten een variabele lengte hebben, terwijl bij de pagingmethode de pagina's altijd een vaste grootte hebben.
  • Dynamisch laden is een routine van een programma dat pas wordt geladen als het programma het oproept.
  • Koppelen is een methode waarmee het besturingssysteem verschillende code- en gegevensmodules kan verzamelen en samenvoegen tot één uitvoerbaar bestand.