关键字:Windows 2000内存篇 分页机制介绍 一 Linux系统下硬盘ISO启动方法介绍 Linux系统环境变量配置文件介绍 密码强度检测机制 移动硬盘中安装多个虚拟操作系统 虚拟内存太低 让电脑停止内存过小报警 让Vista和XP双系统共享虚拟内存 在Vista中自动清除虚拟内存页面
基本概念
Windows 2000 使用基于分页机制
虚拟内存
每个进程有4GB
虚拟地址空间
基于分页机制
这4GB地址空间
一些部分被映射
物理内存
一些部分映射硬盘上
交换文件
一些部分什么也没有映射
程序中使用
都
4GB地址空间中
虚拟地址
而访问物理内存
需要使用物理地址
大学城uniuc.com
下面我们看看什么
物理地址
什么
虚拟地址
物理地址 (physical address): 放在寻址总线上
地址
放在寻址总线上
如果
读
电路根据这个地址每位
值就将相应地址
物理内存中
数据放到数据总线中传输
如果
写
电路根据这个地址每位
值就将相应地址
物理内存中放入数据总线上
内容
物理内存
以字节(8位)为单位编址
天地广owide.com
虚拟地址 (virtual address): 4G虚拟地址空间中
地址
程序中使用
都
虚拟地址
行业搜hysoo.com
如果CPU寄存器中
分页标志位被设置
那么执行内存操作
机器指令时
CPU会自动根据页目录和页表中
信息
把虚拟地址转换成物理地址
完成该指令
比如 mov eax,004227b8h
这
把地址004227b8h处
值赋给寄存器
汇编代码
004227b8这个地址就
虚拟址
CPU在执行这行代码时
发现寄存器中
分页标志位已经被设定
就自动完成虚拟地址到物理地址
转换
使用物理地址取出值
完成指令
对于Intel CPU 来说
分页标志位
寄存器CR0
第31位
为1表示使用分页
为0表示不使用分页
对于初始化之后
Win2k 我们观察CR0
发现第31位为1
表明Win2k
使用分页
无忧词典51dic.com
使用
分页机制之后
4G
地址空间被分成
固定大小
页
每一页或者被映射到物理内存
或者被映射到硬盘上
交换文件中
或者没有映射任何东西
对于一般程序来说
4G
地址空间
只有一小部分映射
物理内存
大片大片
部分
没有映射任何东西
物理内存也被分页
来映射地址空间
对于32bit
Win2k
页
大小
4K字节
CPU用来把虚拟地址转换成物理地址
信息存放在叫做页目录和页表
结构里
大学城uniuc.com
物理内存分页
一个物理页
大小为4K字节
第0个物理页从物理地址 0x00000000 处开始
由于页
大小为4KB
就
0x1000字节
所以第1页从物理地址 0x00001000处开始
第2页从物理地址0x00002000处开始
可以看到由于页
大小
4KB
所以只需要32bit
地址中高20bit来寻址物理页
无忧词典51dic.com
页表
一个页表
大小为4K字节
放在一个物理页中
由1024个4字节
页表项组成
页表项
大小为4个字节(32bit)
所以一个页表中有1024个页表项
页表中
每一项
内容(每项4个字节,32bit)高20bit用来放一个物理页
物理地址
低12bit放着一些标志
天地广owide.com
页目录
一个页目录大小为4K字节
放在一个物理页中
由1024个4字节
页目录项组成
页目录项
大小为4个字节(32bit)
所以一个页目录中有1024个页目录项
页目录中
每一项
内容(每项4个字节)高20bit用来放一个页表(页表放在一个物理页中)
物理地址
低12bit放着一些标志
行业搜hysoo.com

