内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。
一、 什么是模块
模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。
应用程序与内核模块的比较
为了加深对内核模块的了解,表一给出应用程序与内核模块程序的比较。
表一 应用程序与内核模块程序的比较
| C语言应用程序 | 内核模块程序 | |
| 使用函数 | Libc库 | 内核函数 |
| 运行空间 |

本文介绍了在Ubuntu环境下如何编写、编译和加载一个简单的Linux内核模块,详细阐述了内核模块的基本概念,以及使用makefile、insmod、rmmod等工具进行模块管理的过程。
最低0.47元/天 解锁文章
1084

被折叠的 条评论
为什么被折叠?



