1.6 应用程序与内核模块的比较

模块编程属于内核编程,因此,除了对内核相关知识有所了解外,还需要了解与模块相关的知识。

为了加深对内核模块的了解,表1.3给出应用程序与内核模块程序的比较。

表1.3 应用程序与内核模块程序的比较

C语言应用程序 内核模块程序
使用函数 Libc库 内核函数
运行空间 用户空间 内核空间
运行权限 普通用户 超级用户
入口函数 main() module_init
出口函数 exit() module_cleanup()
编译 gcc-c mark
连接 gcc insmod
运行 直接运行 insmod
调试 gdb kdbug,kdb,kgdb等

从表1.3我们可以看出,内核模块程序不能调用libc库中的函数,它运行在内核空间,且只有超级用户可以对其运行。另外,模块程序必须通过module()_init和module()_cleanup函数来告诉内核“我来了”和“我走了”。

在了解内核模块简单编程之后,下面通过对内核中常用数据结构链表的分析,使大家初步了解Linux内核的具体源代码,并编写内核模块对其加以应用。

results matching ""

    No results matching ""