启用PAE后虚拟地址到物理地址的转换

34

[原创]启用PAE后虚拟地址到物理地址的转换

安于此生 2013-11-3 20:54 16073


由常规的两级页表转换得不到物理地址的引发的思考?

可能你会发现一个郁闷的事情--按照通常的两级页表的转化得不到正确物理地址,到底是哪个环节出了问题咧,其实一切都是PAE惹的祸!

PAE是神马?

PAE:全称Phyiscal Address Extension,物理地址扩展.

如何判断PAE是否开启了PAE.

一般两个特点:

?我的电脑=》属性=》常规面板中有物理地址扩展的字样。

CR4寄存器的第5位为1说明开启了PAE

说明当前系统启用了PAE.

新的转化规则

转换示意图

规则:

每个项的长度为8

VA为

2位:(30—31)页目录指针表的索引

9位:(21—29)页目录表索引

9位:(12—20)页表索引

12位:(0—11)页内偏移

例如:开启PAE的情况下将计算器进程的入口点0x01012475转化为物理地址

页目录指针表的索引    页目录表索引  页表索引       页内偏移

0x01012475 《=》         00                     000001000   000010010   010001110101

0x0                       0x8         0x12           0x475

1.?!process 0 0获取计算器进程的信息

页目录指针表物理地址:0x17f02c0

2.定位页目录指针表并获取页目录表物理页地址

页目录指针表项的下标为0,所以就是0x06d13801,因此0x06d13000是页目录表物理页面的首地址。

3.定位页表项

0x4250867就是要找的页目录表项,因此页表物理内存页面首地址为0x4250000.

4.定位物理页面

0x56b7000就是物理页面首地址,0x457是偏移,所以0x056b7475就是我们要转化的物理地址了。

正好就是虚拟地址对应的内容。

修改物理地址处首字节对比虚拟地址处显示内容

虚拟地址处内容也随之改变了。

快讯:[快讯]十年后再版!《加密与解密(第4版)》京东开始预售!

上传的附件:

  • jpg 改 rar 

原文地址:https://www.cnblogs.com/kuangke/p/9397642.html

时间: 2024-10-08 03:31:12

启用PAE后虚拟地址到物理地址的转换的相关文章

Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)

                                                                                                     By Lthis 上个月就想写了,一直没时间...网上大概搜了一下,原理与操作倒是一大堆,一直没看到源码实现,总得有人动手,这回轮到我了.东西写得很烂,请大牛勿喷.一直觉得靠源码的方式驱动学习是非常好的一种学习方法,比较直观!声明一下,本教程只有讨论开启PAE与关闭PAE两种,至于PSE是否开启没

虚拟地址和物理地址

物理地址: 放在寻址总线上的地址.放在寻址总线上,如果是读,电路根据这个地址每位的值就将相应地址的物理内存中的数据放到数据总线中传输.如果是写,电路根据这个地址每位的值就将相应地址的物理内存中放入数据总线上的内容.物理内存是以字节(8位)为单位编址的. 虚拟地址:每个进程有4GB的虚拟地址空间,每个进程自己的一套页目录和页表.基于分页机制,4G的地址空间被分成了固定大小的页,每一页或者被映射了物理内存,或者映射硬盘上的交换文件,或者什么也没有映射.程序中使用的都是4GB地址空间中的虚拟地址.而访

浅析线性地址到物理地址的转换

一. 概念介绍: 1.线性地址(linear address)(也称虚拟地址virtual address):是一个32位无符号整数,用来表示高达4GB的地址. 2.物理地址(physical address):实际地址. 3.VM 即虚拟内存 ,PM 即物理内存 4.(1)PGD(Page Global Directory) 即页全局目录. (2)PUD(Page Upper Directory)即页上级目录. (3)PMD(Page Middle Directory)即页中间目录. (4)P

虚拟地址与物理地址之间的关系

MMU 请点评 现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要处理器中的MMU(Memory Management Unit,内存管理单元)提供支持,本节简要介绍MMU的作用. 首先引入两个概念,虚拟地址和物理地址.如果处理器没有MMU,或者有MMU但没有启用,CPU执行单元发出的内存地址将直接传到芯片引脚上,被内存芯片(以下称为物理内存,以便与虚拟内存区分)接收,这称为物理地址(Physical Address,以下简称PA),如下图所示.

x86虚拟地址到物理地址的映射学习

这里只谈分页管理的机制,也是目前最重要的内存管理机制. 最初的设计想法: 结构图如下: 页的尺寸是4KB,虚拟地址的前20位用于指定一个物理页,后12位用于访问页内偏移. 页表项的结构: 各个位的含义: P--位0是存在(Present)标志,用于指明表项对地址转换是否有效.P=1表示有效:P=0表示无效.在页转换过程中,如果说涉及的页目录或页表的表项无效,则会导致一个异常.如果P=0,那么除表示表项无效外,其余位可供程序自由使用,如图4-18b所示.例如,操作系统可以使用这些位来保存已存储在磁

自己学驱动13——内存管理单元MMU(虚拟地址和物理地址)

1.MMU简介 MMU负责完成虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.现代的多用户多进程操作系统通过MMU使得各个用户进程都拥有自己独立的地址空间:地址映射功能使得各个进程拥有"看起来"一样的地址空间,而内存访问权限的检查可以保护每个进程所使用的内存不会被其他进程所破坏.MMU增加了底层的复杂性,但是为上层程序开发提供了极大的方便. 2.虚拟地址与物理地址 虚拟地址最终需要转换为物理地址才能读写实际的数据,这通过将虚拟地址空间.物理地址空间划分为同样大小的一块块空间

Linux驱动虚拟地址和物理地址的映射

一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G. 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间. 每个进程的用户空间都是完全独立.互不相干的,用户进程各自有不同的页表.而内核空间是由内核负责映射,它并不会跟着进程改变,是固定的.内核空间地址有自己对应的页表,内核的虚拟空间独立于其他程序. 3~4G之间的内核空间中,从低地址到高地址依次为:物理内存映射区-隔离带-vmalloc虚拟内存分配区-隔

Linux虚拟地址和物理地址的映射

?背景 一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G.用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间.每个进程的用户空间都是完全独立.互不相干的,用户进程各自有不同的页表.而内核空间是由内核负责映射,它并不会跟着进程改变,是固定的.内核空间地址有自己对应的页表,内核的虚拟空间独立于其他程序.3~4G之间的内核空间中,从低地址到高地址依次为:系统物理内存映射区-隔离带-vmalloc虚拟内存分配

Linux驱动虚拟地址和物理地址的映射(转)

原文地址:http://blog.chinaunix.net/uid-20792373-id-2979673.html 参考链接: Linux 虚拟地址与物理地址的映射关系分析  https://blog.csdn.net/ordeder/article/details/41630945 虚拟地址映射到物理地址的学习(linux篇) https://blog.csdn.net/chablin/article/details/79827226 linux--物理地址到虚拟地址映射,ioremap(