关于mm_struct和内核线程,在Linux kernel Development ( Robert Love)一书中提到的一些要点是:
内核线程没有进程地址空间,因此没有相关的内存描述符。因此,内核线程的进程描述符的mm字段为NULL。
“由于内核线程在用户空间中没有任何页面,它们实际上不值得拥有自己的内存描述符和页表(页表将在本章后面讨论)。尽管如此,内核线程仍需要一些数据,例如页表,甚至需要访问内核内存。”
内核线程没有地址空间,并且mm为NULL。因此,当调度内核线程时,内核会注意到mm为NULL,并保持前一个进程的地址空间已加载。然后,内核会更新内核线程的进程描述符中的active
当我搜索“如果malloc和exit with not free会发生什么?”,我可以找到这样的答案:“今天,操作系统将在程序退出后恢复所有分配的内存空间”。
在这个答案中,“恢复”是什么意思?当进程退出时,OS只是删除它的PCB和页表,不是吗?操作系统是否需要执行其他任务才能完全终止进程?在进阶时谢谢。
对不起,我的英语不好。
ps。我的意思是OS Linux