linux的进程分为两种
1.实时进程,优先级高,操作系统会优先执行这种进程
2.普通进程,大多数的进程都是这种进程
调度策略
unsigned int policy;
调度策略的定义
#define SCHED_NORMAL 0
#define SCHED_FIFO 1
#define SCHED_RR 2
#define SCHED_BATCH 3
#define SCHED_IDLE 5
#define SCHED_DEADLINE 6
配合调度策略的还有刚才我们说的优先级
int prio, static_prio, normal_prio;
unsigned int rt_priority;
优先级其实就是一个数值,实时进程的取值范围是0-99,普通进程的取值范围是100-139,
数字越小,优先级越高,可以看出来,所有实时进程的优先级都比普通进程的优先级高
实时调度策略
SCHED_FIFO SCHED_RR SCHED_DEADLINE
这三种调度策略都是针对实时进程的调度策略
SCHED_FIFO 这种调度策略是遵从先到先得的规则,
但是如果某个进程的优先级比另一个进程的优先级高
那么可以抢占该进程,也就是说高优先级的进程可以抢占低优先级的进程
SCHED_RR(轮流调度算法),采用时间片的方式,相同优先级的进程用完cpu的时间片后,就会被放到队列尾部,保证公平性
SCHED_DEADLINE
因为对于实时进程来说,进程需要在某个时间周期内执行完,否则就会出错
所以这种策略就是优先执行deadline时间距离当前时间最近的进程
原文:https://www.cnblogs.com/sjks/p/10852303.html