如何理解进程结构体中的mm和active_mm?

Posted 程序猿Ricky的日常干货

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何理解进程结构体中的mm和active_mm?相关的知识,希望对你有一定的参考价值。

结构体

task_struct里面有一个mm成员,和一个active_mm成员。
其中mm成员主要是用来区分是用户进程还是内核进程的,对于内核进程来说,mm成员是为NULL空的。

进程地址空间的创建

当一个进程被创建时会复制对应的mm成员的值为父进程的值,这样子进程就复用了父进程的地址空间。

地址空间的切换

在进行地址空间切换时,内核是使用active_mm来进行切换的:
1 对于一个mm不为NULL的用户进程来说,active_mm = mm
2 对于一个mm为NULL的内核线程来说,active_mm = 前一个进程的active_mm

以上是关于如何理解进程结构体中的mm和active_mm?的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核进程管理 task_struct 结构体 ④ ( comm 字段 | 进程优先级字段 | cpus_ptr 字段 | mmactive_mm 字段 | fs 字段 )

深入源码分析进程模型

Linux 进程管理之进程调度与切换

linux作业六——进程的描述和进程的创建

MATLAB如何提取结构体中数据

SCROLLINFO结构体中fMask和nPage的理解