内核进程是否有vm_area_struct指针?

时间:2016-02-25 16:11:29

标签: memory-management linux-kernel

我的一个朋友名称Raj告诉我,内核进程只有一个全局页表,他们没有使用vm_area_struct来存储内存。 vm_area_struct仅用于跟踪用户进程的内存而非内核进程。

所以我想知道真实的故事是什么?有人可以了解vm_area_struct指向用户或内核的内存吗?

1 个答案:

答案 0 :(得分:1)

抓住一本关于操作系统的书,例如" UNIX Internals:新领域"。

你确定你不是指mm_struct,这是实际描述地址空间的东西吗?

简而言之,所有内核线程都看到相同的内存。此外,给定进程的整个内核内存和用户空间内存在一个巨大的地址空间中映射在一起。它在映射上设置了权限,阻止用户空间进程对内核页面执行任何操作。

因此,当内核在任务之间切换时,它也会改变使用中的mm_struct。但是有一个黑客。因为所有映射都包含整个内核,所以如果新的调度内容是内核线程,则无需切换mm。