De toewijzing van virtuele adressen aan fysieke adressen in computersystemen is een cruciaal proces waarmee meerdere processen gelijktijdig kunnen worden uitgevoerd terwijl ze schijnbaar exclusieve toegang hebben tot het volledige systeemgeheugen. Dit wordt bereikt door een combinatie van hardware- en softwarecomponenten, voornamelijk de MMU (Memory Management Unit) en de paginatabel . Hier is een overzicht:
1. Virtuele adressen:
* Elk proces krijgt zijn eigen virtuele privéadresruimte. Deze ruimte is onafhankelijk van de virtuele adresruimten van andere processen, wat betekent dat een proces toegang heeft tot adres 0x1000 zonder conflicten met een ander proces dat ook 0x1000 gebruikt.
* Deze virtuele adresruimte is groot en overschrijdt vaak ruimschoots het beschikbare fysieke RAM-geheugen. Hierdoor kunnen processen meer geheugen gebruiken dan fysiek bestaat.
2. Fysieke adressen:
* Dit zijn de daadwerkelijke adressen in het fysieke RAM. De MMU vertaalt virtuele adressen naar fysieke adressen.
* De fysieke adresruimte wordt beperkt door de hoeveelheid RAM die in het systeem is geïnstalleerd.
3. De Geheugenbeheereenheid (MMU):
* De MMU is een hardwarecomponent die de cruciale taak vervult van het vertalen van virtuele adressen naar fysieke adressen. Het doet dit in realtime, elke keer dat een proces toegang probeert te krijgen tot het geheugen.
* Het gebruikt de paginatabel (hieronder beschreven) om de vertaling uit te voeren.
4. Paginatabellen:
* Paginatabellen zijn datastructuren die zich in het geheugen bevinden en die de mapping tussen virtuele pagina's en fysieke frames bevatten.
* Pagina's: De virtuele adresruimte is verdeeld in blokken van vaste grootte, genaamd pagina's. Een typisch paginaformaat is 4 KB.
* Frames: Het fysieke geheugen is op dezelfde manier verdeeld in blokken van vaste grootte, frames genoemd, meestal van dezelfde grootte als pagina's.
* De paginatabel fungeert in wezen als een opzoektabel. Gegeven een virtueel paginanummer, retourneert het het overeenkomstige fysieke framenummer.
5. Het vertaalproces (vereenvoudigd):
1. Virtuele adressegmentatie: Het virtuele adres is verdeeld in twee delen:het virtuele paginanummer (VPN) en de pagina-offset.
2. Paginatabel opzoeken: De VPN wordt gebruikt als index in de paginatabel om de overeenkomstige vermelding te vinden. Deze invoer bevat het Physical Frame Number (PFN) en andere informatie zoals toegangsrechten (lezen, schrijven, uitvoeren).
3. Fysieke adresconstructie: De PFN wordt gecombineerd met de pagina-offset van het oorspronkelijke virtuele adres om het uiteindelijke fysieke adres te creëren.
4. Geheugentoegang: De MMU gebruikt vervolgens dit fysieke adres om toegang te krijgen tot de geheugenlocatie.
6. Paginatabellen op meerdere niveaus:
Om buitensporig grote paginatabellen te vermijden (wat het geval zou zijn als een enkele paginatabel de gehele virtuele adresruimte in kaart zou brengen), gebruiken veel systemen paginatabellen met meerdere niveaus. Hierdoor ontstaat een hiërarchische structuur, waarbij elk niveau naar het volgende verwijst, wat uiteindelijk leidt tot het fysieke framenummer. Dit bespaart geheugen en verbetert de efficiëntie.
7. Translation Lookaside Buffer (TLB):
De TLB is een cache binnen de MMU waarin recentelijk gebruikte virtueel-fysieke adresvertalingen worden opgeslagen. Dit versnelt het vertaalproces aanzienlijk, omdat toegang tot de TLB veel sneller gaat dan toegang tot het hoofdgeheugen om de paginatabel op te zoeken. Als er geen vertaling wordt gevonden in de TLB (een TLB-misser), moet de MMU toegang krijgen tot de paginatabel, wat aanzienlijk langzamer is.
8. Paging en swappen:
* Paging: Als een proces probeert toegang te krijgen tot een pagina die zich momenteel niet in het RAM bevindt (een paginafout), laadt het besturingssysteem de benodigde pagina van de secundaire opslag (harde schijf) in het RAM.
* Ruilen: Het besturingssysteem kan de virtuele adresruimten van hele processen in en uit RAM wisselen om het geheugen efficiënt te beheren.
Samengevat: De toewijzing van virtueel adres aan fysiek adres is een complex maar essentieel mechanisme dat efficiënt geheugenbeheer, bescherming en gelijktijdige uitvoering van meerdere processen mogelijk maakt. De MMU, paginatabellen en de TLB werken samen om deze vertaling naadloos uit te voeren, waardoor deze transparant wordt voor de applicaties. |