结构体
task_struct里面有一个mm成员,和一个active_mm成员。
其中mm成员主要是用来区分是用户进程还是内核进程的,对于内核进程来说,mm成员是为NULL空的。
进程地址空间的创建
当一个进程被创建时会复制对应的mm成员的值为父进程的值,这样子进程就复用了父进程的地址空间。
地址空间的切换
在进行地址空间切换时,内核是使用active_mm来进行切换的:
1 对于一个mm不为NULL的用户进程来说,active_mm = mm
2 对于一个mm为NULL的内核线程来说,active_mm = 前一个进程的active_mm