哈工大-操作系统L22

多级页表与快表

一.如何提高内存空间利用率

每个页应该小,假设每个页都是4M,就有可能导致浪费,为了内存高效利用,避免浪费,页应该小比如4k,但页表项就会增加,页号=地址/每一页的大小,比如32 位机地址空间是4G,4G/4K=1M.

页应该小,地址空间是固定的也很大,除完之后逻辑页号就会多,每个逻辑页号都应该建立相应的物理页,页表就大了,每个页表项都需要4个字节,一个页表就占用4M,每个进程都有自己的页表项,比如100个进程j就需要占据400M,在内存中开辟400M的空间来存放100个进程对应的页表,而且要一直存放,因为每一次取出来的地址,都要查页表来找到他的物理页,找到对应的物理地址

但实际是大部分逻辑根本不会用的,删除不需要的就不会产生1M的页表项,就不会产生4M空间

变成这样的页表使用一下页表,怎么样完成映射,根据逻辑页找到物理页找到物理地址,只能挨个查找比较顺序查找,比如使用4M空间,就会产出1000个页表项,按照顺序找平均需要500次,每次重定位

每访问一次内存都会附加500访问内存次,显然这样速度太慢了

折半方法变成比较10次,4G比较20次,运算在cpu内部执行很快,访问内存很慢,额外访问内存会使机器很慢,所以页号必须连续,知道起始地址直接偏移只需访问一次

哪还有别的办法吗?

可以根据书的章、节,用多级页表,单级页表要翻很久

二.多级页表

页表依然是4M,该程序有3个所以占用了12M,页目录表占据4K,页目录有3个每个都占据4K,一共有4个,一共是16k,而单极页表是4M,多级页表节省了大量空间,不用看的这些内容不需要放到内存中,依然连续,也不需要比较,先查章在在查页再查具体的。

但是多级页表也存在问题,每多增加一级页表都会多增加一次访问,每多增加一级就多节省一些空间

TLB表中存放最近使用的逻辑页,TLB能非常快的找到最近使用的逻辑页所对应的物理页的物理地址,通过硬件一次访问就不需要访问多级页表了,时间非常快,不在快表中只能查多级页表,查完就把使用的页表放到快表中,首先去快表中查

折中思想,命中率一定要量TLB表越大命中率越高

程序的地址访问存在局部性在某段内存中访问的频率高,因为程序中多体现循环,通常都访问哪个逻辑页号,多级页表,快表,局部性,分别配合

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值