从Understanding The Linux Kernel,这里有一些关于内核线程与用户进程(即常规进程)的讨论:
除了用户进程外,Unix 系统还包括一些称为内核线程的特权进程,具有以下特征:
• 它们在内核地址空间中以内核模式运行。
• 它们不与用户交互,因此不需要终端设备。
• 它们通常在系统启动期间创建,并且在系统关闭之前一直保持活动状态。
...
在 Linux 中,内核线程在以下方面不同于常规进程:
• 内核线程仅在内核模式下运行,而常规进程在内核模式和用户模式下交替运行。
• 因为内核线程只在内核模式下运行,所以它们只使用大于 PAGE_OFFSET 的线性地址。另一方面,常规进程在用户模式或内核模式下使用所有 4 GB 的线性地址。
我听说过用户进程即常规进程的虚拟地址空间,并且一部分地址空间映射到内核代码和数据。
我的问题:
- 我想知道上面引用中的“内核地址空间”是什么意思?
- 它不是用户进程的虚拟地址空间的一部分吗?
- 这是否意味着内核拥有自己的虚拟地址空间,就像用户进程拥有自己的虚拟地址空间一样?