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

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Microsoft Wi-Fi Direct 가상 어댑터가 PC에서 어떤 역할을 하는지 궁금할 것입니다. 이 네트워크 어댑터는 Microsoft 제품이며 완벽하게 안전하므로 안심하시기 바랍니다. 그러나 어댑터가 귀하의 활동을 엉망으로 만들고 이를 보관할 가치가 있는지 궁금하다면 이 가이드가 귀하가 알아야 할 모든 것을 제공할 것입니다. Microsoft Wi-Fi Direct 가상 어댑터의 기능은 무엇입니까? 이름에서 알 수 있듯이 Microsoft Wi-Fi Direct 가상 어댑터는 PC를 무선 핫스팟으로 만드는 데 도움이 됩니다. 이렇게 하면 다른 컴퓨터가 사용자의 PC에 연결하여 인터넷에 액세스할 수 있습니다. 이는 무선 네트워크 어댑터를 가상화하여 수행됩니다. 이렇게 하면 단일 물리적 무선 어댑터가 두 개의 가상 어댑터로 변환됩니다.

'웨스트월드'에 익숙한 관객들은 이 쇼가 미래 세계의 거대한 하이테크 성인 테마파크를 배경으로 한다는 것을 알고 있습니다. 로봇은 인간과 유사한 행동 능력을 가지고 있으며 보고 듣는 것을 기억하고 핵심 스토리를 반복할 수 있습니다. 매일 이 로봇은 재설정되어 초기 상태로 돌아갑니다. 스탠포드 논문 "생성 에이전트: 인간 행동의 대화형 시뮬레이션"이 발표된 후 이 시나리오는 더 이상 영화와 TV 시리즈에만 국한되지 않습니다. 스몰빌의 "가상 타운" 장면 》개요 지도 용지 주소: https://arxiv.org/pdf/2304.03442v1.pdf

Java는 강력한 파일 처리 기능을 갖춘 널리 사용되는 프로그래밍 언어입니다. Java에서는 폴더를 탐색하고 모든 파일 이름을 가져오는 것이 일반적인 작업이므로 특정 디렉터리에서 파일을 빠르게 찾고 처리하는 데 도움이 될 수 있습니다. 이 기사에서는 폴더를 탐색하여 모든 파일 이름을 Java로 가져오는 방법을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 재귀적 방법을 사용하여 폴더를 순회할 수 있습니다. 재귀적 방법은 폴더를 효과적으로 순회할 수 있는 자체 호출 방법입니다.

9월 25일 뉴스에 따르면 화웨이 몰에서는 AITO의 Wenjie M9 차량 예약을 받기 시작했습니다. 이 차는 눈길을 사로잡는 기능을 갖춘 파노라믹 스마트 플래그십 SUV로 자리매김했다. 소비자는 5,000위안의 보증금만 지불하면 되며, 이는 최대 10,000위안의 최종 지불액을 상쇄하는 데 사용할 수 있습니다. 새 차는 확장 범위 버전과 순수 전기 버전의 두 가지 버전으로 제공됩니다. 가격은 50만~60만 위안 수준으로 고급 SUV 시장에서 경쟁력을 갖출 것으로 예상된다. Wenjie M9는 2023년 4분기에 공식 출시될 예정입니다. 구체적인 구성에 대한 정보는 아직 공개되지 않았습니다. M9 모델은 가족 중심의 디자인 언어를 채택한 것으로 이해됩니다. 공개된 두 장의 공식 사진을 보면 차량의 측면 라인이 매끄럽고, 도어 핸들도 히든 디자인을 채택해 차량 전체에 기술을 더한 것으로 보인다.

PHPglob() 함수 사용 예: 지정된 폴더의 모든 파일 순회 PHP 개발에서는 일괄 작업이나 파일 읽기를 구현하기 위해 지정된 폴더의 모든 파일을 순회해야 하는 경우가 많습니다. 이 요구 사항을 충족하기 위해 PHP의 glob() 함수가 사용됩니다. glob() 함수는 와일드카드 일치 패턴을 지정하여 지정된 폴더에서 조건을 만족하는 모든 파일의 경로 정보를 얻을 수 있습니다. 이 기사에서는 glob() 함수를 사용하여 지정된 폴더의 모든 파일을 반복하는 방법을 보여줍니다.

Microsoft는 오늘 Dynamics 365 Customer Service의 Copilot과 SharePoint 통합의 초기 미리 보기를 발표했습니다. 이러한 통합을 통해 고객 서비스 상담원은 더 넓은 범위의 지식 소스에 액세스할 수 있게 되어 생산성이 향상되고 고객 상호 작용이 개선됩니다. 현재 Dynamics365 Customer Service의 Copilot은 내부 지식 기반을 활용하여 고객 서비스 상담원에게 지침을 제공합니다. Copilot은 채팅 및 이메일 콘텐츠 초안을 제안함으로써 고객 서비스 팀의 생산성을 높이는 핵심 도구가 되었습니다. 그러나 고객 피드백에 따르면 도구는 SharePoint와 같은 외부 소스의 지식을 활용해야 합니다. SharePoint 협업 운전 통합 이 피드백에 대한 응답으로,

개념적 차이점: Iterator: Iterator는 컬렉션에서 값을 얻는 반복자를 나타내는 인터페이스입니다. MoveNext(), Current() 및 Reset()과 같은 메서드를 제공하여 컬렉션의 요소를 순회하고 현재 요소에 대해 작업을 수행할 수 있습니다. Iterable: Iterable은 반복 가능한 객체를 나타내는 인터페이스이기도 합니다. 컬렉션의 요소 탐색을 용이하게 하기 위해 Iterator 객체를 반환하는 Iterator() 메서드를 제공합니다. 사용법: Iterator: Iterator를 사용하려면 먼저 Iterator 객체를 얻은 후 MoveNext() 메서드를 호출하여 다음 객체로 이동해야 합니다.

2025 년 Cryptocurrency Circle Coinbase, 미국의 주요 교환, 사용하기 쉬운 7.
