Linux内核线程地址空间

问题描述 投票:3回答:1

我读到linux内核线程没有自己的地址空间,它们的mm字段设置为NULL。我知道所有内核线程共享地址空间,但是它们仍然拥有自己的堆栈,对吗?他们需要以某种方式描述该字段,如果没有mm,他们该怎么做?和其他列表(例如打开的文件),它们保存在哪里?另外,将active_mm字段设置为上一个用户任务的mm有什么意义?预先感谢。

linux memory-management linux-kernel kernel
1个回答
1
投票

顾名思义,内核线程以内核模式工作,因此其堆栈由CPU寄存器(即ssebp)引用。

打开的文件引用(与任何其他进程一样)保留在进程描述符字段struct files_struct *files中。它们与内存描述符无关。

对于常规处理,mmactive_mm字段通常相同。内核线程不拥有任何内存描述符,因此它们使用先前正在运行的进程的activeactive_mm),因此,内核线程mm始终为空,并且使用active_mm

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.