熬之滴水成石:最想深入了解的内容--windows内核机制(13)

                                                                                         64 内存管理--(2)

 说说页式内存管理,页式管理顾名思义就是按页来管理,那么在物理内存上红,页又是如何表现的。大体上物理内存上的页和虚拟内存上页是一一对应的关系。映射是在内存页面的额基础上进行的,反正在虚拟内存中的页面都是连续,但对于实际物理地址的内存页面并不是连续的。所以维护好虚拟内存的页面与物理内存页面之间的映射是页式内存管理的核心。在一实际中,虚拟地i址都是32位,其中有一部分信息指定了一个物理页面,其余指定偏移量。这种方式组成了页式管理的公式:页索引+页内偏移。页索引实际上就是一个索引编号,页内偏移就是指定页内的具体位置。虚拟和物理地址的映射看似复杂,实际上还是很科学的,寻址首先是需要确认页面大小的,标准页面大小为4KB,即2的12次幂,那么这12便是在32地址中的页内偏移,那么32-12=20,这20位则是页索引部分,这个就是用于找到一个实际的物理页面。那么页面映射的大小即2的20次幂,算算是多少,应该是快1M的大小了,在分级页面管理方式中,也索引部分被细化成页目录索引和页表索引,这两个部分各占10位长度。那么这样的组合有什么好处了,这样方式让虚拟地址空间有了一个目录表,那就是2的10次幂,每一个目录项指向一张包含1024项目的页表。所以处理器在处理虚拟地址,肯定是根据10位一个长度来解析的,先找目录项,指向一个页表,然后在下一个10位中,定位到页表项再在页表中定位一个页表项,此页表项指定目标页面的物理地址,最后在物理地址上加上偏移地址即就可得到最终的地址了。

好了,再讲讲段管理。它的原理是将物理内存分成各个段,处理器访问时是通过段基址+偏移的方式来计算出来的物理地址。段式管理中最为复杂莫过于段选择符了,实际上它就是段的逻辑地址,其实就是指明段的索引及相应的特权级别。我们熟悉的段选择符有代码寄存器、栈段寄存器、数据段寄存器。虽然地址寄存器和数据寄存器都是32位,但是段的选择符却只有15位,包括了段索引、表指示位、当前特权级。段索引13位,即包括2的13次幂,表指示位是表示是全局描述表或局部描述表,特权级就是表示请求当前的界别,一般有最高特权级、最低特权级。以上两种内存管理,在实际中采取了页式+段式两种结合的方式,这两种管理方式结合并不冲突,它们可以组合使用。windows主要采取的是页式管理...........

                                                                                                                                            (未完待续。。。)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值