处理器的活动
每个处理器在任何指定时间点上的活动必然为下列三者之一
- 运行于用户空间,执行用户进程
- 运行于内核空间,处于进程上下文,代表某个特定的进程执行
- 运行于内核空间,处于中断上下文,于任何进程无关,处理某个特点的中断
单内核与微内核
linux是单内核,但它也汲取了微内核的精华。
- 支持动态加载内核模块
- 支持对称多处理(SMP)机制
对称多处理"(SymmetricalMulti-Processing)简称SMP,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。
- 内核可抢占
- 不区分进程线程
内核开发的特点
- 不能访问C库也不能访问标准的C头文件
先有鸡还是先有蛋
比如不能用prinftf,只能用printk
也就是说智能包含内核自己的头文件们,比如:<linux/inotify.h> - 必须使用GNU C
static inline
asm()
likely()/unlikely() - 没有内存保护机制
用户程序的内存保护有内核来做,可以内核没法自己保护自己 - 不要轻易在内核使用浮点数
- 容积小而固定的栈
内核给进程的栈只有一两页的样子 - 由于内核支持异步中断,抢占和SMP,因此必须时刻注意同步和并发
自旋锁,信号量等就是为此准备