这是一个要阐述的问题:为什么说内核在进程地址空间中?
这可能是一个愚蠢的问题,但在我脑海中浮现出来。有关进程地址空间和虚拟内存布局的所有文字都提到进程地址空间具有为内核保留的空间。例如,在32位系统上,进程地址空间为4GB,其中1 GB为Linux中的内核保留(其他OS上可能有所不同)。 我只是想知道为什么当进程无法直接寻址内核时,为什么说内核位于进程地址空间中。为什么我们不说内核具有与进程不同的地址空间,为什么我们不能为内核本身提供与进程的页表不同的页表呢?
这可能是一个愚蠢的问题,但在我脑海中浮现出来。有关进程地址空间和虚拟内存布局的所有文字都提到进程地址空间具有为内核保留的空间。例如,在32位系统上,进程地址空间为4GB,其中1 GB为Linux中的内核保留(其他OS上可能有所不同)。
我只是想知道为什么当进程无法直接寻址内核时,为什么说内核位于进程地址空间中。为什么我们不说内核具有与进程不同的地址空间,为什么我们不能为内核本身提供与进程的页表不同的页表呢?
我可以得到有关Linux(Debian或Ubuntu)特定操作系统的解释吗?
进程在这里“拥有”整个虚拟地址空间,内核和其中的用户部分。
它不能窥视和戳内核代码和数据不是由于地址空间不同,而是由于页表中设置的访问权限不同。内核页面的设置方式使常规应用程序无法访问它们。
但是,习惯将一个整体的两个部分称为内核空间和用户空间,这可能会造成混淆。