没有合适的资源?快使用搜索试试~ 我知道了~
WINDOWS页式内存管理.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 82 浏览量
2022-07-07
04:01:33
上传
评论
收藏 354KB DOCX 举报
温馨提示
试读
15页
WINDOWS页式内存管理偶然的机会看了WIDNOWS内核原理与实现,其中介绍了WINDOWS页式内存管理,仔细看了两天两夜才完全明白。究其难以理解的原因,我发现主要是名词太多,什么虚拟地址、虚拟地址空间、CR3寄存器、PTE、PDE、PTE所在页面的虚拟地址,PET的虚拟地址等等,让刚学习页式内存管理的人,立刻陷于迷雾之中。另外16进制和2进制的转换过于频繁,叙述者阐述过于简单,也是难以明了页目录自映射精妙的原因所在。为了使其它想了解页式管理的人不在走弯路,尽快明白页式管理的精妙所在,故撰写此文。为什么要进行页式内存管理呢?大家都知道WINDOWS
资源推荐
资源详情
资源评论
WINDOWS 页式内存管理
偶然的机会看了 WIDNOWS 内核原理与实现,其中介绍了 WINDOWS 页式内
存管理,仔细看了两天两夜才完全明白。究其难以理解的原因,我发现主要是名
词太多,什么虚拟地址、虚拟地址空间、CR3 寄存器、PTE、PDE、PTE 所在页面
的虚拟地址,PET 的虚拟地址等等,让刚学习页式内存管理的人,立刻陷于迷雾
之中。另外 16 进制和 2 进制的转换过于频繁,叙述者阐述过于简单,也是难以明
了页目录自映射精妙的原因所在。为了使其它想了解页式管理的人不在走弯路,
尽快明白页式管理的精妙所在,故撰写此文。
为什么要进行页式内存管理呢?大家都知道 WINDOWS 是多任务的操作系
统,所谓多任务就是多个进程可以轮流执行“一小会”时间。若直接让进程使用
物理地址来访问内存,将使得进程的动态分配难以有效实施,因为内存单元与进
程将通过物理地址紧密地联系在一起了,从而内存的回收和再分配将受限于特定
的进程和物理地址。为了打破这种关联关系,简单的思路是,让进程使用虚拟地
址,而虚拟地址和物理地址之间通过一个映射表来完成转译。这就是使用页式内
存管理的原因。本文不是讲述为什么使用页式内存管理,所以不再多述,如果想
知道为什么,请参看 WINDOWS 内核原理与实现。
在页式内存管理中,虚拟空间是按页(page)来管理的,对应于物理内存也
按页来管理,物理内存中的页面有时候称为页帧(page frame),其大小与虚拟
空间中的页面相同。因此映射关系是在内存页面的基础上进行的。在虚拟空间中
连续的页面对应于在物理内存中的页面可以不必连续,并且通过小心地维护好虚
拟空间的页面与物理内存页面之间的映射关系,物理页面可以被动态地分配给特
定的虚拟页面,从而只有当真正有必要的时候才把物理页面分配给虚拟页面,毕
竟物理页面相对来说是稀缺资源。如图 1 所示,物理地址空间(其地址范围取决
于系统中物理内存的数量,图中假设为 1 GB 物理内存)中有一部分页面被映射
到了左侧的虚拟空间(在 32 位平台上,其地址范围为 0x00000000~0xffffffff)。
1.虚拟空间和物理空间的映射
一个系统中,物理地址空间只有一个,但虚拟空间可以有多个。每个虚拟空
间都必须有一个映射关系.虚拟空间中有相当一部分页面并没有对应的物理页面
(在图 1 中标记为“不使用”的页面)。实际上,每个虚拟空间往往只能映射到
很少一部分物理页面。反过来,每个物理页面往往只被映射到一个虚拟空间中。
如果有一个物理页面被映射至两个或两个以上的虚拟空间,那么,这些虚拟空间
将共享此页面,若在一个虚拟空间中改写了此页面中的数据,则在其他的虚拟空
间中将可以看到这样的变化。
图 1 虚拟空间到物理空间的映射
这里出现了第一个稍难理解的名词虚拟空间,大家很容易把它和虚拟空间地
址和虚拟内存弄混,在进行页式内存管理之间有必要弄明白这几个名词。
1.1 虚拟空间
所谓虚拟空间,是想像出来的进程可以使用空间。它不等于虚拟内存,也不
等于虚拟内存+物理内存,它只是 Windows 做为管理者,给使用者我们打出的承
诺,Windows 说你们开发程序吧,我们给你们每人 4G 的内存使用,但它只是给
我们 4G 的一个承诺,写明从 0x00000000~0xFFFFFFFF 的内存你们可以使用,至于这
4G 内存在哪里,WINDOWS 没有说,它只说它也许在你电脑里,也许在微软总部,
也许在云终端,总之你用的时候就有 4G。对这个承诺不管你信不信,凡正我信
了。
图 2 虚拟空间( WINDOWS 的 4G 承诺只在精神中存在)
1.2 虚拟地址(线性地址)
虚拟空间的最小单位和实际的物理内存的最小单位一样, 都是 BYTE(8 个
bit)。WINDOWS 果然够狠,不单给了我们 4G 的承诺,还给这个承诺上的每个 BYTE
都起了一个名字,这个名字就是虚拟地址。它把这个 4G 承诺所指的地以 BYTE
为单位,按顺序进行了编号最小是 0x00000000,最大是 0xFFFFFFFF。WINDOWS 果
然把虚拟做的像真的一样。大公司就是不一样,假戏也真做。
图 3 虚拟地址(4G 虚拟空间的编号)
剩余14页未读,继续阅读
资源评论
oligaga
- 粉丝: 50
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功