读薄「Linux 内核设计与实现」 - 从内核出发
Posted 冰水比水冰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读薄「Linux 内核设计与实现」 - 从内核出发相关的知识,希望对你有一定的参考价值。
这篇文章是《读薄「Linux 内核设计与实现」》系列文章的第一篇,本文主要讲了两个问题:内核编程的特点以及 GNU C 在内核开发中的特点。
0x00 内核编程特点
- 无 libc 库,不能访问标准 C 文件
- 使用 GNU C
- 无内存保护机制
- 慎用浮点数计算
- 注意同步和并发
- 可移植性考虑:保持字节顺序、64位对齐、不假定字长和页面长度
0x01 GNU C
- 内联函数:将函数展开至调用位置,省却函数调用代价
- 内联汇编:在确定体系结构的情况下,在 C 代码中直接嵌入汇编代码
- 分支声明:分支时可根据预知条件发生的概率进行优化
例:
if(error){
/* do something */
}
优化后:
if(unlikely(error)){ //error为0的概率大
/* do something */
}
或:
if(likely(success)){ //success为0的概率大
/* do something */
}
本文的版权归作者 罗远航 所有,采用 Attribution-NonCommercial 3.0 License。任何人可以进行转载、分享,但不可在未经允许的情况下用于商业用途;转载请注明出处。感谢配合!
以上是关于读薄「Linux 内核设计与实现」 - 从内核出发的主要内容,如果未能解决你的问题,请参考以下文章