通过了解Linux内核,以下是有关内核线程与用户进程(即常规进程)的一些讨论:
除用户进程外,Unix系统还包含一些特权 具有以下特征的称为内核线程的进程:
•它们在内核地址空间中以内核模式运行。
•他们不与用户互动,因此不需要终端 设备。
•它们通常在系统启动期间创建并保持活动状态 直到系统关闭。
...
在Linux中,内核线程与常规进程的区别在于 通过以下方式:
•内核线程仅在内核模式下运行,而常规进程在运行 或者在内核模式和用户模式下。
•因为内核线程仅在内核模式下运行,所以它们仅使用线性 地址大于PAGE_OFFSET。常规流程,另一方面 在任一用户模式下,都使用全部四个千兆字节的线性地址 或内核模式。
我听说过用户进程(即常规进程)和a portion of the address space is mapped to the kernel code and data的虚拟地址空间。
我想知道上面引用中的“内核地址空间”是什么意思?
它不是用户进程的虚拟地址空间的一部分吗?
这是否意味着内核具有自己的虚拟地址空间,就像用户进程具有其自己的虚拟地址空间一样?
谢谢。
答案 0 :(得分:1)
这本书使用术语“内核地址空间”来指代为内核分配的虚拟地址空间的分区。最近,Linux和其他操作系统已实现page-table isolation(PTI)以缓解Meltdown安全漏洞。使用PTI,内核确实具有其自己的地址空间(如Wikipedia的图像所示)。但是由于这本书很旧,所以是在PTI还未发明的时候写的。因此,它绝对是指虚拟地址空间的内核分区,其中也包含用户分区。