多核划分方法-节点优先值计算

多核划分方法-节点优先值计算

实时系统

在这里实时系统中,节点优先值计算上用到的部分概念
工作 Job:系统可调度和执行的工作单元
工作释放时间 release time r: 工作时间的一个实例, 工作可以执行的时刻。
工作执行时间 Execution time e: 从开始工作到结束的时间长度。

依赖关系:任务 J 依赖于任务 I, 是指任务 I 完成后,任务 J 才能开始执行,此时称任务 I 称为任务 J 的前驱(Predecessor),任务 J 为任务 I 的后继(successor)。任务 I 称为任务 J 的直接前驱(immediate Predecessor),而任务 J 称为任务 I 的直接后继(immediate successor),如果 I 是任务 J 的前驱,并且不存在一个任务 K 使得 I 是任务 K 的前驱同时 K 是任务 J 的前驱。使用 I→J 表示 I 为 J 的直接前驱和 J是 I 的直接后续的依赖关系。
依赖关系可有图表示为
一个依赖关系例子
其中节点名为T1,直接后继节点为T4、T5,执行时间为1,其它节点类似。

任务优先级:是指给每个任务制定一个优先执行的级别,任务按照优先级顺序进行排队,在调度的任何时刻,具有最大优先级的任务优先安排到处理器上执行。

节点优先级计算方式

对于任务节点优先级计算应为:
该节点优先级=该节点执行时间+该节点直接后继节点数+直接后继节点中最大优先级
如果没有后续节点则节点优先级为执行时间
可见优先级计算应当由后继节点进行计算,直到前驱节点。
在优先级相同的情况下,再根据释放时间进行排序,释放时间越早优先级越高;释放时间相同时,根据执行时间进行排序,执行时间越长优先级越高;执行时间也相同时按照节点序号进行排序,序号越小优先级越高;

JAVA实现

import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;

public class CalPriority
{
   
	static double[][] matr=
		{
   
		    {
   0,0,0,1,1},
		    {
   0,0,0,1,1},
		    {
   0,0,0,0,1},
		    {
   0,0,0,0,0},
		    {
   0,0,0,0,0}

		};//导入邻接矩阵,有向无环图
		
	static double[] exeTime= {
   1,1,2,1,1};//执行时间表
	static double[] relTime= {
   0,3,0,0,0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值