gpt4 book ai didi

linux - 内核线程如何使用 Linux 中最后运行的进程的内存描述符(mm_struct)?

转载 作者:太空狗 更新时间:2023-10-29 11:13:47 28 4
gpt4 key购买 nike

Linux kernel Development (by Robert爱)关于 mm_struct 和内核线程的书是:

“内核线程没有进程地址空间,因此不有一个关联的内存描述符。因此,内核的 mm 字段线程的进程描述符为 NULL。 "

“因为内核线程在用户空间中没有任何页面,所以它们不真的值得拥有自己的内存描述符和页表(页表是本章稍后讨论)。尽管如此,内核线程需要一些数据,例如页表,甚至可以访问内核内存。”

“内核线程没有地址空间,mm 为 NULL。因此,当调度内核线程,内核注意到 mm 为 NULL 并保持先前进程的地址空间已加载。然后内核更新内核线程的进程描述符的 active_mm 字段来引用前一个进程的内存描述符。然后内核线程可以使用根据需要前一个进程的页表。”

现在我的查询是:1.首先提到内核线程在用户中没有任何页面空间,因此它们不值得内存描述符和页表,并且在下一行它说它需要一些数据,比如页表来访问内核内存。它在这里指的是什么页表?每个过程都有它的自己的页表用于将虚拟地址映射到物理地址,为什么内核线程需要那个?

内核线程如何使用页表?

最佳答案

无论是用户空间还是内核空间进程,每个线程都需要一个页表。内核地址空间(虚拟内存地址空间)直接映射到物理地址空间,而用户空间地址空间不直接映射。此外,用户空间应用程序地址空间映射随着新进程的创建、终止、交换而不断变化,而内核空间映射保持不变。要了解更多信息,您可以访问以下链接:-

Process address Space

或在此处发布查询。

关于linux - 内核线程如何使用 Linux 中最后运行的进程的内存描述符(mm_struct)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27518369/

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