处理用户空间和内核空间的执行

时间:2014-10-09 04:27:49

标签: c linux-kernel

尝试理解用户空间和内核空间之间的关系。 用户空间程序使用系统调用与内核进行交互。如果我有一个程序从文件中读取数据。然后执行用户空间的二进制文件以及执行内核空间。我们有两个进程在内核上执行一个,另一个在用户空间上执行,还是在用户和内核上运行的单个进程。

1 个答案:

答案 0 :(得分:1)

仅限相同的流程。但是基于该流程的操作,它在user modekernel mode中运行。

现代处理器架构通常允许CPU至少运行两次 不同的模式:user modekernel mode(有时也称为supervisor mode)。

硬件指令允许从一种模式切换到另一种模式。相应地,虚拟内存区域可以标记为user spacekernel space的一部分。在user mode中运行时,CPU只能访问标记为user space的内存;尝试访问kernel space中的内存会导致硬件异常。在kernel mode中运行时,CPU可以访问用户和内核内存空间。

仅当处理器在kernel mode中运行时,才能执行某些操作。示例包括执行暂停指令以停止系统,访问内存管理硬件以及启动设备I / O操作。通过利用此硬件设计将操作系统放置在内核空间中,操作系统实现者可以确保用户进程无法访问内核的指令和数据结构,或执行会对操作产生负面影响的操作。系统

内核模式:

所有内核程序执行的

模式(不同的驱动程序)。它可以访问每个资源和底层硬件。可以执行任何CPU指令,并且可以访问每个存储器地址。此模式保留给在最低级别操作的驱动程序

用户模式:

所有用户程序执行的

模式。它无法访问RAM和硬件。原因是因为如果所有程序都在内核模式下运行,它们就能够覆盖彼此的内存。如果它需要访问任何这些功能 - 它会调用底层API。除了系统进程以外,每个进程都由Windows启动,以用户模式运行。

切换内核和用户模式:

从用户模式切换到内核模式不是由CPU自动完成的。 CPU被中断(定时器,键盘,I / O)中断。当发生中断时,CPU停止执行当前运行的程序,切换到内核模式,执行中断处理程序。此处理程序保存CPU的状态,执行其操作,恢复状态并返回用户模式。

http://en.wikibooks.org/wiki/Windows_Programming/User_Mode_vs_Kernel_Mode

http://en.wikipedia.org/wiki/Direct_memory_access

http://en.wikipedia.org/wiki/Interrupt_request