Sanal Makinelerde Bellek Sanallaştırması

2021-05-12 | Tags: #sanallastirma
Bu yazı güncellenmektedir.

Bu yazıda (bellek - memory) sanallaştırması üzerine aldığım notlar bulunmaktadır.

  • Öncelikle sanallaştırılan sistemlerin fiziksel adresleri hypervisor tarafından oluşturulan sanal bellek adresleridir. Yani sanallaştırılan bir sistemin fiziksel olarak gördüğü bellek aslında hypervisor tarafından oluşturulmuş sanal belleklerden ibarettir. Hypervisor tarafından oluşturulan bu bellekler ise host sisteminde fiziksel adreslere map'lenmiştir.

Bellek haritalandırılması şu şekilde gerçekleşiyor.

GVA ====> GPA ====> HVA ====> HPA
  • GVA: Guest virtual address
  • GPA: Guest Physical address
  • HVA: Host Virtual address
  • HPA: Host Physical address

  • Burada hypervisor bir userspace programı bundan dolayı HPA'ya ulaşmamız mümkün değil. Burada host OS bu işi üsteleniyor ve HVA'dan HPA'ya çeviri işlemlerini üsteleniyor.

MMU

MMU burada iki farklı teknik kullanarak bu çevirme işlemlerini gerçekleştirmektedir. 1. Shadow Paging: VMM GVA'dan HPA'ya bir haritalandırma yapıyor ve MMU'ya bu oluşturulan table'ın pointer'ı veriliyor. 2. Extended Page Tables (EPT): Eğer elimizde donanım desteği varsa MMU sanallaştırma yapıldığının farkına varıyor ve bunları iki farklı page table'da tutarak bu işlemleri gerçekleştiriyor.

Bu işlemler donanıma göre seçilmektedir.

Extended Page Tables

  • Öncelikle GVA adresler üzerinde bakmaya başlıyoruz. Bundan sonra GPA üzerindeki adresi alıyoruz. Bunu da bize guest PTE veriyor.

Shadow Page Table

Kaynaklar

  • https://www.cse.iitb.ac.in/~cs695/

This was the end of the blog post. You can reach me via email umusasadik at gmail com