# 内核和驱动是什么关系?

  1. 从功能角度来说,驱动在内核的下层。即:硬件,驱动,内核,应用(从下往上)。也就是说,驱动直接操作硬件,来给内核提供服务。内核不能直接操作硬件。
  2. 从代码结构的角度来看,驱动和内核世纪上已经融为一体,驱动开发就是内核开发,内核开发很多时候也指驱动开发。
    1. 还记得内核模块吗?为什么会提供内核模块这种形式,即 module_init 和 module_exit 这种形式。你看下驱动开发的书籍,驱动全部都是以内核模块这种形式来实现的。这就说明驱动开发实际就是内核开发,而内核模块这种形式,说白了也就是为了开发驱动才搞出来的。
    2. 驱动已经成为内核的一部分了,内核源码的70%以上都是驱动的代码,剩下的代码说白了就是进程管理、内存管理、文件管理,这些部分所有系统都公用,所以只占到30%。
    3. 外设的发展日新月异,数量太多了,新的外设必须要有相应的驱动,所以内核部分的发展主要就是驱动的发展。

参考:

http://www.360doc.com/content/16/0416/15/29617669_551126542.shtml