读薄「Linux 内核设计与实现」(1) - 从内核出发

这篇文章是《读薄「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。任何人可以进行转载、分享,但不可在未经允许的情况下用于商业用途;转载请注明出处。感谢配合!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值