x86 分页机制——虚拟地址到物理地址寻址
x86下的分页机制有一个特点:PAE模式
PAE模式
物理地址扩展,是基于x86 的服务器的一种功能,它使运行 Windows Server 2003, Enterprise Edition 和 Windows Server 2003,Datacenter Edition 的计算机可以支持4GB 以上物理内存。物理地址扩展 (PAE) 允许将最多64GB 的物理内存用作常规的4 KB 页面,并扩展内核能使用的位数以将物理内存地址从32扩展到36。
控制寄存器与分页机制相关的标志位

未开启PAE模式下线性地址的对应关系


一般情况下都是一页大小都是4KB,4M为大页面转化方式
实践:
测试代码:
int main()
{
char* v1 = "HelloWorld";
printf("%p\r\n", v1);
while (1)
{
}
return 0;
}

虚拟地址的意义


13ff6c = 转二进制=》 0000000000 0100111111 111101101100
高10位=0 12到21位=13f 低12位=f6c
PDE索引 PTE索引 页内偏移
PROCESS 866639c8 SessionId: 0 Cid: 0330 Peb: 7ffd7000 ParentCid: 0700
DirBase: 1d50c000 ObjectTable: e1382268 HandleCount: 13.
Image: hello.exe
PROCESS 8619c428 SessionId: 0 Cid: 0f2c Peb: 7ffdd000 ParentCid: 0330
DirBase: 1d78a000 ObjectTable: e21e0270 HandleCount: 38.
Image: conime.exe
kd> !dq 1d50c000
#1d50c000 1d7b7067`1d6f8067 00000000`00000000
#1d50c010 00000000`00000000 00000000`00000000
#1d50c020 00000000`00000000 00000000`00000000
#1d50c030 00000000`00000000 00000000`00000000
#1d50c040 00000000`00000000 00000000`00000000
#1d50c050 00000000`00000000 00000000`00000000
#1d50c060 00000000`00000000 00000000`00000000
#1d50c070 00000000`00000000 00000000`00000000
kd> !dd 1d50c000 PDE索引=0
#1d50c000 1d6f8067 1d7b7067 00000000 00000000
#1d50c010 00000000 00000000 00000000 00000000
#1d50c020 00000000 00000000 00000000 00000000
#1d50c030 00000000 00000000 00000000 00000000
#1d50c040 00000000 00000000 00000000 00000000
#1d50c050 00000000 00000000 00000000 00000000
#1d50c060 00000000 00000000 00000000 00000000
#1d50c070 00000000 00000000 00000000 00000000
kd> !dd 1d6f8000+0x13f*4 PTE索引=13f 每一项4字节
#1d6f84fc 1d560067 13391025 133d2025 00000000
#1d6f850c 00000000 00000000 00000000 00000000
#1d6f851c 00000000 00000000 00000000 00000000
#1d6f852c 00000000 00000000 00000000 00000000
#1d6f853c 00000000 1d665067 1d666067 1d4a9067
#1d6f854c 1d673067 1d5fb067 1d6c3067 1d688067
#1d6f855c 1d821067 00000080 00000000 00000000
#1d6f856c 00000000 00000000 00000000 00000000
kd> !db 1d560000+f6c 页内偏移f6c
#1d560f6c 48 65 6c 6c 6f 57 6f 72-6c 64 00 00 00 00 00 00 HelloWorld......
#1d560f7c 00 00 00 00 c0 ff 13 00-d9 87 40 00 01 00 00 00 ..........@.....
#1d560f8c 80 0e 44 00 c0 0d 44 00-39 00 39 00 34 00 34 00 ..D...D.9.9.4.4.
#1d560f9c 00 70 fd 7f 06 00 00 00-04 1d 45 ee 94 ff 13 00 .p........E.....
#1d560fac 9f 2c 58 80 e0 ff 13 00-04 f8 40 00 f8 f3 42 00 .,X.......@...B.
#1d560fbc 00 00 00 00 f0 ff 13 00-67 70 81 7c 39 00 39 00 ........gp.|9.9.
#1d560fcc 34 00 34 00 00 70 fd 7f-00 ac 19 e2 c8 ff 13 00 4.4..p..........
#1d560fdc a8 6d 34 86 ff ff ff ff-c0 9a 83 7c 70 70 81 7c .m4........|pp.|
找到HelloWorld。
开启PAE模式的情况:30~31位变成了PDPTE

相关博客:http://blog.csdn.net/zfdyq0/article/details/40954721
x86 分页机制——虚拟地址到物理地址寻址的更多相关文章
- x64 分页机制——虚拟地址到物理地址寻址
原博客:http://www.cnblogs.com/lanrenxinxin/p/4735027.html 详细的理论讲解都在上面 下面说的是通过windbg手动进行寻址,深入理解 x64: 实践: ...
- linux x86内核中的分页机制
Linux采用了通用的四级分页机制,所谓通用就是指Linux使用这种分页机制管理所有架构的分页模型,即便某些架构并不支持四级分页.对于常见的x86架构,如果系统是32位,二级分页模型就可满足系统需求: ...
- Linux内存寻址之分段机制及分页机制【转】
前言 本文涉及的硬件平台是X86,如果是其他平台的话,如ARM,是会使用到MMU,但是没有使用到分段机制: 最近在学习Linux内核,读到<深入理解Linux内核>的内存寻址一章.原本以为 ...
- ASM:《X86汇编语言-从实模式到保护模式》第16章:Intel处理器的分页机制和动态页面分配
第16章讲的是分页机制和动态页面分配的问题,说实话这个一开始接触是会把人绕晕的,但是这个的确太重要了,有了分页机制内存管理就变得很简单,而且能直接实现平坦模式. ★PART1:Intel X86基础分 ...
- Linux内存寻址之分页机制
在上一篇文章Linux内存寻址之分段机制中,我们了解逻辑地址通过分段机制转换为线性地址的过程.下面,我们就来看看更加重要和复杂的分页机制. 分页机制在段机制之后进行,以完成线性—物理地址的转换过程.段 ...
- x86架构:分页机制和原理
分页是现在CPU核心的管理内存方式,网上介绍材料很多,这里不赘述,简单介绍一下分页的背景和原理 1.先说说为什么要分段 实模式下程序之间不隔离,互相能直接读写对方内存,或跳转到其他进程的代码运行,导致 ...
- 操作系统:x86下内存分页机制 (1)
前置知识: 分段的概念(当然手写过肯定是坠吼的 为什么要分页 当我们写程序的时候,总是倾向于把一个完整的程序分成最基本的数据段,代码段,栈段.并且普通的分段机制就是在进程所属的LDT中把每一个段给标识 ...
- x86虚拟地址到物理地址的映射学习
这里只谈分页管理的机制,也是目前最重要的内存管理机制. 最初的设计想法: 结构图如下: 页的尺寸是4KB,虚拟地址的前20位用于指定一个物理页,后12位用于访问页内偏移. 页表项的结构: 各个位的含义 ...
- Linux分页机制之分页机制的实现详解--Linux内存管理(八)
1 linux的分页机制 1.1 四级分页机制 前面我们提到Linux内核仅使用了较少的分段机制,但是却对分页机制的依赖性很强,其使用一种适合32位和64位结构的通用分页模型,该模型使用四级分页机制, ...
随机推荐
- HDU - 4686 函数积的前缀和
题意:求\(\sum_{i=0}^{n-1}a_ib_i\) 其中,\(a_i=A_xa_{i-1}+A_y,b_i=B_xb_{i-1}+B_y\) 构造矩阵分别维护\(a_ib_i,a_i,b_i ...
- [转] javascript 判断对象是否存在的10种方法总结
[From] http://www.jb51.net/article/44726.htm Javascript语言的设计不够严谨,很多地方一不小心就会出错.举例来说,请考虑以下情况.现在,我们要判断一 ...
- openssl-devel和openssl 是什么具体关系
[转自] https://zhidao.baidu.com/question/919579491101051499.html Redhat在封装openssl的时候,把openssl分成了几个部分,执 ...
- 从fis中得来的数据结构,Object版,
/* * config * caoke */ 'use strict'; //You can't use merge in util.js function merge(source, target) ...
- 51Nod - 1179
给出N个正整数,找出N个数两两之间最大公约数的最大值.例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5. Input第1行:一个数N,表示输入 ...
- bugzilla部署问题
2018-09-25 1.部署环境 kvm虚拟机内 centos 7 系统 httpd+mariadb+bugzilla 关闭系统selinux.防火墙 setenforce 临时关闭se ...
- pg存储过程和sql语句块
展E宝项目使用的是postgresql数据库,批量发送红包需求,需要采用存储过程来初始化红包记录数据. 创建存储过程语句有固定的架子,如下 CREATE OR REPLACE FUNCTION pub ...
- 用js(JavaScript-jQuery)解析XML文件 无法成功 获得XML对象,字符串一些心得
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/7822962.html 解析XML文件遇到的问题 今天秦博士叫我解析一下XML文件,将里面的所有 ...
- bzoj 3576: [Hnoi2014]江南乐
Description 小A是一个名副其实的狂热的回合制游戏玩家.在获得了许多回合制游戏的世界级奖项之后,小A有一天突然想起了他小时候在江南玩过的一个回合制游戏. 游戏的规则是这样的,首先给定一个数F ...
- java连接sql server数据库
1.新建项目,导入包 sqljdbc4.jar或sqljdbc.jar(jdk1.7版本) 2.新建类文件ConnectionDB.java package hello; import java.s ...