一个计算机系统为了实现实时性,必须对cpu及其他资源进行管理。在linux操作系统中,实时系统可以分为软实时和硬实时两种。
实时操作系统的调度算法主要分为以下三种:
基于优先级的调度算法:
静态优先级(RM):给得到运行的所有进程静态地分配一个优先级,RM算法根据任务的执行周期 的长短来分配优先级
动态优先级(EDF):根据deadline分配优先级
基于cpu的使用比例
基本思想主要有两种:
1、调节各个进程出现在就绪队列队首的频率,并调度队首的进程执行
2、逐次调度就绪队列的各个进程,但根据权重分配时间片
基于时间
适用于稳定的,对各个任务的开始,切换以及结束时间等事件做出明确的说明和设计的系统。
linux中的调度算法有如下三种:
RR:
FIFO:
这两种都是针对实时进程的调度算法,两者的区别在于:对于优先级相同的进程,RR是采用轮转的方式,而FIFO是采用先来先服务的方式,一个执行完了再执行另外一个。
进程 | 优先级 |
---|---|
A | 1 |
B | 2 |
C | 2 |
D | 3 |
E | 3 |
假设B进程比C进程早到,而E进程比D进程早到,则采用FIFO的调度顺序为:
A-B-C-E-D
采用RR的调度顺序为:
A-B-C-B-C......-E-D-E-D......
NORMAL:
普通进程所采用的调度策略