操作系统:虚拟内存的存储管理

本文介绍了操作系统中虚拟内存的管理方式,包括页式管理、倒排页表以及转换检测缓冲区(TLB)。在页式管理中,详细阐述了页表项的结构和二级页表的空间优化。倒排页表通过使用页框号索引页表项节省空间,但增加了地址转换的复杂性。转换检测缓冲区则提高了地址转换的效率。此外,还讨论了页尺寸设置对系统性能的影响。
摘要由CSDN通过智能技术生成

页式管理

在基于分页的虚拟内存方案中,通常每个进程都有一个唯一的页表,对应于每个进程都有自己的虚拟地址空间

页表项的格式为:

  • P位:由于一个进程可能只有一些页在内存中,因此每个页表项需要有一位(P)来表示它所对应的页当前是否在内存中。如果这一位表示该页在内存中,则这个页表项还包括该页的页框号。
  • M位:修改位(脏位),表示相应页的内容从上一次装入内存中到现在是否已经改变。若未改变,则当需要把该页换出时,不需要用页框中的内容更新该页,即不需要将该页的内容再写回磁盘,可以直接丢弃。

由于页表的长度可以基于进程的长度而变化,因此不能在寄存器中保存,页表必须在内存中且可以访问到

当一个进程正在运行时,一个寄存器保存该进程页表的起始地址,虚拟地址(又称为逻辑地址,由页号和偏移量组成)的页号用于检索页表(可以看作是页表的索引,即页表项相对于页表起始地址的位置),查找内存中相应的页框号,并将查找到的页框号与虚拟地址中的偏移量组合起来产生对应的物理地址(由页框号和偏移量组成,是内存中的实际地址)。

 

当页表过大,占据过多内存时,可以采用多级页表的形式,主要有二级页表(即创建页表的页表,可以理解为将原来的页表分为多个大小相等的块/页表)。(参考文章,强烈推荐

以虚拟地址空间为32位(4GB)为例,若页面大小为4KB(即2^12),则页表一共有1M个页表项(4GB/4KB=1M),一个页表项包含了一个页框号,指向内存中的具体页框。若每条页表项占用4B,则一个页表需要占用4MB的内存。如果使用二级页表,则将原来的页表再分为大小相同的页,再建立对应的索引。所以如果二级页表退化为一级页表&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值