2014-10-09 99 views
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启动。

交换的B/W内核和用户模式:

从用户模式到内核模式的切换不是由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

+0

因此,我们必须当一个进程运行时创建了两个栈。一个在用户空间,另一个在内核空间。用户模式切换到内核模式由中断x80完成。如何将用户级别的堆栈内容传递到内核空间。系统调用对此负责? 。但是我们的名字是在用户空间进行数字映射,并且在内核空间[2 - sys_fork()]处有名称映射的名称为[fork() - 2]。 – Angus 2014-10-09 05:10:27

+0

如何将用户级别的内容传递给内核空间。例如:将文件从用户级别打开到内核级别的流程是什么。 – Angus 2014-10-09 05:15:03

+0

请参阅http://www.tldp.org/HOWTO/KernelAnalysis-HOWTO-3.html – 2014-10-09 05:23:11