gpt4 book ai didi

linux - linux内核如何在动态内存中保存struct_task?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:39 25 4
gpt4 key购买 nike

当我阅读了解linux内核时,我得到了这句话

process descriptors are stored in dynamic memory.

据我所知,对于32位的电脑系统:

内核在最高虚拟地址中保留了将近 128MB High Memory 来寻址动态物理地址。

我的问题是:高端内存虽然可以寻址所有的物理地址,但是它一次最多只能寻址128MB。内核数据结构太多,可能超过 128MB。如果内核要重新映射某些高端内存,则保存在高端内存中的某些数据结构的虚拟地址可能无效。内核如何在动态物理内存中保存超过128MB的内核数据结构。

虽然我已经尽力表达清楚并遵守本网站的规则,但仍然可能有一些地方我做错了。如果有的话,我非常抱歉。

最佳答案

“内核数据结构太多,可能超过 128MB。”是什么意思?意思是?没有“内核数据结构”。内核分配了一些东西,但它们的顶部只有几页。特别是没有超过 128MB 长的“单个对象”。

如果某些东西在物理上非常大(比如有一个文件完全读入 RAM 并且需要 512MB),内核只会在需要时映射和取消映射物理页面。特别是不需要同时完全映射文件,并且各部分临时映射到的虚拟地址是没有意义的。

另请注意,目前 x86_64 提供 128TB 地址空间,因此不存在此类恶作剧。

关于linux - linux内核如何在动态内存中保存struct_task?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44212710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com