当前位置: 技术问答>linux和unix
还是关于内存管理的问题 求好心人解答
来源: 互联网 发布时间:2017-05-06
本文导语: 内核地址空间有894m直接映射到物理地址 剩下用来访问高端内存,但是假如我的pc机只有1g内存,那么岂不是只有1024m-894m的内存可供用户进程使用,这样显然不科学而且如果只有512m的话岂不是光内核映射都不够了 ...
内核地址空间有894m直接映射到物理地址 剩下用来访问高端内存,但是假如我的pc机只有1g内存,那么岂不是只有1024m-894m的内存可供用户进程使用,这样显然不科学而且如果只有512m的话岂不是光内核映射都不够了
32位机在4g内存下用户进程只能访问后394m内存?是这样么 那么说894m内存全部映射到了内核空间不能动了?但前面小内存的情况肯定不能全部映射,求好心人看看我哪里理解错了
32位机在4g内存下用户进程只能访问后394m内存?是这样么 那么说894m内存全部映射到了内核空间不能动了?但前面小内存的情况肯定不能全部映射,求好心人看看我哪里理解错了
|
首先内核可以管理整个物理内存。但是内核不容易直接管理高端内存,那么它就会优先把高端内存映射给用户态。因为用户态的内存始终是动态映射,而不是 1:1 映射的。认为高端内存就是用户态内存十个误解。当高端内存用完之后,用户态程序再申请内存时,内核会映射低端内存给他。
无论是高端还是低端,用户态程序都只能访问 “自己的”内存。这里全部都是虚拟地址,和0-894M/1024m-894m没有关系。另,高端内存的支持是一个可选项。如果自己的内存比较小,可以关闭高端内存的支持来优化。
无论是高端还是低端,用户态程序都只能访问 “自己的”内存。这里全部都是虚拟地址,和0-894M/1024m-894m没有关系。另,高端内存的支持是一个可选项。如果自己的内存比较小,可以关闭高端内存的支持来优化。
|
直接映射的概念你没搞清楚。894m其实还是属于虚拟地址空间,这个空间和物理地址建立的关系是直接映射,
直接映射的含义就是,其实是直接的地址转换。为什么要直接,当然是效率。 那其他用户空间地址就是间接的了。
直接映射的含义就是,其实是直接的地址转换。为什么要直接,当然是效率。 那其他用户空间地址就是间接的了。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。