首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为每个页面大小为4K的1 1GB内存设计内存

如何为每个页面大小为4K的1 1GB内存设计内存
EN

Stack Overflow用户
提问于 2011-11-17 04:47:51
回答 2查看 313关注 0票数 0

在最近的一次面试中,我被问到了这个问题。我回答说,我将使用散列数据结构来开始设计系统。但不能很好地回答。我认为面试官是在寻找答案,比如我该如何为此设计一个页表。

我想知道如何回答这个问题。例如,对于每个4K的页面大小,1 1Gb需要多少个页面?此外,为了有效地设计它,我还应该在脑海中记住其他哪些考虑因素。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-17 23:55:16

这个问题在CPU的上下文中是有意义的,其中TLB是“手动”加载的,并且没有预先确定的页表结构,如MIPS、ARM、PowerPC的一些型号。

所以,我有一些粗略的想法:

1G为2^30字节或2^18 = 256K 4K页

比方说,每页4个字节的条目,这对于一个单级页表来说是1M。速度很快,但在内存上有点浪费。

我们可以做些什么来减少内存,同时又能让它变得相当快。

我们需要每页帧编号18位,不能将其压缩为2字节,但可以使用每PTE 3字节,有6位用于编码-访问权,存在,COW等。这是768K。

我们可以只保留其中的16位,而不是整个页帧编号,剩下的两位由一个包含4个条目的上层页面表确定,格式如下:

第二级页表的物理页号的

  • 2MSB
  • 21位(30位地址,在512K MSB位

上对齐

但是,每页的位没有空间,所以让我们将更多的地址位移动到更高级别的表中,以获得

二级页表条目(4K 2字节条目= 8K)

用于随机标志的

  • 4位
  • 12页帧地址

的LSB

一级页表项格式(64个4字节项= 256个字节):

页帧地址的

  • 6 MSB
  • 17位用于第二级页表地址(30位地址在8K对齐)
  • 备用位
票数 1
EN

Stack Overflow用户

发布于 2011-11-17 19:06:28

对我来说这是个开放式的问题。主要的想法可能是了解您对内存的了解程度,以及您可以对要处理的情况进行多深的思考。其中一些可能是:

  1. Pagination -您希望在内存中为进程保留多少页,以及在磁盘上保留多少页以优化分页。
  2. Page pages if you can relate and think Of
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8158456

复制
相关文章

相似问题

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