虚拟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;
}

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Vous vous demandez peut-être ce que fait l'adaptateur virtuel Microsoft Wi-Fi Direct sur votre PC. Soyez assuré que cet adaptateur réseau est Microsoft et totalement sécurisé. Mais si l'adaptateur perturbe votre activité et que vous vous demandez s'il vaut la peine de le conserver, ce guide vous donnera tout ce que vous devez savoir. À quoi sert l’adaptateur virtuel Microsoft Wi-Fi Direct ? Comme son nom l'indique, l'adaptateur virtuel Microsoft Wi-Fi Direct contribue à faire de votre PC un point d'accès sans fil. De cette façon, d'autres ordinateurs peuvent se connecter à votre PC pour accéder à Internet. Pour ce faire, il virtualise les adaptateurs réseau sans fil. De cette façon, votre unique adaptateur sans fil physique est converti en deux

Le public familier avec "Westworld" sait que ce spectacle se déroule dans un immense parc à thème pour adultes de haute technologie dans le monde futur. Les robots ont des capacités comportementales similaires à celles des humains, et peuvent se souvenir de ce qu'ils voient et entendent et répéter le scénario principal. Chaque jour, ces robots seront réinitialisés et ramenés à leur état initial. Après la publication de l'article de Stanford « Generative Agents : Interactive Simulacra of Human Behaviour », ce scénario ne se limite plus aux films et aux séries télévisées. L'IA a réussi à le reproduire. scène dans la « ville virtuelle » de Smallville 》Aperçu de l'adresse du papier cartographique : https://arxiv.org/pdf/2304.03442v1.pdf

Java est un langage de programmation populaire doté de puissantes capacités de gestion de fichiers. En Java, parcourir un dossier et obtenir tous les noms de fichiers est une opération courante, qui peut nous aider à localiser et traiter rapidement les fichiers dans un répertoire spécifique. Cet article explique comment implémenter une méthode permettant de parcourir un dossier et d'obtenir tous les noms de fichiers en Java, et fournit des exemples de code spécifiques. 1. Utilisez la méthode récursive pour parcourir le dossier. Nous pouvons utiliser la méthode récursive pour parcourir le dossier. La méthode récursive est un moyen de s'appeler, qui peut parcourir efficacement le dossier.

Selon les informations du 25 septembre, Huawei Mall a commencé à accepter des réservations pour la voiture Wenjie M9 d'AITO. Cette voiture se positionne comme un SUV phare intelligent panoramique doté de caractéristiques accrocheuses. Les consommateurs n'ont qu'à payer une caution de 5 000 yuans, qui peut être utilisée pour compenser le paiement final pouvant aller jusqu'à 10 000 yuans. La nouvelle voiture sera disponible en deux versions, à savoir la version à autonomie étendue et la version purement électrique. Le prix devrait se situer entre 500 000 et 600 000 yuans, ce qui le rend compétitif sur le marché des SUV haut de gamme. Le Wenjie M9 devrait être officiellement lancé au quatrième trimestre 2023. Aucune information sur sa configuration spécifique n'a encore été divulguée. Il est entendu que le modèle M9 adopte un langage de conception axé sur la famille. À en juger par les deux photos officielles, les lignes latérales du véhicule sont lisses et les poignées de porte adoptent un design caché, ajoutant de la technologie à l'ensemble du véhicule.

Exemple d'utilisation de la fonction PHPglob() : Parcourir tous les fichiers d'un dossier spécifié Dans le développement PHP, il est souvent nécessaire de parcourir tous les fichiers d'un dossier spécifié pour implémenter une opération par lots ou une lecture de fichiers. La fonction glob() de PHP est utilisée pour répondre à cette exigence. La fonction glob() peut obtenir les informations de chemin de tous les fichiers qui remplissent les conditions dans le dossier spécifié en spécifiant un modèle de correspondance générique. Dans cet article, nous allons montrer comment utiliser la fonction glob() pour parcourir tous les fichiers d'un dossier spécifié.

Microsoft a annoncé aujourd'hui un premier aperçu de l'intégration de SharePoint avec Copilot dans Dynamics 365 Customer Service. Cette intégration donnera aux agents du service client l'accès à un plus large éventail de sources de connaissances, ce qui se traduira par une productivité accrue et de meilleures interactions avec les clients. Actuellement, Copilot dans Dynamics365 Customer Service exploite une base de connaissances interne pour fournir des conseils aux agents du service client. En suggérant des discussions et des brouillons de contenu d'e-mails, Copilot est devenu un outil clé pour augmenter la productivité de votre équipe de service client. Cependant, les commentaires des clients indiquent que l'outil doit exploiter les connaissances provenant de sources externes telles que SharePoint. Intégration de conduite collaborative SharePoint En réponse à ces commentaires,

Différences conceptuelles : Itérateur : Iterator est une interface qui représente un itérateur qui obtient les valeurs d'une collection. Il fournit des méthodes telles que MoveNext(), Current() et Reset(), vous permettant de parcourir les éléments de la collection et d'opérer sur l'élément actuel. Iterable : Iterable est également une interface, représentant un objet itérable. Il fournit la méthode Iterator(), qui renvoie un objet Iterator pour faciliter la traversée des éléments de la collection. Utilisation : Iterator : Pour utiliser Iterator, vous devez d'abord obtenir un objet Iterator, puis appeler la méthode MoveNext() pour passer au suivant.

Top 10 des plates-formes de devises virtuelles dans le cercle de la crypto-monnaie 2025: Okx, connu pour sa haute liquidité, ses échanges élevés, avec une énorme base d'utilisateurs; .
