2011-09-01 54 views
12

这可能是一个愚蠢的问题,但它只是弹出在我的脑海。所有关于进程地址空间和虚拟内存布局的文本都提到进程地址空间为内核预留了空间。对于例如在32位系统上,进程地址空间为4GB,其中1GB用于Linux内核(可能与其他操作系统不同)。为什么内核说在进程地址空间?

我只是想知道为什么当进程无法直接访问内核时,为什么内核被说成是在进程地址空间中。我们为什么不说,内核具有比进程独立的地址空间,为什么我们不能有内核本身不同的页表是从进程的页表分开?

+0

你能确定它描述了如何进程的地址空间已预留空间为内核的一个或多个特定的网址?它当然不是普遍的;我容忍一定会出现在一个单一的过程,它不会留下1吉布为内核使用共享存储器的多于3吉布32位系统(不一定基于Linux)。 –

+0

我只是举了一个例子,一些空间是为内核预留的。具体问题对于这个问题并不重要。 – vjain27

回答

13

当过程进行系统调用,我们不需要切换页表(从进程的地址空间页表内核地址空间页表)用于维修的系统调用(应该仅在内核模式下进行)。据说这是内核在进程上下文中运行。

某些不会在进程上下文中运行的内核事件将仅为内核加载页表。

Got it?

相关问题