GNU C
linux内核使用C语言编写的,但并不完全符合ANSI C标准,它涵盖了ISO C99标准和GNU C扩展特性。实际上使用更多的是gcc编译器,他是多种GNU编译器的集合,包含的C编译器既可以编译内核,也可以编译linux系统上用C语言编写的代码。
内联函数:
C99和GNU C都支持内联函数,这么做可以消除函数调用和返回所带来的开销(寄存器存储和恢复-压栈出栈)。
内联汇编:
linux的内核混合了C与汇编,使用汇编的好处是:可以快速的执行对时间要求严格的代码。并且在偏近体系结构的底层也是用汇编来完成。
没有内存保护机制
不要轻易在内核中使用浮点数
可移植性的重要性:
linux是一个可移植的操作系统,也就是说大部分代码应该是与体系结构无关的,在不同的体系结构上都能编译和执行。所以,必须把与体系结构相关的代码从内核代码树的特定目录中适当的分离出来。
比如,保持字节序、64位对齐、不假定字长和页面长度等。