Wat is Geneste paginering (nested paging)?

Methode waarbij de hardware achtereenvolgens twee niveaus van paginatabellen doorloopt: de vertaling die door het besturingssysteem van de virtuele machine wordt beheerd en die van de hypervisor. Verlaagt de tussenkomst van de hypervisor en versnelt virtualisatie.

Japanse benaming: 入れ子ページング

“Geneste paginering (nested paging)” komt voor in 3 oefenvragen uit 1 onderwerpen, bijv. Besturingssysteem en hardware.

Vakgebied: Besturingssysteem en hardware

Twee vertalingen in één hardwarewalk

Een gastbesturingssysteem in een virtuele machine beheert paginatabellen die virtuele adressen van de gast afbeelden op wat het voor fysieke adressen houdt, de zogeheten guest-physical adressen. Dat geheugen staat in werkelijkheid waar de hypervisor het heeft geplaatst. Met geneste paginering, ook wel vertaling in twee fasen genoemd, doorloopt de hardware de paginatabellen van de gast en daarna de eigen tabellen van de hypervisor, en vertaalt zo automatisch van guest-virtual naar guest-physical naar host-physical. De gangbare implementaties zijn Extended Page Tables (EPT) van Intel, Nested Page Tables (NPT) van AMD en de stage-2-vertaling van Arm.

Wat het verving: shadow page tables

Vóór de hardwareondersteuning gebruikten hypervisors shadow page tables: door software bijgehouden tabellen die guest-virtual adressen direct op host-physical adressen afbeeldden en die de echte MMU gebruikte. Om ze correct te houden, moest de hypervisor schrijfacties van de gast naar paginatabellen en wisselingen van adresruimte onderscheppen, wat frequente en dure exits uit de virtuele machine veroorzaakte. Met geneste paginering kan de gast zijn eigen tabellen vrij bewerken, wat de meeste van die exits wegneemt en de hypervisor vereenvoudigt. De prijs verschuift naar de kosten van een TLB-miss.

Waarom een TLB-miss 24 geheugentoegangen kan kosten

Elke entry die de walker van de gast nodig heeft, wordt gevonden via een guest-physical adres, dat zelf eerst via de tabellen van de host moet worden vertaald voordat het kan worden gelezen. Met tabellen van vier niveaus aan beide kanten kost elk gastniveau vier hostleesacties plus één leesactie in de gasttabel, vijf in totaal, dus 20 over vier niveaus, en het vertalen van het uiteindelijke data-adres via de host voegt er nog vier toe: (4 + 1) × (4 + 1) − 1 = 24, tegenover vier bij een native walk. Page-walk caches, TLB's die de uiteindelijke gecombineerde vertaling cachen en grote pagina's aan de hostkant houden de gemiddelde kosten veel lager.

Nu oefenen: vragen over Geneste paginering (nested paging)

Welke uitleg over de adresvertaling door hardware is juist bij virtualisatie met geneste paginering (tweetraps adresvertaling)?

  1. AAlleen de paginatabel van het besturingssysteem van de virtuele machine wordt doorlopen en de tabel van de hypervisor wordt niet gebruikt
  2. BEr wordt in twee trappen vertaald: gast-virtueel naar gast-fysiek naar host-fysiek
  3. CDe hypervisor onderschept alle geheugentoegangen en vertaalt ze telkens in software
Antwoord en toelichting tonen

Antwoord: B. Er wordt in twee trappen vertaald: gast-virtueel naar gast-fysiek naar host-fysiek

Het besturingssysteem van een virtuele machine denkt dat de fysieke adressen die het beheert (gast-fysieke adressen) het echte geheugen zijn, maar in werkelijkheid liggen ze op een andere, door de hypervisor toegewezen plaats. Bij geneste paginering vertaalt de hardware met de paginatabel van de gast tot het gast-fysieke adres en vervolgens met de tabel van de hypervisor tot het fysieke adres van de host. De hypervisor hoeft dan niet meer in te grijpen telkens wanneer de gast zijn paginatabel wijzigt. Alle toegangen in software vertalen zou veel te traag zijn.

Hoeveel geheugentoegangen zijn in het slechtste geval nodig bij een TLB-miss in geneste paginering waarbij zowel gast als host paginatabellen met 4 trappen gebruiken?

  1. A8
  2. B16
  3. C24
Antwoord en toelichting tonen

Antwoord: C. 24

De plaats van elke tabel van de 4 trappen van de gastpaginatabel staat in gast-fysieke adressen, dus vóór het lezen ervan moet met de 4-traps tabel van de host worden vertaald. Per gasttrap zijn dat 5 toegangen (4 van de host + 1 van de gasttabel), bij 4 trappen 20, en daar komen de 4 bij voor het vertalen van het uiteindelijk verkregen gast-fysieke adres van de gegevens zelf met de 4 trappen van de host, samen 24. Als formule: (4 + 1) × (4 + 1) − 1 = 24. 8 is de waarde als men denkt dat 4 trappen twee keer worden doorlopen, waarbij de vertaling van de plaats van de tabellen is vergeten.

Veelgestelde vragen

Wat is het verschil tussen geneste paginering en shadow paging?

Bij shadow paging houdt de hypervisor in software gecombineerde tabellen van guest-virtual naar host-physical bij en onderschept hij updates van de paginatabellen van de gast. Bij geneste paginering doorloopt de hardware de tabellen van gast en host na elkaar, zodat de gast zijn eigen tabellen bijwerkt zonder tussenkomst van de hypervisor.

Hoeveel geheugentoegangen vraagt een geneste page walk?

Met paginatabellen van vier niveaus in zowel gast als host kan een TLB-miss in het slechtste geval tot 24 geheugentoegangen vragen, tegenover vier bij een niet-gevirtualiseerde walk.

Is geneste paginering hetzelfde als geneste virtualisatie?

Nee. Geneste paginering is adresvertaling in twee fasen voor gewone virtuele machines, terwijl geneste virtualisatie betekent dat er een hypervisor binnen een virtuele machine draait.

“Geneste paginering (nested paging)” in de toelichting

Vragen met “Geneste paginering (nested paging)” (3)

  1. Welke uitleg over de adresvertaling door hardware is juist bij virtualisatie met geneste paginering (tweetraps adresvertaling)?
  2. Hoeveel geheugentoegangen zijn in het slechtste geval nodig bij een TLB-miss in geneste paginering waarbij zowel gast als host paginatabellen met 4 trappen gebruiken?
  3. Hoe heet de software waarmee op één computer meerdere besturingssystemen elk als onafhankelijke virtuele machine tegelijk kunnen draaien?

Verwante termen

Hypervisor Paginatabel TLB (translation lookaside buffer) Apparaatstuurprogramma (device driver) ASID (address space identifier) Bevoorrechte modus (privileged mode) Contextwissel (context switch) Copy-on-write Demand paging Interrupt handler

Naar de woordenlijst