Linux内核API与用户API是具有本质区别的,因为它们所运行的系统模式不同。进行Linux内核源代码分析与内核API验证,需要具备一定的基础知识,掌握了这些基础知识后,才能在Linux内核源代码分析与内核API验证实例的理解中做到游刃有余。
Linux可以运行在两种模式下:用户模式(user mode)和内核模式(kernel mode)。当我们编写一个普通程序时,有时会包含stdlib.h文件,也就是说我们使用了C标准库,这是典型的用户模式编程,在这种情况下,用户模式的应用程序要链接标准C库。在内核模式下不存在libc库,即没有这些函数供我们调用。
此外,在内核模式下编程还存在一些限制:
- 不能使用浮点运算。因为Linux内核在切换模式时不保存处理器的浮点状态。
- 不要让内核程序进行长时间等待。Linux操作系统本身是抢占式的,但是在内核是非抢占式的,也就是说用户空间的程序可以抢占运行,但是内核空间程序不可以。
- 尽可能保持代码的整洁性。内核调试不像调试应用程序那样方便,因此,在前期代码编写的过程中保持代码的整洁易懂,将大大方便后期的调试。
- 在内核态下编程,系统内的所有资源都是在内核统一调配的,并且数量有限,因此在申请的资源用完后一定要进行释放,避免出现死锁情况。
- Linux内核API有很多配对使用。例如,文件引用计数有加操作,也会有相应的减操作,如果在实验中进行了“引用计数”加操作,函数执行后未进行减操作还原,可能会出现系统崩溃。
本教程中的所有内核API验证实例都是在Linux内核态下进行编程与验证的。
相关知识
学习本教程,你可以了解的相关知识点如下:
-
C语言教程C语言是应用最为广泛的一种高级程序设计语言,它不仅是计算机专业学生的必修课,也是许多非计算机专业学生所青睐的技术学科。C语言功能丰富,表达能力强,使用灵活方便,程序效率高,是结构化程序设计语言。
-
Linux教程
Linux(Linux is not Unix)是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux内核API
- Linux内核模块机制API
- Linux进程管理内核API
- Linux进程调度内核API
- Linux内核中断机制API
- Linux内核内存管理API
- Linux内核定时机制API
- Linux内核同步机制API
- Linux内核文件系统API
- Linux设备驱动及设备管理API
评论前必须登录!
注册