我的问题是,这些数据结构究竟是什么?页表通常通过页表地址寄存器访问,对吧?并且页表的基地址通常存储为物理地址.现在为什么需要为整个表预留一个虚拟地址空间?
同样,我读到了占用空间的内核代码本身.这与虚拟地址空间有什么关系?它不是存储代码所消耗的物理内存吗?
最后,这些数据结构为什么要保留128MB空间?为什么它们不能像所需的那样在整个1GB地址空间中使用,就像内核中的任何其他普通数据结构一样?
我已经完成了LDD3,专业linux内核架构以及堆栈溢出(例如:Why Linux Kernel ZONE_NORMAL is limited to 896 MB?)和旧版LWN article的几个帖子,但没有找到相同的具体信息.
解决方法 关于页表,MMU不关心页表本身是否未映射到虚拟地址空间 – 为了地址转换的目的,这是可以的.但是当内核需要修改页面表时,它们确实需要映射到虚拟地址空间 – 而内核不能只是“及时”映射它们,因为它需要修改页面表本身来做那.这是一个鸡与蛋的问题,这意味着页表需要始终保持映射状态.内核代码存在类似的问题.对于要执行的代码,它必须映射到虚拟地址空间 – 如果执行页表修改的代码本身不存在,我们就会遇到类似的鸡与蛋问题.有了这个,就可以更容易地将整个内核代码映射到内部,同时内核模式堆栈和任何内核数据结构都可以通过代码进行访问,而不希望出现页面错误.这种数据结构的一个大例子是结构页面结构数组,代表每个物理内存页面.
总结以上是内存溢出为你收集整理的内存管理 – 哪些数据结构使用128MB的1GB Linux内核空间?全部内容,希望文章能够帮你解决内存管理 – 哪些数据结构使用128MB的1GB Linux内核空间?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)