Voor het berekenen van een fysiek adres uit een logisch adres is een geheugenbeheereenheid (MMU) vereist en kennis van de paginatabel(len). Het proces omvat verschillende stappen:
1. Segmentatie (indien van toepassing):
* Sommige systemen gebruiken naast paging ook segmentatie. Als segmentatie wordt gebruikt, wordt het logische adres eerst opgesplitst in een segmentnummer en een offset binnen dat segment. Het segmentnummer wordt vervolgens gebruikt om de corresponderende segmentdescriptor in de segmenttabel te lokaliseren. De segmentdescriptor bevat informatie zoals het basisadres van het segment in het fysieke geheugen en de limiet (grootte).
* Als het segmentnummer ongeldig is of de offset de segmentlimiet overschrijdt, treedt er een segmentatiefout op.
2. Paging:
* Of er nu wel of geen segmentatie wordt gebruikt, paging is bijna altijd betrokken bij moderne systemen. Het logische adres (of de offset van de vorige segmentatiestap) is verdeeld in een paginanummer en een pagina-offset.
* Het paginanummer wordt gebruikt als index in een paginatabel . Deze tabel wijst virtuele paginanummers toe aan fysieke framenummers. Elke invoer in de paginatabel bevat het fysieke framenummer (of een verwijzing naar een paginatabel op een lager niveau bij paging op meerdere niveaus) waar de overeenkomstige pagina zich in het fysieke geheugen bevindt.
* Paging op meerdere niveaus: Om zeer grote adresruimten efficiënt te beheren, gebruiken systemen vaak paginatabellen met meerdere niveaus (bijvoorbeeld twee niveaus, drie niveaus, enz.). Dit vermijdt het hebben van één enkele gigantische paginatabel. In dit geval wordt het paginanummer verder uitgesplitst om achtereenvolgens lagere niveaus van paginatabellen te indexeren totdat het uiteindelijke fysieke framenummer wordt gevonden. Elke vermelding in een paginatabel op een hoger niveau verwijst naar het volgende niveau.
* Als er geen paginatabelinvoer aanwezig is (paginafout), moet het besturingssysteem de vereiste pagina van secundaire opslag (bijvoorbeeld harde schijf) in het hoofdgeheugen laden. Dit houdt in dat het huidige proces wordt opgeschort.
3. Berekening van fysiek adres:
* Zodra het fysieke framenummer is verkregen uit de paginatabel(len), het fysieke adres wordt berekend door het fysieke framenummer aan elkaar te koppelen en de pagina-offset . De pagina-offset blijft tijdens het vertaalproces ongewijzigd.
Formule (vereenvoudigd voor paginering op één niveau):
`Fysiek adres =(Paginanummer * Paginaformaat) + Pagina-offset'
Waar:
* Paginanummer: Verkregen van het logische adres.
* Paginagrootte: Een door het systeem gedefinieerde constante (bijvoorbeeld 4 KB).
* Pagina-offset: Verkregen van het logische adres.
Samengevat: De MMU gebruikt het logische adres en de paginatabellen om adresvertaling uit te voeren. Het proces omvat het opzoeken van gegevens in de paginatabellen om het fysieke framenummer te vinden dat overeenkomt met het logische paginanummer, en dit vervolgens te combineren met de pagina-offset om het uiteindelijke fysieke adres te verkrijgen. De complexiteit neemt toe met het gebruik van segmentatie en paging op meerdere niveaus. Het besturingssysteem speelt een cruciale rol bij het beheren van de paginatabellen en het afhandelen van paginafouten. |