操作系统作业8

这篇博客探讨了线性页表的大小如何随着地址空间和页面大小的变化而变化。随着地址空间增大,页表条目数量线性增加;而页面大小增加时,页表条目数量减少。博主通过实验解释了为何不普遍使用大页面的原因,并讨论了当增加分配页面的百分比时,页面错误的减少和空闲空间的减少。最后,博客涉及了多级页表的概念,以及在不同场景下页表和缓存的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,了解线性页表大小随地址空间的增长而变化的方式:

paging-linear-translate.py -P 1k -a 1m -p 512m -v -n 0

 

paging-linear-translate.py -P 1k -a 2m -p 512m -v -n 0

 

paging-linear-translate.py -P 1k -a 4m -p 512m -v -n 0

ARG seed 0

ARG地址空间大小为1m

ARG 物理地址空间大小512m

ARG页面大小1k

ARG verbose true

 

高位(最左侧)位是VALID位。

   

 

paging-linear-translate.py -P 1k -a 2m -p 512m -v -n 0

 

继续实验:地址空间再增长:

paging-linear-translate.py -P 1k -a 4m -p 512m -v -n 0

 

 

第二:了解线性页表大小随页面大小增长而变化的方式:

paging-linear-translate.py -P 1k -a 1m -p 512m -v -n 0

 

paging-linear-translate.py -P 2k -a 1m -p 512m -v -n 0

 

paging-linear-translate.py -P 4k -a 1m -p 512m -v -n 0

问题:

Before running any of these, try to think about the expected trends. How should page-table size change as the address space grows? As the page size grows? Why shouldn’t we just use really big pages in general? 

回答:

 

页表大小由以下等式控制:address space size = number of page table entries * page size和bits necesssary to address a page = log (physical memory size / page size )

页表条目的数量随地址大小线性增加,并且寻址页面所需的位数随地址大小呈对数增加:

  • --asize=1m:1024个条目
  • --asize=2m:2048个条目
  • --asize=4m:4096个条目

页表条目的数量与页面大小的倒数成比例:页面大小加倍,条目数量减半。寻址页面所需的位数与页面大小的倒数的对数成正比关系。

  • --pagesize=1k:1024个条目
  • --pagesize=2k:512个条目
  • --pagesize=4k:256个条目

总结:

随着地址空间的增长,页表大小应该如何变化?

页表变长,因为需要更多的页面来覆盖到这个地址空间。

随着页面大小的增长?为什么我们不应该只使用真正的大页面呢?

页面大小减小,但是不能使用一个超级大的页面,因为会浪费很多的内存——一般进程所需要使用到的内存很少。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值