首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二级分页记忆练习

问二级分页记忆练习
EN

Stack Overflow用户
提问于 2022-06-26 07:44:36
回答 1查看 32关注 0票数 -1

大家早上好!我在努力练习多层记忆。有人能帮我解决这个问题吗?

考虑一个大小为256 up的2级分页内存,寻址到字节,由1024页组成,让我们说:

(a)逻辑内存、逻辑地址和页的尺寸是多少?(b)物理记忆、物理地址和框架的尺寸是多少?(c)考虑内存访问时间等于100 is (特定内存时间而不考虑寻呼开销),参数α等于95%的TLB访问时间等于10 is,那么页面错误管理导致性能下降所需的页面故障时间必须小于10%,命中率为98%?

EN

回答 1

Stack Overflow用户

发布于 2022-06-26 17:19:36

(a)逻辑内存、逻辑地址和页面的维度是什么?

可能最合理的假设是,逻辑地址空间的大小为256 MB,每个逻辑地址空间有1024个逻辑页。这意味着:

代码语言:javascript
复制
page size = logical address space size / logical pages per logical address
page size = 256 MiB / 1024
page size = 256 KiB

逻辑地址中的位数可以根据逻辑地址空间大小来确定:

代码语言:javascript
复制
logical address size = log2(logical address space size) bits
logical address size = log2(256 MiB) bits
logical address size = 28 bits

对于两个层次的页表;一个逻辑地址必须分成三个部分:一个索引为第一级页表,一个索引为第二级页表,以及一个偏移量在页内。根据页面大小,我们可以确定:

代码语言:javascript
复制
offset into page = log2(page size) bits
offset into page = log2(256 KiB) bits
offset into page = 18 bits

我们还知道,逻辑地址的大小必须等于它的三个部分的大小之和,或者:

代码语言:javascript
复制
logical address size = 1st page table index size + 2nd page table index size + offset into page
28 = 1st page table index size + 2nd page table index size + 18
10 = 1st page table index size + 2nd page table index size

现在我们又开始惹麻烦了。在理论上(以及在某些CPU的实践中),第一级页表大小可能与第二级页表大小不同。

让我们再做一个假设。如果第一级页表与第二级页表的大小相同,并且这两个索引必须加到10位,那么假设这两个索引各为5位并不不合理。

如果页表索引为5位,则页表必须有2**5 = 32 (或1 << 5 = 32)项。

我们知道页面表的大小是:

代码语言:javascript
复制
page table size = entries per page table * size of page table entry

..but,因为我们不知道页面表的大小或页面表条目的大小;我们没有足够的信息来确定有关页面表的任何其他信息。

注意,页面表的大小通常与页面大小相同(即256个KiB),在这种情况下,我们可以执行"size of page table entry = page table size / entries per page table = 256 KiB / 32 = 8192 bytes“操作。但是,通常,页表条目的大小与物理地址的大小相关(例如32位或4字节,或64位或8字节);而每个页表条目的8192字节是非常不可信的。这意味着一个或多个假设是错误的(例如,假设页表大小和页大小相等)。

(b)物理内存、物理地址和帧的维度是什么?

物理页面大小“极有可能”等于逻辑页大小(即256个KiB)。

没有任何信息可以告诉我们使用任何关于物理内存维度的信息。例如,如果我们可以假设物理地址的大小与页表的大小相同,我们就可以确定物理地址空间的大小;但是我们对页表条目的大小一无所知,所以我们甚至不能做出错误的假设。

(c)考虑内存访问时间等于100 is (不考虑分页开销的特定内存时间),当参数α等于95%时,对TLB的访问时间等于10 is,那么由于页面故障管理而导致性能下降的页面错误时间必须小于10%,命中率为98%?

我搞不懂这个问题。通常,页面错误与TLB命中和TLB未命中无关,并且在以下情况下发生:

  • 软件崩溃(例如,当您使用未初始化的指针试图访问不存在的内存时,SIGSEGV信号)

  • 操作系统必须从辅助存储(从交换空间,从文件中)获取数据

  • 操作系统必须复制数据(例如,页面被设置为“复制就写”,可能是由于以前的fork(),并且该页被写入)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72759739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档