美文网首页
虚拟地址到物理地址的转换

虚拟地址到物理地址的转换

作者: 今天不想掉头发 | 来源:发表于2019-07-19 09:44 被阅读0次

对于一个虚拟地址,我们如何能够实现到物理地址的转换呢?

我们知道,虚拟地址 = 高10位在页目录表中的偏移量(页目录项pde)+中间10位在页表中的偏移量(页表项pte)+物理页的偏移,因此,如果我们能够获取到虚拟地址所对应的pte的物理地址,那么根据该物理地址和虚拟地址中物理页的偏移量进行结合,就能够得到虚拟地址所对应的真实物理地址。

因为我们起初设计的时候,在页目录项的第1023项中存放的是页目录表的物理地址,我们可以根据此特定来构造出虚拟地址所对应的pte的物理地址。

uint32_t* pte = (uint32_t*)(0xffc00000 + ((vaddr & 0xffc00000) >> 10) + ((vddr & 0x003ff000) >> 12) * 4);
其中的第一部分0xffc00000是通过虚拟地址的高10位进行回环,回到自身页目录表的地址,第二项vaddr & 0xffc00000) >> 10是再用页目录项pde(页目录内页表的索引)做为pte的索引访问到页表,((vddr & 0x003ff000) >> 12)再用pte的索引做为页内偏移。

这样我们就得到的虚拟地址对应的页表项的物理地址,最后我们根据 ((*pte & 0xfffff000) + (vaddr & 0x00000fff)),来找到物理页中所对应的那、个内存地址
.

相关文章

  • 虚拟内存和内存保护(40讲)

    内存需要被分成固定大小的页(Page),通过虚拟地址到物理地址的转换、才能找到实际物理地址、程序看到的地址都是虚拟...

  • 虚拟地址到物理地址的转换

    对于一个虚拟地址,我们如何能够实现到物理地址的转换呢? 我们知道,虚拟地址 = 高10位在页目录表中的偏移量(页目...

  • 关于内存管理和地址转换的小小小小小总结

    关键词:32bit分页,物理地址扩展分页,四级页表,ARM的地址转换,CR3寄存器,虚拟地址到物理地址的映射 因为...

  • 操作系统支持

    存储管理 CPU-MMU-MemoryCPU把虚拟地址发给MMU,转换成物理地址到内存中寻找内容 虚拟内存管理的作...

  • linux内存

    1 内存寻址 1.1 物理地址、虚拟地址以及线性地址 物理地址: 物理内存的内存单元地址 虚拟地址: 程序员看到的...

  • 图解|什么是缺页错误Page Fault

    1. 术语约定 VA:Virtual Address 虚拟地址 PA:Physical Address 物理地址 ...

  • 内核地址空间

    设计 权限 注意:地址空间是由虚拟地址组成的。 设计 直接映射部分特征:资源的虚拟地址等于物理地址;包括:CLIN...

  • 20 内存管理上

    内存管理包括物理地址和虚拟地址 用户态进程使用虚拟地址,内核态大部分也使用虚拟地址。 虚拟空间分为内核空间和用户空...

  • 虚拟地址空间相关--程序员的自我修养

    虚拟地址空间和物理地址空间 物理地址空间是实实在在存在于计算机中,并且对于每一台计算机来说只有一个。虚拟地址空间是...

  • # 征战bat,后台开发面试题(五)——操作系统篇

    题目列表 什么是孤儿进程僵尸进程 怎样创守护进程(附加) 指针对应的地址是不是物理地址 物理地址和虚拟地址通常叫做...

网友评论

      本文标题:虚拟地址到物理地址的转换

      本文链接:https://www.haomeiwen.com/subject/scadlctx.html