【单内核】:所有的内核服务都在一个地址空间上运行;
【微内核】:将功能模块划分为多个独立的过程(服务器),都运行在各自的地址空间上;
【Linux内核】:为单内核,提供模块化设计、抢占式内核、支持内核线程、多处理机制以及动态装载内核模块的能力;
【主.副.修.稳】
=========》内核源码下载地址《========
或者===》 git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
【特点】:
【无libc库和标准头文件】
内核不能连接C库,但大部分函数在内核都进行实现;
【GNU】
gcc是多种GNU编译器的集合,可编译内核及系统上的C程序;
【GNU中的区别】
1.内联函数:
C99及GNU支持,函数会在调用位置展开,减少函数调用以及返回带来的开销;
但会让内存空间增多,少用于常调用的函数;
2.分支声明
gcc内建了指令用于优化,likely和unlikely;
若使用正确,性能会提升,否则会下降;
一般用于错误条件判断;
【没有内存保护机制】
若用户程序内存错误则会结束进程,而内核则无法控制,没有提示;
【不要使用浮点数】
在用户程序中会被内核进行转换,内核中不会;
【同步和并发】
Linux是抢占多任务系统,内核进程调度会对进程进行调度;
是多处理器系统,会有多个访问统一资源;
常用自旋锁和信号量;