Linux内核线程地址空间

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

顾名思义,内核线程在内核模式下工作,所以它的堆栈被一个CPU寄存器(即: ssebp )引用。

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

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

希望这可以帮助!