Linux kernel
代码相对于user-space
程序的一些特性:
(1)kernel
代码不能访问标准C
程序库(libc
)和头文件(例如打印使用printk
,而不是printf
);
(2)kernel
代码是用GNU C
实现的,不是ANSI C
(比如:内联函数,内联汇编,分支预测等等);
(3)kernel
程序没有内存保护;
(4)避免在kernel
代码中引入浮点运算;
(5)kernel
程序为每个进程预分配的堆栈空间很小;
(6)因为kernel
程序是可抢占的(preemptive
),支持symmetrical multiprocessing (SMP)
和异步中断(asynchronous interrupt
),所以开发kernel
程序时要时刻考虑并发和同步问题;
(7)可移植性对于kernel
代码非常重要。