操作系统第九章作业paging-multileveltranslate

  • Post author:
  • Post category:其他


操作系统第九章作业 paging-multileveltranslate

第一次来写博客,计算机专业的废渣一枚,主要分享一些湖大的作业实验及平时一些敲代码的心得

本次作业和第八章作业类似,需要在ubantu环境下运行一个多级页表的程序,加深对多级页表的理解

压缩包下载网址


http://pages.cs.wisc.edu/~remzi/OSTEP/Homework/HW-Paging-MultiLevelTranslate.tgz


使用win10自带的浏览器下载这个压缩包的时候,解压出来不知道是什么鬼,建议换个pdf浏览器,亲测使用adobe下载正常,同实验八一样,是一个.py文件和一个readme文本。

这里写图片描述

在运行的时候,室友都能够使用./进行运行,但是我在使用时会出现权限不够的问题

这里写图片描述

经过多次尝试,使用python指令可以解决这一问题

(1)With a linear page table, you need a single register to locate the page table, assuming that hardware does the lookup upon a TLB miss. How many registers do you need to locate a two-level page table?A three-level table?

虚拟地址的长度固定了,页的大小也固定了,VPN的长度也就固定了,线性页表和多级页表的区别也就是页表的大小会有变化,但只需要一个寄存器保存。

(2)Use the simulator to perform translations given random seeds 0,1, and 2, and check your answers using the -c flag. How many memory references are needed to perform each lookup?

S=0

这里写图片描述

所需要求的虚拟地址转换

这里写图片描述

对于第二个地址0x3da8转化为二进制 011110110101000(只有十五位,去掉高位)

对虚拟地址进行划分01111 01101 01000

PDRB为108

Page 108:

这里写图片描述

01111转化为10进制为15,所以取页中的第十六位d6

转化为二进制为11010110

根据readme文档中的提示

这里写图片描述

有效位为1,页号为1010110

转化为10进制为86号页

这里写图片描述

01101转化为10进制为13,取页中的第14个元素7f

转化为二进制为01111111

有效位为0,返回fault。

查看答案验证:

这里写图片描述

(3)Given your understanding of how cache memory works, how do you think memory references to the page table will behave in the cache? Will they lead to lots of cache hits (and thus fast accesses?)Or lots of misses (and thus slow accesses)?

catch memory 缓存。用来存储近期或者常用的指令或者数据,在多级页表的内存管理中,catch memory和TLB的作用很相似。我们知道从内存中去数据比从缓存中取数据话费的时间要多得多,那么如果对于近期HIT命中的或者使用频率高页表,我们很可能在接下来会申请。把这些页表存放在TLB即缓存(catch memory)中,可以大大减少再次访问内存的次数,从而降低时间。如果是连续访问相邻的内存地址,这样会增加cache hits。如果连续访问的内存地址相隔比较大,就会增加cache miss。



版权声明:本文为lzxorls原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。