购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Linux内核编程注意事项

Linux可以运行在两种模式下:用户模式(user mode)和内核模式(kernel mode)。当我们编写一个普通程序时,有时会包含stdlib.h文件,也就是说我们使用了C标准库,这是典型的用户模式编程,在这种情况下,用户模式的应用程序要链接标准C库。在内核模式下不存在libc库,即没有这些函数供我们调用。

此外,在内核模式下编程还存在一些限制:

·不能使用浮点运算。因为Linux内核在切换模式时不保存处理器的浮点状态。

·不要让内核程序进行长时间等待。Linux操作系统本身是抢占式的,但是在内核是非抢占式的,也就是说用户空间的程序可以抢占运行,但是内核空间程序不可以。

·尽可能保持代码的整洁性。内核调试不像调试应用程序那样方便,因此,在前期代码编写的过程中保持代码的整洁易懂,将大大方便后期的调试。

·在内核态下编程,系统内的所有资源都是在内核统一调配的,并且数量有限,因此在申请的资源用完后一定要进行释放,避免出现死锁情况。

·Linux内核API有很多配对使用。例如,文件引用计数有加操作,也会有相应的减操作,如果在实验中进行了“引用计数”加操作,函数执行后未进行减操作还原,可能会出现系统崩溃。

本书中的所有内核API验证实例都是在Linux内核态下进行编程与验证的。 NQSwBPqiKRen/T/hqoWwQfKmtJcM5XyP98coXshgjokOfKL3Pw2IM+lZrfldSbU4

点击中间区域
呼出菜单
上一章
目录
下一章
×