我目前知道的或自以为知道的(以32位Linux、3G+1G的配置为例):
...上面提到的那种设计不好(注:具体这个设计是什么就不讨论了),因为物理内存页会频繁地在属于kernel data segment和属于user space之间切换。而属于kernel code segment的物理内存页则没有这个问题。
这好像和我之前理解的不符啊?求高手解惑:kernel data segment的物理页如何变成user space的物理页?以及user space的物理页如何变成kernel data segment的物理页?
kernel data segment的物理页如何变成user space的物理页?以及user space的物理页如何变成kernel data segment的物理页?
这俩没什么大区别, 对于buddy来说都是正常分配出去的物理页. kernel data segment的物理页被释放后再被用户态程序分配到就变成了user space的物理页, 反之亦然.
而属于kernel code segment的物理内存页则没有这个问题。
这是因为kernel code segment不会被释放, 除非是内核模块占据的那些页.
参考:http://blog.csdn.net/sjmping/article/details/7646657
http://www.cnblogs.com/alex-tech/archive/2012/04/13/2445990.html
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。