2-9-9-12分页机制(xp)
10-10-12分页限制
10-10-12分页因为页表PEB只有四个字节所以只能访问2^32 = 4GB物理地址空间,现在的物理内存都大于4GB为了能访问到更多的物理内存2-9-9-12将PEB的大小增加到了8个字节,其中36位用来表示物理页基地址,这样就可以访问到2^36 = 64GB物理地址空间。因为一个物理页大小一般为4kb,为了增加页表中PEB的大小,所以页表长度就减小了(10减到9)。
2-9-9-12分页
线性地址的2是页目录指针表PDTPT的索引,9是页目录表PDT的索引,下一个9是页表PTT的索引,下一个12是页内偏移地址。

PDTPT,PDT,PTT的每一项都是八个字节。CR3现在指向的是PDTPT页目录表指针表,0-4位忽略后0-31位表示PDTPT表物理基地址。

PDTPE是页目录指针表项,其0位依然是P有效位,0-35位指向PDT页目录表(0-11位置0)。

PDE的PS位如果为1,表示物理页大小为2^ 21 (9 + 12)= 2MB,最高位XD(NX)位为不可执行位,如果此位为1则此地址的数据不能作为代码执行。G位是全局位(此线性地址为高2GB地址)只有当其PS位为1时才有G位否则无G位,如果为1那么当CR3变化时,不会清除TLB表中此地址对应的项,提高效率。

PTE也有XD不可执行位和G位全局位,注意只要PDE和PTE中其中一个的XD位为1就可以使此地址对应的数据无法执行。其他位都需要与一下。

在3环读写高2GB地址内存
printf("0x%x", (*(DWORD*)0x8003f048));
(*(DWORD*)0x8003f048) = 0x12345678;
printf("0x%x", (*(DWORD*)0x8003f048));
我们在windbg中查看地址0x8003f048线性地址对应的物理地址等信息。

我们在windbg中将PDE和PTE的的U/S位设为1即可读取此高地址的内存
2-9-9-12分页机制(xp)的更多相关文章
- 10-10-12分页机制(xp)
虚拟地址到物理地址 虚拟地址空间就是32位系统的那4GB,这4GB空间的地址称为虚拟地址.虚拟地址经过分段机制后转化为线性地址,一般虚拟地址都等于线性地址,因为大多数段寄存器的基地址都为0,只有FS段 ...
- ASM:《X86汇编语言-从实模式到保护模式》第16章:Intel处理器的分页机制和动态页面分配
第16章讲的是分页机制和动态页面分配的问题,说实话这个一开始接触是会把人绕晕的,但是这个的确太重要了,有了分页机制内存管理就变得很简单,而且能直接实现平坦模式. ★PART1:Intel X86基础分 ...
- Linux的分段和分页机制
1.分段机制 80386的两种工作模式 80386的工作模式包括实地址模式和虚地址模式(保护模式).Linux主要工作在保护模式下. 分段机制 在保护模式下,80386虚地址空间可达16K个段,每 ...
- Linux内存寻址之分页机制
在上一篇文章Linux内存寻址之分段机制中,我们了解逻辑地址通过分段机制转换为线性地址的过程.下面,我们就来看看更加重要和复杂的分页机制. 分页机制在段机制之后进行,以完成线性—物理地址的转换过程.段 ...
- linux x86内核中的分页机制
Linux采用了通用的四级分页机制,所谓通用就是指Linux使用这种分页机制管理所有架构的分页模型,即便某些架构并不支持四级分页.对于常见的x86架构,如果系统是32位,二级分页模型就可满足系统需求: ...
- Linux分页机制之分页机制的实现详解--Linux内存管理(八)
1 linux的分页机制 1.1 四级分页机制 前面我们提到Linux内核仅使用了较少的分段机制,但是却对分页机制的依赖性很强,其使用一种适合32位和64位结构的通用分页模型,该模型使用四级分页机制, ...
- Linux分页机制之分页机制的演变--Linux内存管理(七)
1 页式管理 1.1 分段机制存在的问题 分段,是指将程序所需要的内存空间大小的虚拟空间,通过映射机制映射到某个物理地址空间(映射的操作由硬件完成).分段映射机制解决了之前操作系统存在的两个问题: 地 ...
- Linux分页机制之概述--Linux内存管理(六)
1 分页机制 在虚拟内存中,页表是个映射表的概念, 即从进程能理解的线性地址(linear address)映射到存储器上的物理地址(phisical address). 很显然,这个页表是需要常驻内 ...
- [转帖]Linux分页机制之分页机制的演变--Linux内存管理(七)
Linux分页机制之分页机制的演变--Linux内存管理(七) 2016年09月01日 20:01:31 JeanCheng 阅读数:4543 https://blog.csdn.net/gatiem ...
- [转帖]Linux分页机制之概述--Linux内存管理(六)
Linux分页机制之概述--Linux内存管理(六) 2016年09月01日 19:46:08 JeanCheng 阅读数:5491 标签: linuxkernel内存管理分页架构更多 个人分类: ┈ ...
随机推荐
- WERTYU_键盘错位(JAVA语言)
package 第三章; import java.util.Scanner; /* * 把手放在键盘上时,稍不注意就会往右错一位.这样,输入Q会变成输入W,输入J会变成输入K等. 输 ...
- vmstat-观察进程上线文切换
vmstat 是一款指定采样周期和次数的功能性监测工具,我们可以看到,它不仅可以统计内存的使用情况,还可以观测到 CPU 的使用率.swap 的使用情况.但 vmstat 一般很少用来查看内存的使用情 ...
- Python数据分析入门(十四):数据分析中常用图
折线图: 折线图用于显示数据在一个连续的时间间隔或者时间跨度上的变化,它的特点是反映事物随时间或有序类别而变化的趋势.示例图如下: 折线图应用场景: 折线图适合X轴是一个连续递增或递减的,对于没有规律 ...
- python基础(一):变量和常量
变量 什么是变量 变量,用于在内存中存放程序数据的容器.计算机的核心功能就是"计算",CPU是负责计算的,而计算需要数据吧?数据就存放在内存里,例如:将梁同学的姓名,年龄存下来,让 ...
- Java(25-40)【数据类型转换、运算符、方法入门】
1.ASCII编码表 0--48 A--65 a--97 2. Unicode万国码 字符'中'为20013 3.算数运算符 double类型的加上int类型结果为double byte short ...
- [C++]一篇文章搞懂C++中五花八门的各种初始化
总结 初始化的概念:创建变量时赋予它一个值(不同于赋值的概念) 类的构造函数控制其对象的初始化过程,无论何时只要类的对象被创建就会执行构造函数 如果对象未被用户指定初始值,那么这些变量会被执行默认初始 ...
- CentOS8搭建FTP服务器
2021.2.20 更新 1 概述 文章核心: CentOS8使用vsftpd搭建FTP服务器 安装以及测试的详细过程 2 安装 2.1 安装vsftpd+ftp sudo yum install - ...
- RedHat 7.6 安装 Mysql 8.0.17
# 查看是否安装mysql rpm -qa | grep -i mysql # 如果有,需要卸载旧版本Mysql及相关依赖包 rpm -e MySQL-client-*** # 查看开机启动服务列表状 ...
- 12.Quick QML-QML 布局(Row、Column、Grid、Flow和嵌套布局) 、Repeater对象
1.Row布局 Row中的item可以不需要使用anchors布局,就能通过行的形式进行布局. 并且item可以使用Positioner附加属性来访问有关其在Row中的位置及其他信息. 示例如下所示, ...
- 2021最新版Dubbo-admin+Zookeeper安装教程
安装程序包 这是写教程时收集好的文件,可直接点击下载,也可以跟着步骤自行下载:https://hanzhe.lanzous.com/ihna9jzcsze Zookeeper下载地址,任选其一点击下载 ...