【读书笔记】【linux kernel development】【从内核出发】

本文探讨了内核编程的独特挑战,包括限制条件、内存管理特点、并发处理及代码优化技巧等关键方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【第二章 从内核出发】

 

7.内核开发的差异:

①内核编程时既不能访问C库也不能访问标准的C头文件。

②内核编译时必须使用GNUC

③内核编程时缺乏像用户空间那样的内存保护机制。

④内核编程时难以执行浮点运算。

⑤内核给每个进程只有一个很小的定长堆栈

⑥由于内核支持异步中断、抢占和smp,因此必须时刻注意同步和并发。

⑦要考虑移植的重要性。

 

8.printk()允许通过指定一个标志来设定优先级。

如: printk(KERN_ERR "this is an error!\n" );

 

9.定义一个内联函数时,需要使用static作为关键字,并用inline 限定。

如:

static inline void nolf(unsigned long tail_size)

一般在头文件定义内联函数

为了类型安全和易读性,优先使用内联函数而不是宏。

 

10.gcc内建了一条指令用于优化【分支声明】,内核将指令封装成宏,如:

likely()和unlikely()

if(error)

{ ///......}

if (unlikely(error))

{//.....}

 

11.内核的内存不分页,故每用掉一个字节,物理内存就减少一个字节。

 

12.在探索的征途中,最重要的是阅读和修改源代码。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值