虚拟MMU---客户机页表遍历
客户 机页表的遍历 MMU的功能: 虚拟 机地址转换为物理地址,下面函数模拟此过程。 1.数据结构 struct guest_walker { int level; gfn_t table_gfn[PT_MAX_FULL_LEVELS]; pt_element_t ptes[PT_MAX_FULL_LEVELS]; gpa_t pte_gpa[PT_MAX_FULL_LEVELS]; unsign
客户机页表的遍历
MMU的功能:虚拟机地址转换为物理地址,下面函数模拟此过程。
1.数据结构
struct guest_walker {int level;
gfn_t table_gfn[PT_MAX_FULL_LEVELS];
pt_element_t ptes[PT_MAX_FULL_LEVELS];
gpa_t pte_gpa[PT_MAX_FULL_LEVELS];
unsigned pt_access;
unsigned pte_access;
gfn_t gfn;
u32 error_code;
};
+-------+
| |
+-------+
| c |
|-------| | |
+-------+
|-------|
|-------|
+-------+ 某级页表
a:页表项基地址
b:index的地址
c:index的地址内容
遍历完成后,数据结构内容为
gfn:客户机页表转换后物理地址页框号
假设PT_MAX_FULL_LEVELS=4
table_gfn【0-3】存放 4级页表项基地址
pte_gpa【0-3】 存放4级页表项中index基地址
ptes【0-3】 存放4级页表项中index基地址内容
pt_access: gfn的访问权限
pte_access: gfn的访问权限
2:客户机页表的遍历,也是虚拟MMU
static int FNAME(walk_addr)(struct guest_walker *walker,
struct kvm_vcpu *vcpu, gva_t addr,
int write_fault, int user_fault, int fetch_fault)
walker->level = vcpu->arch.mmu.root_level;//64位客户机系统,页表级数为4.
pte = vcpu->arch.cr3; //页目录基地址
for (;;) { //从64位客户机页目录开始遍历,最后到页表
index = PT_INDEX(addr, walker->level);
table_gfn = gpte_to_gfn(pte);
pte_gpa = gfn_to_gpa(table_gfn);
pte_gpa += index * sizeof(pt_element_t);
walker->table_gfn[walker->level - 1] = table_gfn; //存放页表基地址
walker->pte_gpa[walker->level - 1] = pte_gpa; //存放页表index基地址
if (kvm_read_guest(vcpu->kvm, pte_gpa, &pte, sizeof(pte)))//获取存放页表index基地址页表项
goto not_present;
pte_access = pt_access & FNAME(gpte_access)(vcpu, pte);//获取存放页表index基地址页表项权限
walker->ptes[walker->level - 1] = pte;//存放存放页表index基地址页表项
if ((walker->level == PT_PAGE_TABLE_LEVEL)//页表的最后一级存放客户机物理页地址
{
int lvl = walker->level;
walker->gfn = gpte_to_gfn_lvl(pte, lvl);//转换客户机物理页地址为客户机物理页框号
walker->gfn += (addr & PT_LVL_OFFSET_MASK(lvl))
>> PAGE_SHIFT;
break;
}
pt_access = pte_access;
--walker->level; //遍历下一级页表
}
//页表遍历完成后,获取页表的访问权限,存放到数据结构中
walker->pt_access = pt_access;
walker->pte_access = pte_access;
pgprintk("%s: pte %llx pte_access %x pt_access %x\n",
__func__, (u64)pte, pt_access, pte_access);
return 1;
}

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Anda mungkin tertanya-tanya apa yang dilakukan oleh Penyesuai Maya Langsung Wi-Fi Microsoft pada PC anda. Lebih baik yakin bahawa penyesuai rangkaian ini adalah Microsoft dan selamat sepenuhnya. Tetapi jika penyesuai mengacaukan aktiviti anda dan anda tertanya-tanya sama ada ia berbaloi untuk disimpan, panduan ini akan memberikan anda semua yang anda perlu ketahui. Apakah yang dilakukan oleh penyesuai maya Microsoft Wi-Fi Direct? Seperti namanya, Penyesuai Maya Langsung Wi-Fi Microsoft membantu menjadikan PC anda sebagai tempat liputan wayarles. Dengan cara ini, komputer lain boleh menyambung ke PC anda untuk mengakses Internet. Ia melakukan ini dengan memayakan penyesuai rangkaian wayarles. Dengan cara ini, penyesuai wayarles fizikal tunggal anda ditukar kepada dua maya

Khalayak yang biasa dengan "Westworld" tahu bahawa rancangan ini terletak di taman tema dewasa berteknologi tinggi yang besar di dunia masa hadapan Robot mempunyai keupayaan tingkah laku yang serupa dengan manusia, dan boleh mengingati apa yang mereka lihat dan dengar, serta mengulangi jalan cerita teras. Setiap hari, robot ini akan ditetapkan semula dan dikembalikan kepada keadaan asalnya Selepas keluaran kertas kerja Stanford "Generative Agents: Interactive Simulacra of Human Behavior", senario ini tidak lagi terhad kepada filem dan siri TV telah berjaya menghasilkan semula ini tempat kejadian di "Bandar Maya" Smallville 》Alamat kertas peta gambaran keseluruhan: https://arxiv.org/pdf/2304.03442v1.pdf

Java ialah bahasa pengaturcaraan yang popular dengan keupayaan pengendalian fail yang berkuasa. Di Java, melintasi folder dan mendapatkan semua nama fail adalah operasi biasa, yang boleh membantu kami mencari dan memproses fail dengan cepat dalam direktori tertentu. Artikel ini akan memperkenalkan cara melaksanakan kaedah melintasi folder dan mendapatkan semua nama fail dalam Java, dan memberikan contoh kod khusus. 1. Gunakan kaedah rekursif untuk melintasi folder Kita boleh menggunakan kaedah rekursif untuk melintasi folder.

Menurut berita pada 25 September, Huawei Mall telah mula menerima tempahan untuk kereta Wenjie M9 AITO. Kereta ini diletakkan sebagai SUV perdana pintar panoramik dengan ciri yang menarik perhatian. Pengguna hanya perlu membayar deposit sebanyak 5,000 yuan, yang boleh digunakan untuk mengimbangi pembayaran akhir sehingga 10,000 yuan Kereta baharu itu akan tersedia dalam dua versi, iaitu versi jarak lanjutan dan versi elektrik tulen. Harganya dijangka antara 500,000 yuan dan 600,000 yuan, menjadikannya kompetitif dalam pasaran SUV mewah. Wenjie M9 dijangka akan dilancarkan secara rasmi pada suku keempat 2023. Tiada maklumat mengenai konfigurasi khususnya lagi difahamkan bahawa model M9 menggunakan bahasa reka bentuk berorientasikan keluarga. Berdasarkan dua gambar rasmi, garisan sisi kenderaan adalah licin, dan pemegang pintu menggunakan reka bentuk tersembunyi, menambah teknologi pada keseluruhan kenderaan.

Contoh penggunaan fungsi PHPglob(): Melintasi semua fail dalam folder tertentu Dalam pembangunan PHP, selalunya perlu untuk melintasi semua fail dalam folder tertentu untuk melaksanakan operasi kelompok atau membaca fail. Fungsi glob() PHP digunakan untuk mencapai keperluan ini. Fungsi glob() boleh mendapatkan maklumat laluan semua fail yang memenuhi syarat dalam folder yang ditentukan dengan menentukan corak padanan kad bebas. Dalam artikel ini, kami akan menunjukkan cara menggunakan fungsi glob() untuk beralih melalui semua fail dalam folder tertentu

Microsoft hari ini mengumumkan pratonton awal integrasi SharePoint dengan Copilot dalam Dynamics 365 Customer Service. Penyepaduan ini akan memberikan akses kepada ejen perkhidmatan pelanggan kepada rangkaian sumber pengetahuan yang lebih luas, menghasilkan peningkatan produktiviti dan interaksi pelanggan yang lebih baik. Pada masa ini, Copilot dalam Dynamics365 Customer Service memanfaatkan pangkalan pengetahuan dalaman untuk memberikan panduan kepada ejen perkhidmatan pelanggan. Dengan mencadangkan kandungan sembang dan draf e-mel, Copilot telah menjadi alat utama untuk meningkatkan produktiviti pasukan perkhidmatan pelanggan anda. Walau bagaimanapun, maklum balas pelanggan menunjukkan bahawa alat itu perlu memanfaatkan pengetahuan daripada sumber luaran seperti SharePoint. Integrasi Pemacu Kolaboratif SharePoint Sebagai tindak balas kepada maklum balas ini,

Perbezaan konsep: Iterator: Iterator ialah antara muka yang mewakili iterator yang memperoleh nilai daripada koleksi. Ia menyediakan kaedah seperti MoveNext(), Current() dan Reset(), membolehkan anda melintasi elemen dalam koleksi dan beroperasi pada elemen semasa. Boleh lelar: Boleh lelar juga ialah antara muka, mewakili objek boleh lelar. Ia menyediakan kaedah Iterator(), yang mengembalikan objek Iterator untuk memudahkan melintasi elemen dalam koleksi. Penggunaan: Iterator: Untuk menggunakan Iterator, anda perlu mendapatkan objek Iterator dahulu, dan kemudian panggil kaedah MoveNext() untuk beralih ke yang seterusnya

Platform Perdagangan Mata Wang Mata Wang Mata Wang Mata Wang Mata Tinggi: 1. Coinbase, pertukaran utama di Amerika Syarikat, mudah digunakan pematuhan;
