什么是“内核地址空间”?

时间:2018-09-14 22:41:31

标签: linux linux-kernel operating-system address-space

通过了解Linux内核,以下是有关内核线程与用户进程(即常规进程)的一些讨论:

  

除用户进程外,Unix系统还包含一些特权   具有以下特征的称为内核线程的进程:

     

•它们在内核地址空间中以内核模式运行。

     

•他们不与用户互动,因此不需要终端   设备。

     

•它们通常在系统启动期间创建并保持活动状态   直到系统关闭。

     

...

     

在Linux中,内核线程与常规进程的区别在于   通过以下方式:

     

•内核线程仅在内核模式下运行,而常规进程在运行   或者在内核模式和用户模式下。

     

•因为内核线程仅在内核模式下运行,所以它们仅使用线性   地址大于PAGE_OFFSET。常规流程,另一方面   在任一用户模式下,都使用全部四个千兆字节的线性地址   或内核模式。

我听说过用户进程(即常规进程)和a portion of the address space is mapped to the kernel code and data的虚拟地址空间。

我想知道上面引用中的“内核地址空间”是什么意思?

它不是用户进程的虚拟地址空间的一部分吗?

这是否意味着内核具有自己的虚拟地址空间,就像用户进程具有其自己的虚拟地址空间一样?

谢谢。

1 个答案:

答案 0 :(得分:1)

这本书使用术语“内核地址空间”来指代为内核分配的虚拟地址空间的分区。最近,Linux和其他操作系统已实现page-table isolation(PTI)以缓解Meltdown安全漏洞。使用PTI,内核确实具有其自己的地址空间(如Wikipedia的图像所示)。但是由于这本书很旧,所以是在PTI还未发明的时候写的。因此,它绝对是指虚拟地址空间的内核分区,其中也包含用户分区。