两级页表

举报
野猪佩奇996 发表于 2022/01/23 22:24:24 2022/01/23
【摘要】    由于引入了分页管理,进程在执行时不需要将所有的页调入内存页框,而只需将保存有映射关系的页表调入内存。但是,我们仍然需要考虑页表的大小。 以32位逻辑地址空间、页面大小4KB、页表项大小4B为例,若要实现进程对所有逻辑地址空间的映射,则每个进程需要2^20个页表项。也就是说,每个进程仅页表这一项就需要4MB驻村...

   由于引入了分页管理,进程在执行时不需要将所有的页调入内存页框,而只需将保存有映射关系的页表调入内存。但是,我们仍然需要考虑页表的大小。

以32位逻辑地址空间、页面大小4KB、页表项大小4B为例,若要实现进程对所有逻辑地址空间的映射,则每个进程需要2^20个页表项。也就是说,每个进程仅页表这一项就需要4MB驻村空间,这显然是不切实际的。即便不考虑对全部逻辑地址空间进行映射的情况,一个逻辑地址空间稍大的进程,其页表大小也可能是过大的。

 

以一个40MB的进程为例,页表项共40KB(40MB/4KB*4B),若将所有页表项内容保存在内存中,则需要10个内存页框来保存整个页表 。整个进程大约为1万个页面,而实际执行时的几十个进程页面的大小来说,肯定是降低了内存利用率的,从另一方面来说,这10页的页表项也并不需要同时保存在内存中,因为在大多数 情况下,映射所需要的页表项都在页表的同一个页面中。

    为了压缩页表,我们进一步延伸页表映射的思想,就可得到二级分页,即使用层次结构的页表:将页表的10页空间也进行地址映射,建立上一级页表,用于存储页表的映射关系。这里对页表的10个页面进行映射只需要10个页表项,所以上一级页表只需要1页就已经足够

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/100069376

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。