linux 设备驱动程序开发 第3版_Chapter2_Uer Space and Kerne...

内核模块程序运行在内核空间,应用程序运行在用户空间。这个概念构成了操作系统理论的基础。

事实上,操作系统为程序提供了一个统一的硬件视图。另外,操作系统必须保证各个程序的操作的独
立性,还得保护各种资源不能非法访问。完成上面这些任务的前提是必须将系统软件和应用软件区分
卡来。

每一个现代的处理器都能具有上述功能。其中的一个方法是CPU可以运行在不同的级别上。不同的级
别代表具有不同的功能,有些操作在特权级低的时候是不允许的;程序仅仅可以通过一些调用门实现
特权级之间的转换。UNIX系统就利用了这种硬件特性,使用了其中的两个特权级。所有现代处理器
都至少有两个特权及,而另外的一些,例如X86,提供了四个特权级。当多余两个特权级时,UNIX
利用最高特权级和最低特权级。

我们通常将运行的模式成为内核空间和用户空间。这两个术语不仅体现在特权级上,还体现在不同的
内存映射方式和地址空间。

Unix程序从用户空间转移到内核空间有两种方式,一种是系统调用,另外一种是硬件中断。执行系统
调用时内核代码在当前进程的上下文中运行,它是为当前进程而服务的,所以它能够访问进程的地址
空间中的数据。但是硬件中断的代码和进程是异步的,并且和任何一个特定的进程无关。

内核模块的代码运行在内核空间,并且能够扩展内核的功能。大多数的驱动程序要执行执行上面说
两类任务:驱动程序中的一些函数用来完成系统调用,另外一些用来处理硬件终端。

你可能感兴趣的:(linux 设备驱动程序开发 第3版_Chapter2_Uer Space and Kerne...)