要点:
内核空间运行的是系统的各个模块;
用户空间运行的是应用程序;
划分的缘由:
操作系统的作用就是屏蔽硬件的不同而便于应用程序的运行和开发。操作系统承担了程序的独立操作以及对于非授权资源的存取的保护的任务。
cpu本身实现了不同的操作级别,不同的级别有着不同的功能:
程序代码只能通过有线的几个门从一种级别切换到另一个。Unix系统利用了这种硬件的特性,使用了两个这样的级别。所有的处理器都至少包含这两个界别,当几个级别存在时,使用最高级别和最低级别,在unix下,内核处于最高级别运行(内核空间),这里做任何事情都是不受限制的;应用程序运行在最低级别(用户空间),这里处理器控制了对硬件的直接存取和对内存的存取。
划分的结果:
通常我们提到运行模式,其实就是指的内核空间和用户空间。每个模式有其自己的内存映射(即自己的地址空间)。
任何时候一个应用发出一个系统调用或者被硬件中断而挂起时,Unix就会从用户空间转换执行到内核空间。执行系统调用的内核代码在进程的上下文中工作。这表示他可以调用进程以及可以存取该进程的地址空间。也就是说,处理中断的代码对进程来说是异步的,与其它进程无关。
模块的角色就是扩展内核的功能,所以在内核空间运行。一个驱动在进行之前都有两种任务执行:模块中的一些函数作为系统调用,一些负责中断处理。