当前位置: 技术问答>linux和unix
讨论:分页机制能否减少物理内存的浪费?
来源: 互联网 发布时间:2016-08-31
本文导语: 本帖最后由 clw1984 于 2010-05-21 11:46:59 编辑 深入分析linux内核源码中的2.4.1节中有如下描述: 1. 两级页表结构 为什么采用两级页表结构呢? 在80386中页表共含1M个表项,每个表项占4个字节。如果把所有的页表项存储在...
1. 两级页表结构
为什么采用两级页表结构呢?
在80386中页表共含1M个表项,每个表项占4个字节。如果把所有的页表项存储在一个表中,则该表最大将占4M字节连续的物理存储空间。为避免使页表占有如此巨额的物理存储器资源,故对页表采用了两级表的结构.
我的问题是,采用两级页表结构的原因真的是为了减少物理存储器的使用量吗?
个人理解如下,比较疑惑,欢迎拍砖:
采用两级页表,即将线性地址(32位)高10位作为页目录,然后从页目录中获得页表起始地址,然后和线性地址的次高10位一起获得页面地址。
这样做共有1024个目录项(2^10),每个目录项所对应的页表项有1024个(2^10),如果每个目录项所对应的页表项全部存在于内存中,那么共有1024*1024个页表项,每个页表项占用4个字节,也就是需要4M的空间来存储页表项。加上1024*4字节的目录项,实际需要的内存为4M+4K字节。这要比“在80386中页表共含1M个表项,每个表项占4个字节。如果把所有的页表项存储在一个表中,则该表最大将占4M字节连续的物理存储空间。”中描述的内存要多。唯一的好处就是可以不用连续的4M空间。 所以我认为采用2级页表应该有其他原因。
以上是我比较迷惑的地方。请大牛们帮我clear下。
|
哎,关键你是按全部的“地址空间”算的。
其实真正程序用到的内存没有那么大!两级结构可以省略实际没用用到的内存的“表示”从而减少实际的页目录与页表项所占的内存。
我的理解是这样...
其实真正程序用到的内存没有那么大!两级结构可以省略实际没用用到的内存的“表示”从而减少实际的页目录与页表项所占的内存。
我的理解是这样...
|
从表面上看没有节省的
具体的实现要看page table是怎么分配的
具体的实现要看page table是怎么分配的
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。