多任务
1.多任务可以划分为两类
- 非抢占式多任务,进程自己主动让出,如果不让出就麻烦
- 抢占式多任务,由调度程序挂起进程,Linux使用抢占式多任务
2.IO消耗性/CPU消耗性
- IO消耗型,比如GUI界面
- CPU消耗型,比如无限循环执行
- IO和CPU都消耗型,比如X Window服务
3.为了提高响应优化,Linux一般会优先调度IO消耗性进程
4.实时进程和普通进程
- 实时进程一直运行直到退出,除非它阻塞才会释放CPU
- 实时进程只能被更高优先级的实时进程抢占
- 实时进程优先级高于普通进程
- 如果有多个实时进程,就会根据实时进程调度策略来进行调度
5.Linux采用两种不同的优先级范围
- nice值,越大优先级越低,用于普通进程,超级用户可以设置为复制
- 实时优先级,用于实时进程,首先要知道,实时进程优先级高于普通进程,所以它和NICE值不相交
6.时间片,通常很短,代表进程运行完一个时间片就被抢占,交替运行,时间片太长会使系统交互能力欠佳
7.Linux调度类分为采用 CFS 调度算法的默认调度类和实时调度类★
8.Linux的调度入口是schedule,它会找到一个优先级最高的调度类,然后拿到下一个要运行的进程
9.被阻塞的进程处于一个特殊的不可执行状态,比如等待IO,阻塞进程分为可中断和不可中断,但它们都位于同一个等待队列