当前位置:  技术问答>linux和unix

关于PAGE_OFFSET,郁闷ing...

    来源: 互联网  发布时间:2015-08-02

    本文导语:  上说, 内核虚拟地址VA和物理地址PA的关系是: VA = PA + PAGE_OFFSET 现在我就纳闷了: 1:内核地址空间映射难道这么简单吗?那它不是跳过了页式映射的一整套机制了? 2:假如内核用到一个虚拟地址3.9G,那么用那个公...

上说,
内核虚拟地址VA和物理地址PA的关系是:
VA = PA + PAGE_OFFSET

现在我就纳闷了:
1:内核地址空间映射难道这么简单吗?那它不是跳过了页式映射的一整套机制了?
2:假如内核用到一个虚拟地址3.9G,那么用那个公式,物理地址就是3.9G - PAGE_OFFSET
= 0.9G  在目前大部分系统物理内存很少有达到这么大的,怎么办呢?

***********************
这个问题,我想了很长时间,也没想到合理的解释,大虾们指点一下吧!!!

|
1,首先这样的地址映射不是我这样认为的,是事实如此,MMU还是要通过页式映射的方式获得内核的物理地址,而-PAGE_OFFSET只是为了计算方便,并不是真正的映射过程。
2,内核本身静态分配的空间只占用几百K,你申请的是内核使用的物理页面还是用户进程使用的物理页面,对物理页面本身来讲,并没有什么区别。内核的物理页面是不交换的,所以只要申请,物理页面就根据需要支付,不管它是内核还是用户,不同点在于如果内核申请虚拟内存,则将地址大于0xc0000000,并且不能交换,而且根据分配到的物理页面的首地址,决定是什么虚拟地址。因为不可交换,所以内核申请使用虚拟空间,是受物理内存尺寸限制的。
3,为什么分配这么大,好像没有理由吧,那应用程序也用不到3G呀,为什么分给它这么大呢?

|

我也考虑过这个问题,我的看法是:
这个地址是在内核空间所使用的虚拟地址,在内核中,虚拟地址与物理地址是线形影射的。
这个影射必须是在有实际内存的地方进行,否则就会出错。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3