Linux内核线程地址空间

时间:2014-01-16 22:26:42

标签: linux memory-management linux-kernel kernel

我读到linux内核线程没有自己的地址空间,他们的mm字段设置为NULL。我知道所有内核线程共享地址空间,但是,它们有自己的堆栈吗?他们需要以某种方式描述那个领域,没有mm,他们如何做到这一点?和其他列表如打开文件,他们在哪里保留它?另外,将active_mm字段设置为以前的用户任务的mm是什么意思?提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

对于常规流程,字段mmactive_mm通常是相同的。内核线程不拥有任何内存描述符,因此它们使用先前运行的进程的 active active_mm),因此,内核线程mm始终为null他们使用active_mm

希望这有帮助!