尝试理解用户空间和内核空间之间的关系。 用户空间程序使用系统调用与内核进行交互。如果我有一个程序从文件中读取数据。然后执行用户空间的二进制文件以及执行内核空间。我们有两个进程在内核上执行一个,另一个在用户空间上执行,还是在用户和内核上运行的单个进程。
答案 0 :(得分:1)
仅限相同的流程。但是基于该流程的操作,它在user mode
和kernel mode
中运行。
现代处理器架构通常允许CPU至少运行两次
不同的模式:user mode
和kernel mode
(有时也称为supervisor
mode
)。
硬件指令允许从一种模式切换到另一种模式。相应地,虚拟内存区域可以标记为user space
或kernel 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