应用程序与核心模块区别
大多应用程序是从头到尾执行单个任务,而模块确只是预先注册自己以便服务于将来的某个请求。
用户空间/内核空间
模块运行在所谓的内核空间,而应用程序运行在所谓的用户空间;内核运行在最高级别也称为超级用户态,应用程序运行在最低级别也称用户态。
内核中的并发
linux系统中通常正在运行多个并发进程,并且可能有多个进程使用我们的驱动程序,并且大多数设备能够中断处理器,而中断处理程序异步运行,还有一些软件抽象等,综上,内核代码运行是可抢占的,这意味着存在许多并发问题。
因此,内核代码必须是可重入的,必须运行在多个上下文中。
编程中的一写细节
- 内核的栈空间非常小,避免使用大量的自动变量,多使用动态分配;
- 内核中存在以"__"为前缀的API,这种是内核底层组件接口,谨慎使用;
- 内核代码中不能实现浮点数运算;