作业一:《内存管理》

截止时间: 2021年3月26号23时59分

提交方式: 好大学在线 《操作系统》 2021年春- ->第五章- ->本章练习

注意: 我们已经将选课的同学名单导入到好大学在线的操作系统课程中,大家可以在“我的课程”栏目中看到《操作系统》课程,请注意课程的学期是2021春。本门课程的作业均使用好大学在线的方式进行提交,此外,每位同学还需要批改两份其他同学的作业,批改参与情况以及批改得分将作为作业成绩的参考,并不作为最终的作业成绩。

 

ChCore运行在64位的机器上,并且配置了4级页表,第四级为PGD,第三级为PUD,第二级为PMD,第一级为PTE。请回答以下问题:

  1. 在32位的机器中,巨页的大小是4M;在64位机器中,巨页的大小是2M,为什么巨页的大小不一致。
  1. 为什么OS/MMU使用多级页表映射虚拟地址到物理地址中?使用4级页表的最大内存空间消耗是多少?
  1. 在ARM-mmu架构中,mmu是如何区分页条目是否被使用。
  1. 使用巨页的优点和缺点分别是什么?
  1. 内存的属性位AP和UXN已经能够隔离用户态和内核态,为什么还需要两个ttbr寄存器?
  2. TLB能够缓存虚拟地址到物理地址的映射,当发生进程间的上下文切换的时候,需要刷掉所有的TLB条目,这是为什么?你能想出一种解决方式,使得TLB条目在上下文切换的时候不需要被刷掉吗?
  3. 在ARMv8结构之前,内存属性中没有DBM(Dirty Bit Modifier)位。这意味着硬件不支持脏页。所以OS需要如何模拟并且记录脏页呢?给出一种可行的解决办法。