1、几乎每个系统操作都被映射到具体的物理设备上,而任何设备的控制操作都由特定于要寻址的相关代码来进行,这些代码成为设备驱动。
2、linux可以在运行时扩展由内核提供的特性,既可以在系统运行时增加内核的功能(也可以删除)。
3、每块可以在运行时添加到内核的代码称为一个模块,每个模块由目标代码组成(既功能的实现)。
4、linux将设备分为三种基本类型:字符设备、块设备、网络设备。典型的字符设备如:/dev/tty1(串口),块设备如:/dev/sda(磁盘),网络设备如:eth0(网卡),在这里需要说明的是linux对网络设备(接口的)处理方式同普通的字符和块设备不同,不用进行read和write,同时linux没有将网络设备具体映射到一个设备节点,虽然有名字例如eth0,但是这个名字在文件系统中没有相应的入口,内核与网络设备驱动间的通讯是通过调用和报文相关传递相关的函数。
5、安全问题。从内核获取的内存都应该清零,或者初始化。在系统启动后可以通过capability机制来禁止内核加载模块,但是你需要具备一定的权限。
6、版本问题。偶数的内核版本通常是稳定版本(2.6.x),奇数版本通常是开发快照或者测试版本(2.7.X),代表了当前的开发状态。
7、版权条款。通用公共版权( GPL )