如何理解进程结构体中的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 字段 )