《linux内核设计与实现》Chapter2内核出发(笔记)

Chapter2 从内核出发


2.1
内核源码树

内核源码树位置:/usr/src/$uname-q


2.2
编译内核&安装内核

千万不要着急,编译内核&安装内核是以后的事情啦,这里说了也忘了,至于我自己也不懂,不过等看完linuxkernel的原理,涉及源码的时候再来学吧。


2.3内核开发的特点linux思想很重要,而我个人喜欢kernel的原因之一是因为它够特别)

1内核编译时不能访问libC

libC不能用啦,表明我们学C时有些函数不一样

2必须使用GNUC

GNUC规定了几条:

1inline函数:消除函数调用返回带来开销Staticinline void dog(unsigned long tail_size)

2inline汇编

3分支声明用likely()& unlikely()if(likely(foo)){/*...*/ }

3没有内存保护机制

kernel保护用户区,kernel区自然没人保护啦

4不要使用浮点运算

5只有容积小而固定的栈

kernel很可怜的,只能用2页的栈

6注意同步与并发

常用解决竞争的办法是自旋锁&信号量(chapter9

7考虑可移植性chapter20



chapter2
小结:
没有内存保护,靠不住libC,小小堆栈,庞大源码树,对,这就是linuxkernel,就如一头猛兽,你害怕吗?还是想做一个美女,拿着皮鞭教训这个不听话的kernel呢?





你可能感兴趣的:(c,linux,汇编,linux内核)