机制和策略(mechanism/policy)
机制是指要提供什么样的功能。
策略是指如何使用这些功能。
内核功能划分为以下的几个部分:
- 进程管理,内核进程管理就是在单个/多个cpu上实现了多个进程的抽象。
- 内存管理
- 文件系统
- 设备控制,也就是设备如何驱动的。
- 网络功能。注意,所有的陆游和地址解析也是由内核来完成的。
Linux模块
linux有个很好的特性,内核提供的特性可以在运行时候扩展,也就是在内核启动后,可以向内核动态的添加/移除功能。可以在运行时候添加到内核的代码就叫做模块。
模块由目标代码组成(未link成可执行程序),用 insmod安装模块, rmmod移除模块。
设备分类
一般讲设备分为3中基本类型:
字符设备
char设备是一个像文件流一样被访问的设备。
字符设备驱动一般要实现open,close,read,write这几个基本操作。设备通过文件系统节点被访问,但是一般字符设备只能顺序访问,不能前后移动访问位置,常见的终端设备就是一个char设备。
块设备
块设备也是通过/dev目录下的文件系统节点来访问。一般块设备上会容纳文件系统,进行IO操作的时候是按照块为单位,如512字节每块进行存取。在内核中,块设备的驱动程序接口和字符设备驱动程序的接口完全不同,但是对于用户层来说这些差别被封装了。
网络接口
网络设备是以数据包为基础的,而不是基于流的,所以网络设备没有文件系统节点。内核调用一套和数据包传输相关的函数来和网络设备通信,和块设备完全不一样。
内核版本号
一般偶数编号的内核是正式版本(2.6.x),而奇数的是开发版本(2.7.x)。
内核邮件列表
linux-kernel邮件列表是linux内核开发者的聚集中心,是很重要的内核开发资料。