读薄「Linux 内核设计与实现」(1) - 从内核出发
2016-06-07 02:28
281 查看
这篇文章是《读薄「Linux 内核设计与实现」》系列文章的第一篇,本文主要讲了两个问题:内核编程的特点以及 GNU C 在内核开发中的特点。
使用 GNU C
无内存保护机制
慎用浮点数计算
注意同步和并发
可移植性考虑:保持字节顺序、64位对齐、不假定字长和页面长度
内联汇编:在确定体系结构的情况下,在 C 代码中直接嵌入汇编代码
分支声明:分支时可根据预知条件发生的概率进行优化
例:
优化后:
或:
本文的版权归作者 罗远航 所有,采用 Attribution-NonCommercial 3.0 License。任何人可以进行转载、分享,但不可在未经允许的情况下用于商业用途;转载请注明出处。感谢配合!
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 分卷解压
- 从0开始玩安全——Linux基础(1)
- linux下django的安装、配置
- 使用linux c 目录操作函数,读取任一目录下的所有目录信息文件信息
- centos7安装gitlab
- linux升级mysql到5.7
- Linux 环境Mysql配置记录(持续记录)
- centos No module named yum
- linux主目录下各个子目录的作用
- linux查看硬件信息及驱动设备相关整理
- SELinux入门
- Linux运维有绝招
- linux find grep组合使用
- Linux查找文件内容(grep)
- linux内核移植详解1——板级初始化过程
- Linux系统的进程通常有以下几种状态:
- linux内核移植详解1——板级初始化过程
- CentOS增加网卡
- Linux常见面试题2
- Linux常见面试题1