优先级
系统资源的优先等级的参数
优先级(priority)是一种约定,优先级高的先做,优先级低的后做。优先级是计算机分时操作系统在处理多个作业程序时,决定各个作业程序接受系统资源的优先等级的参数。
内容简介
各个作业在输入计算机之前,都要按一定的要求对它指定优先级。例如要按程序的性质或其长度,或是按作业的来源等,指定其优先级。然后计算机根据各作业程序优先级的高低,来决定处理各程序的先后次序。甚至在处理过程中,还能允许优先级较高的程序中断优先级较低的程序。
进程是有优先级的。如果即将被运行的进程的优先级比正在运行的进程的优先级高,则系统可以强行剥夺正在运行的进程的CPU,让优先级高的进程先运行。
参数
用于支持某个LAN网段中某个HSRP组中的活动HSRP路由器选择。缺省优先级是100。每组内优先级最高的路由器会被选为该组的活动转发路由器。
优先级反转
由于具有较低优先级的任务长时间占用共享资源,造成申请该资源的优先级最高的进程始终处于等待状态,此时其他比占用资源优先级高但比等待资源进程优先级低的进程将获得处理器的使用权,并先于优先级最高的处于等待状态的进程先结束,称这种现象为优先级反转。
发生的防止
ucos中可以利用互斥型信号量解决上述问题。互斥型信号量创建函数申请一个比使用某共享资源的所有进程中比最高优先级更高的优先级作为预留。当某个进程调用pend函数申请使用该共享资源,同时该资源已经被占用时,pend函数会判断是否需要提升占用该资源进程的优先级,以使其尽快释放所占用的资源,从而防止优先级反转的发生。
优先级等级
任务的优先级等级与相对截止期、空闲时间之间的层次关系可以用一种线性关系来描述,比如,
di+ksj=g
其中,k为线性关系的斜率,g 可以看成是优先级等级。对于确定的斜率k,g 越小,优先级等级越高。比如,对于g1
分配公式
∀(di,sj),任务Tij的优先级可以定义成
其中a0=0;ai由下面确定(记m0为正整数):
(1) 当m=2m0(偶数)时,ai=j,i=2j−1,2j,j=1,…,m0−1;am−1=m0,am=m0;am+i=am−i,0
(2) 当m=2m0−1(奇数)时,ai=j,i=2j−1,2j,j=1,…,m0−1;am=m0;am+i=am−i,0
优先级插值
前面对于优先级表的讨论都是针对任务具有特定的相对截止期和特定的空闲时间来进行优先级设计的。对于任一任务T,其相对截止期u或空闲时间v不一定是特定的相对截止期或特定的空闲时间,这时T的优先级可通过对事先确定的优先级表进行线性插值获得。不妨假设d1≤u≤dm,s1≤v≤dn,下面介绍采用二元三点插值公式来计算T的优先级P(T,u,v)的方法。
对于相对截止期u,我们可以在m个典型相对截止期d1,d2,… ,dm中找到离u值最近的3个典型相对截止期,记为di(i=p,p+1 和p+2);同样地,对于空闲时间v,我们也可以在n个典型空闲时间s1,s2,… ,sn中找到离v值最近的3个典型空闲时间,记为sj(j=q,q+1,q+2)。这样,我们可以得到点(u,v) 周围的9个点(di,sj),(i=p,p+1,p+2;j=q,q+1,q+2),每个点对应一个典型的任务Ti j,每个任务Tij具有自己惟一分配的优先级值P(Tij,di,sj)。然后利用这9个点对应的任务优先级值进行Lagrange插值计算P(T,u,v):
最新修订时间:2024-06-19 12:02
目录
概述
内容简介
参数
优先级反转
参考资料