Verschil tussen semafonie en segmentatie

Geheugenbeheer is een van de basisfuncties van het besturingssysteem. Met moderne besturingssystemen kan elk proces meer virtueel geheugen krijgen dan de totale grootte van het werkelijke (fysieke) geheugen op een bepaald computersysteem. Het belangrijkste doel van geheugenbeheer is dat door het combineren van groot maar langzaam geheugen met een klein maar snel geheugen, het effect van groter snel geheugen wordt bereikt.

Wat is paging?

Het scheiden van vaste en variabele partitionering is niet effectief in termen van geheugengebruik, aangezien vaste partitionering resulteert in interne, terwijl dynamische in externe fragmentatie. Een mogelijke oplossing voor het probleem van fragmentatie is om het proces niet naar een continu geheugenblok te laten schrijven. Het programma kan willekeurig in het geheugen worden verspreid. In dit geval is het werkgeheugen verdeeld in kleinere blokken van vaste grootte, frames genaamd. De logische adresruimte van het programma is ook verdeeld in blokken van dezelfde grootte, pagina's genaamd. Wanneer een programma in het geheugen wordt ingevoerd, worden de pagina's in vrije geheugenkaders geschreven. Voor het gemak van het overbrengen van programma's van een schijf naar een werkgeheugen, is de schijf ook verdeeld in frames van dezelfde grootte als de geheugenframes. Aldus wordt één frame van de schijf geschreven in één frame van het werkgeheugen. Het pagingsysteem werkt op de volgende manier: wanneer het programma wordt geaccepteerd voor uitvoering, wordt de grootte berekend, die wordt uitgedrukt met het vereiste aantal pagina's. Als er voldoende frames beschikbaar zijn, wordt het proces opgeslagen op de geheugenpagina per pagina. Tegelijkertijd wordt het aantal frames waarin elke pagina is geschreven ingevoerd in de frametabel.

Wat is segmentatie?

Het gebruikersprogramma en bijbehorende gegevens kunnen worden onderverdeeld in een aantal segmenten. Segmenten van alle programma's hoeven niet van dezelfde grootte te zijn, hoewel er een maximale segmentlengte is. Net als bij paging bestaat het logische adres dat de segmentatie gebruikt uit twee delen, in dit geval het aantal segmenten en dislocaties binnen dat segment. Vanwege het gebruik van segmenten van verschillende grootten, is segmentatie vergelijkbaar met dynamische partitionering. Bij afwezigheid van een overlay-schema of gebruik van virtueel geheugen, is het vereist dat alle programmasegmenten in het geheugen worden geladen voor uitvoering. Het verschil met dynamische partitionering is dat segmentering meer dan één partitie kan hebben en die partitie niet aangrenzend hoeft te zijn. Segmentatie lost het probleem van interne fragmentatie op, maar net als dynamische partitionering blijft het probleem van externe fragmentatie bestaan. Omdat het proces echter is verdeeld in een aantal kleinere delen, is de externe fragmentatie meestal kleiner. In tegenstelling tot paging die onzichtbaar is voor de programmeur, is segmentatie meestal zichtbaar en geschikt voor het organiseren van programma's en gegevens. Voor modulaire programmering kan het programma of de gegevens verder worden onderverdeeld in verschillende kleinere segmenten. Het nadeel van deze techniek is dat de programmeur de beperkingen van de maximale segmentgrootte kent. Het volgende gemak van het gebruik van segmenten van verschillende grootten is dat er geen potentiële verbinding is tussen logische en fysieke adressen. Net als bij paging, maakt de eenvoudige segmenteringstechniek gebruik van een segmententabel voor elk proces en een lijst met beschikbare blokken in het hoofdgeheugen.

Verschil tussen semafonie en segmentatie

1. Concept van semafonie en segmentering

Paging levert een virtuele en een fysieke adresruimte en een secundaire geheugenruimte op blokken (pagina's) van gelijke lengte. Hierdoor kan de continue virtuele adresruimte worden toegewezen aan het proces van verspreiding (niet noodzakelijkerwijs continu gedistribueerd) in de reële adresruimte en het secundaire geheugen. Zelfs de pagina verwijst als term naar geheugen in plaats van naar logische objecten die zichtbaar zijn op programmaniveau. Segmentatie levert een virtuele adresruimte op blokken (segmenten) die direct overeenkomen met objecten op programmaniveau. Vanwege dit heeft het segment geen vaste lengte, dus zelfs de segmentgrootte kan tijdens de uitvoering van het programma worden gewijzigd. Bescherming en deling zijn daarom mogelijk op objectniveau en er zijn zichtbare processen waarbij segmentatie wordt uitgevoerd.

2. Kenmerken van paging en segmentatie

De ontwikkelaar van de app is niet op de hoogte van de paging. Hij schrijft programma's alsof het geheugen lineair is, en het besturingssysteem en de processor maken zich zorgen over het partitioneren en converteren naar virtuele adressen. Programmeur op segmentatiesystemen vermeldt echter twee delen van het adres, segment en pagina in hun programma's. Alle pagina's hebben dezelfde grootte terwijl de segmenten anders zijn. Segmentatie heeft meerdere lineaire adresruimten en er wordt slechts één gepaafd. Segmenten maken logische partitionering en bescherming van applicatiecomponenten mogelijk en pagina's niet.

3. Voordelen van paging en segmentatie

Paging, dat transparant is voor de programmeur, elimineert externe fragmentatie en zorgt zo voor een efficiënt gebruik van het hoofdgeheugen. De stukken die in en uit het hoofdgeheugen bewegen, zijn vast en even groot, dus het is mogelijk om geavanceerde algoritmen voor geheugenbeheer te ontwikkelen die het gedrag van het programma benutten. Segmentatie is zichtbaar voor de ontwikkelaar en heeft de mogelijkheid om de groei van gegevensstructuur, modulariteit en ondersteuning voor uitwisseling en bescherming te beheren.

Paging vs. segmentatie: vergelijkingsdiagram

paging

Segmentatie

vaste pagina's segmenten hebben geen vaste grootte
onzichtbaar voor programmeur zichtbaar voor programmeur
een lineaire adresruimte meerdere lineaire adresruimten
staat geen logische partitionering en bescherming van applicatiecomponenten toe toestaat

Samenvatting van paging en segmentatie

  • Paging is gebaseerd op de distributie van de volledige adresruimte op blokken met een vaste lengte die worden bediend als geheugen kwantiseert. Verder is het noodzakelijk om een ​​middel te verschaffen voor het markeren van beschikbaar geheugen dat kan worden uitgevoerd door de aanwezigheid van de "kop" van elke pagina die de status van de pagina aangeeft (globaal verbonden lijst waar elk knooppunt naar de volgende vrije pagina verwijst) of door het plaatsen van het gratis pagina-adres in de globale array, wat meestal de slechtste oplossing is.
  • Segmentatie betekent dat de adresruimte wordt verdeeld in segmenten met duidelijk aangegeven toegangsrechten tot de MMU-processor. Binnen het segment wijzen de processen precies zoveel geheugen toe als ze nodig hebben, maar het probleem van geheugenbeheer is hoe een dergelijke toewijzing kan worden verschaft waar het groot genoeg continu blokgeheugen kan behouden dat enige tijd nodig kan hebben.