linux 处理机调度-EDF和RMS
pthread_create()函数
用来创建用户级线程。
头文件
#include "pthread.h"
int pthread_create (pthread_t *THREAD,pthread_attr_t * ATTR,void * (*START_ROUTINE)
(void *), void * ARG);
参数说明:
1.指向线程标识符pid的指针,pthread_t类型。
2.用来设置线程属性,pthread_attr_t 类型。
3.线程运行函数的入口,即起始地址。
4.线程运行函数的参数。
常用
pthread_create(tid,NULL,func,arg);
EDF
EDF(Earliest Deadline First)为可抢先式调度算法,是一种动态调度算法。
调度条件:
sum(Ci/Ti)<=1;
优先级根据任务的截止时间动态分配,截止时间越短,优先级越高。这种调度策略最优,已被证明所有负载小于等与1的任务集使用EDF都是是可调度的。
EDF算法在系统中保持一个实时任务就绪队列,具有最早截止时间的任务排在队列的最前面。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。
RMS
RMS(Rate Monotonic Scheduling)为不可抢先调度,称之为单调速率调度,任务按照单调速率优先级进行匹配。
调度条件:
sum(Ci/Ti)≤n(exp(ln(2)/n)-1);
优先级根据任务的周期T分配,根据任务的执行周期长短来决定调度的优先级,具有较短执行周期的任务具有较高的优先级,周期长的任务具有较低的优先级。