CN101609417B - 基于VxWorks操作系统的混合任务集调度方法 - Google Patents
基于VxWorks操作系统的混合任务集调度方法 Download PDFInfo
- Publication number
- CN101609417B CN101609417B CN2009100233617A CN200910023361A CN101609417B CN 101609417 B CN101609417 B CN 101609417B CN 2009100233617 A CN2009100233617 A CN 2009100233617A CN 200910023361 A CN200910023361 A CN 200910023361A CN 101609417 B CN101609417 B CN 101609417B
- Authority
- CN
- China
- Prior art keywords
- task
- periodic
- msub
- mixed
- tasks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000000737 periodic effect Effects 0.000 claims abstract description 114
- 230000004044 response Effects 0.000 claims abstract description 19
- 230000009191 jumping Effects 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims description 2
- 230000003111 delayed effect Effects 0.000 claims description 2
- 101150039208 KCNK3 gene Proteins 0.000 description 3
- 241000238876 Acari Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于VxWorks操作系统的混合任务集调度方法,主要克服了许多混合调度方法中非周期任务实时性差,CPU利用率低的问题。其步骤为:创建混合任务集并创建一个特殊周期任务,为该特殊周期任务创建一个信号量;进行任务调度前用改进后的时间需求算法判断混合任务集的可调度性;周期任务根据VxWorks所提供的基于优先级的抢占式调度算法进行调度;在特殊周期任务的运行过程中依次判断非周期任务的运行条件,若满足某非周期任务的运行条件则释放相应信号量使该非周期任务运行,该非周期任务运行完毕后释放信号量使特殊周期任务运行。本发明提高了CPU的利用率,减小了调度非周期任务时的响应时间,可用于对非周期任务较多的混合任务集的调度。
Description
技术领域
本发明属于计算机领域,涉及实时操作系统的任务调度方法,具体涉及了一种基于VxWorks的混合任务集调度方法。
背景技术
VxWorks是美国WindRiver公司开发的具有工业领导地位的高性能实时操作系统,同时也是现今所有独立于处理器的实时系统中最具特色的操作系统之一。
两种经典的调度方法为Liu C L和Layland J在1973年提出的Rate-Monotonic-RM算法和Earliest Deadline First-EDF算法,参照C L Liu,J W Layland.Scheduling Algorithms for Multiprogramming in a Hard Real-TimeEnvironment[J].Journal of the Association for ComputingMachinery,1973,20(1):116~128。RM算法对CPU的利用率不高,且只适用于周期任务集。EDF算法运行开销大,且对任务具有同一优先级的情况考虑不足。所以在这两种算法的基础上,又衍生出一些针对不同系统的不同解决方案。其中对于包含周期和非周期任务的混合任务集的调度主要有三种方法:空闲时间法、后台执行法和轮询法。空闲时间法由Robert Davis在1994年提出,参照RobertDavis.Dual Priority Seheduling:Ameans of Providing Flexibility in Hard Real TimeSystems.DePartment of ComPuter Seienee,University of York,Tech ReP:YCS-230,1994:101-122,该算法从周期任务调度的空隙获得时间处理非周期任务,它不能保证非周期任务的实时性要求。后台执行法由J P Lehoczky等人在1987年提出,参照J P Lehoczky,L Sha,J K Stronsnider.Enganced Aperiodic Responsiveness inHard Real Time Environments[C].In:Proc of the 8th IEEE Real Time SystemSymposium.San Jose,California:IEEE Computer Society Press,1987:210~217,该算法对非周期任务的处理时间较少导致其调度性能很差。由T P Baker等人在2005年提出的轮询法,参照T M Ghazalie,T P Baker.A periodic Servers in a DeadlineScheduling Environment[J].Journal ofReal Time Systems,2005,9(1):31-67,该算法周期性的为非周期任务提供时间片,大大优于后台执行法,但是该方法的最大缺点是:如果在为非周期任务提供的时间片内没有非周期任务执行时,则该时间片将被浪费,降低了CPU的利用率。
发明内容
本发明的目的在于克服上述已有调度方法实时性低,运算量大,CPU利用率低的问题,提供一种基于VxWorks操作系统的混合任务集调度方法,以提高CPU利用率,减小调度非周期任务时的响应时间,提高系统实时性。
为了达到上述目的,本发明采用的技术方案包括如下步骤:
(1)在操作系统Vxworks的编程环境下调用库函数taskSpawn( )创建混合任务集中各任务,并设定各任务的优先级,该混合任务集包含若干周期任务、若干非周期任务和一个特殊周期任务,同时为特殊周期任务创建信号量semIdT,信号量semIdT初始值为满;
(2)对创建的混合任务集进行如下可调度性判断:
2a)求出所有非周期任务的最大执行时间和到来的最小周期;
2b)根据最大执行时间和到来的最小周期,计算各任务的最大响应时间:
其中,i表示混合任务集中的一个任务,k表示混合任务集中周期任务的个数,和分别表示迭代到第n+1和第n次时的最大响应时间,Hi表示在时间ti内优先级高于τi并且已就绪的周期任务集,τk为Hi中的任务,Tk和Ck分别是τk的周期和最大执行时间,ψi表示在时间ti内已就绪的非周期任务集,j表示混合任务集中非周期任务的个数,τj为ψi中的任务,Tj′和Cj′分别是τj的最小周期和最大执行时间。
2c)将步骤2b)中求出的各个任务的最大响应时间与其任务时限相比较,若所有任务的最大响应时间均小于其任务时限,则系统可调度,否则系统不可调度;
2d)若任务集不可调度,调整特殊周期任务的周期,跳回步骤2b);若任务集可调度,在保证可调度性的条件下,根据系统的实时性要求调节特殊周期任务的周期;
(3)对混合任务集中的周期任务进行如下调度:
3a)各个周期任务在每一次运行前调用操作系统中Vxworks的库函数taskDelay(T)延迟一段时间,T表示任务被延迟的Tick数;
3b)根据操作系统VxWorks所提供的基于优先级的抢占式调度算法调度所有周期任务;
(4)对混合任务集中的非周期任务进行如下调度:
4a)分别为各个非周期任务创建信号量,初始值为空;
4b)执行特殊周期任务,首先判断是否满足第一个非周期任务设定的运行条件,若满足,则释放第一个非周期任务所对应的信号量使该非周期任务运行,第一个非周期任务运行完毕后将再次阻塞,特殊周期任务将继续往下运行;若不满足,则继续判断下一个非周期任务的运行条件,依次类推,直至判断完所有的条件,然后跳回步骤3a)。
本发明与现有技术相比具有如下优点:
(1)本发明由于在任务调度前先判断了混合任务集的可调度性,从而克服了许多混合调度方法中非周期任务调度性能低的问题,提高CPU的利用率。
(2)本发明由于在混合任务集中创建了一个特殊的周期任务来调度非周期任务,从而减小了调度非周期任务时的响应时间,提高系统的实时性。
附图说明
图1是本发明的实现框图;
图2是本发明中对混合任务集进行可调度性判断的流程图;
图3是本发明中周期任务的调度流程图;
图4是本发明中结合信号量机制的非周期任务调度流程图。
具体实施方式
下面结合附图和程序伪码对本发明的具体实施方式进行详细说明。
在具体实施方式中,使用到的特殊周期任务的伪码为:
参见图1,本发明的实现步骤如下:
步骤1,创建任务。
1a)在操作系统Vxworks的编程环境下调用库函数taskSpawn( )创建混合任务集中各任务,并设定各任务的优先级,该混合任务集包含若干周期任务、若干非周期任务和一个特殊周期任务,函数taskSpawn( )的具体调用方式如下:taskSpawn(″task1″,Priority,0,STACK_SIZE,(FUNCPTR)Task1,0,0,0,0,0,0,0,0,0,0)
其中,task1为任务名,Priority为该任务的优先级,STACK_SIZE为任务分配的堆栈大小,Task1为任务函数的入口地址。
对所有任务设置优先级时包括对周期任务和非周期任务优先级的设定,周期任务根据RM算法确定其优先级,即周期越短,优先级越高;非周期任务的优先级高于混合任务集中其它所有任务的优先级,且每一个非周期任务的优先级都相同;
1b)创建特殊周期任务的信号量,特殊周期任务的信号量置为满。
步骤2,对混合任务集进行可调度性检测。
本步骤的具体实现,参照图2如下:
2a)记录各个非周期任务的开始执行的时间和执行完成的时间,求出所有非周期任务的最大执行时间和到来的最小周期;
2b)根据最大执行时间和到来的最小周期,利用改进后的时间需求法计算各任务的最大响应时间,该时间需求法是用于确定周期任务集可调度性的方法,其基本思想是计算各周期任务实例的最大响应时间,并与任务时限相比较,若系统中所有任务实例的最大响应时间均小于各自的时限,则系统可调度,根据下式计算最大响应时间:
其中,和分别表示迭代到第n+1和第n次时的最大响应时间,Hi表示在时间ti内优先级高于τi并且已就绪的周期任务集,τk为Hi中的任务,Tk和Ck分别是τk的周期和最大执行时间,为使此方法用于本发明中混合任务集的可调度性判断,对计算最大响应时间的方法进行改进:
其中,ψi表示在时间ti内已就绪的非周期任务集,j表示混合任务集中非周期任务的个数,τj为ψi中的任务,Tj′和Cj′分别是τj的最小周期和最大执行时间;
2c)将步骤2b)中求出的各个任务的最大响应时间与其任务时限相比较,若所有任务的最大响应时间均小于其任务时限,则系统可调度,否则系统不可调度;
2d)若系统不可调度,适当延长特殊周期任务的周期,再跳到步骤2b)进行判断,循环进行,直到使得特殊周期任务找到一个合适的周期使系统可调度;若系统可调度,在保证系统可调度的条件下,根据实时性要求调整特殊周期任务的周期。
步骤3,对周期任务进行调度。
本步骤的具体实现,参照图3如下:
3a)遍历已经准备就绪的周期任务队列,执行其中优先级最高的周期任务;
3b)调用操作系统Vxworks中的库函数taskDelay(T),使得步骤3a)中开始执行的周期任务延时T个ticks,判断是否延时完毕,若延时完毕,则继续往下执行该周期任务;若延时没有完毕,则跳回步骤3a);
步骤4,对非周期任务进行调度。
本步骤的具体实现,参照图4如下:
4a)分别为各个非周期任务创建信号量,初始值为空;
4b)执行特殊周期任务,判断是否满足第一个非周期任务设定的运行条件,若满足,则特殊周期任务释放与第一个非周期任务对应的信号量,使其由空变为若满足,则特殊周期任务释放与第一个非周期任务对应的信号量,使其由空变为满,第一个非周期任务获得信号量后开始运行,因其优先级最高,所以不会被任何任务抢占;若不满足,则释放信号量特殊任务对应的信号量semIdT使其由空变为满,即信号量semIdT由不可用变为可用,特殊周期任务获得信号量semIdT,同时semIdT由满变为空,特殊周期任务由断点处继续往下运行;
4c)继续按照步骤4b)的方法继续判断下一个非周期任务,直到判断完第N个周期任务,然后按照步骤3调用周期任务。
Claims (2)
1.一种基于VxWorks操作系统的混合任务集调度方法,包括以下步骤:
(1)在操作系统VxWorks的编程环境下调用库函数taskSpawn( )创建混合任务集中各任务,并设定各任务的优先级,该混合任务集包含若干周期任务、若干非周期任务和一个特殊周期任务,同时为特殊周期任务创建信号量semIdT,信号量semIdT初始值为满;
(2)对创建的混合任务集进行如下可调度性判断:
2a)求出所有非周期任务的最大执行时间和到来的最小周期;
2b)根据最大执行时间和到来的最小周期,计算各任务的最大响应时间:
其中,i表示混合任务集中的一个任务,k表示混合任务集中周期任务的个数,和分别表示迭代到第n+1和第n次时的最大响应时间,Hi表示在时间ti内优先级高于τi并且已就绪的周期任务集,τk为Hi中的任务,Tk和Ck分别是τk的周期和最大执行时间,ψi表示在时间ti内已就绪的非周期任务集,j表示混合任务集中非周期任务的个数,τj为ψi中的任务,Tj′和Cj′分别是τj的最小周期和最大执行时间。
2c)将步骤2b)中求出的各个任务的最大响应时间与其任务时限相比较,若所有任务的最大响应时间均小于其任务时限,则系统可调度,否则系统不可调度;
2d)若任务集不可调度,适当延长特殊周期任务的周期,跳回步骤2b);若任务集可调度,在保证可调度性的条件下,根据系统的实时性要求调节特殊周期任务的周期;
(3)对混合任务集中的周期任务进行如下调度:
3a)各个周期任务在每一次运行前调用操作系统中VxWorks的库函数taskDelay(T)延迟一段时间,T表示任务被延迟的Tick数;
3b)根据操作系统VxWorks所提供的基于优先级的抢占式调度算法调度所有周期任务;
(4)对混合任务集中的非周期任务进行如下调度:
4a)分别为各个非周期任务创建信号量,初始值为空;
4b)执行特殊周期任务,首先判断是否满足第一个非周期任务设定的运行条件,若满足,则释放第一个非周期任务所对应的信号量使该非周期任务运行,第一个非周期任务运行完毕后将再次阻塞,特殊周期任务将继续往下运行;若不满足,则继续判断下一个非周期任务的运行条件,依次类推,直至判断完所有的运行条件,然后跳回步骤(3)。
2.如权利要求1所述的基于VxWorks操作系统的混合任务集调度方法,其中步骤(1)中所述的设定各任务的优先级,包括对周期任务和非周期任务优先级的设定,周期任务的优先级是根据Rate-monotonic-RM算法,即周期越短,优先级越高;非周期任务的优先级高于周期任务的优先级,且每一个非周期任务的优先级都相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100233617A CN101609417B (zh) | 2009-07-17 | 2009-07-17 | 基于VxWorks操作系统的混合任务集调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100233617A CN101609417B (zh) | 2009-07-17 | 2009-07-17 | 基于VxWorks操作系统的混合任务集调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101609417A CN101609417A (zh) | 2009-12-23 |
CN101609417B true CN101609417B (zh) | 2012-07-04 |
Family
ID=41483178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100233617A Expired - Fee Related CN101609417B (zh) | 2009-07-17 | 2009-07-17 | 基于VxWorks操作系统的混合任务集调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101609417B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833477B (zh) * | 2010-05-28 | 2013-06-12 | 浙江大学 | 基于SmartOSEK OS的非周期性任务调度方法 |
CN101872317B (zh) * | 2010-07-16 | 2012-12-26 | 山东中创软件工程股份有限公司 | VxWorks多任务同步与通信方法 |
CN102654843A (zh) * | 2011-03-04 | 2012-09-05 | 北京国科环宇空间技术有限公司 | 嵌入式处理器中非抢占式容错调度方法及嵌入式处理器 |
CN102662744B (zh) * | 2012-04-19 | 2014-06-11 | 上海大学 | 一种基于条件抢占的fpga任务调度方法 |
CN102760187B (zh) * | 2012-06-19 | 2015-05-27 | 上海大学 | 综合时间因素和空间因素的fpga任务放置方法 |
CN106547721A (zh) * | 2015-09-16 | 2017-03-29 | 晨星半导体股份有限公司 | 例行工作的分配方法及应用其的多核心计算机 |
CN106445659B (zh) * | 2016-09-09 | 2019-07-12 | 北京控制工程研究所 | 一种空间飞行器周期性混成随机任务调度方法 |
CN108304257A (zh) * | 2018-02-09 | 2018-07-20 | 中国船舶重工集团公司第七六研究所 | 基于延迟服务器的强实时混合任务调度方法 |
CN113986500A (zh) * | 2021-10-28 | 2022-01-28 | 浙江中控技术股份有限公司 | 多任务系统中的任务确定性调度方法和任务诊断方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740973A (zh) * | 2004-08-23 | 2006-03-01 | 中兴通讯股份有限公司 | 一种实时任务管理与调度方法 |
CN101097514A (zh) * | 2006-06-27 | 2008-01-02 | 国际商业机器公司 | 启用同时多线程(smt)的系统及其管理方法 |
-
2009
- 2009-07-17 CN CN2009100233617A patent/CN101609417B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740973A (zh) * | 2004-08-23 | 2006-03-01 | 中兴通讯股份有限公司 | 一种实时任务管理与调度方法 |
CN101097514A (zh) * | 2006-06-27 | 2008-01-02 | 国际商业机器公司 | 启用同时多线程(smt)的系统及其管理方法 |
Non-Patent Citations (1)
Title |
---|
李慧 等.Vx Works下基于多任务调度的分析和研究.《微机发展》.2005,第15卷(第06期),30-32. * |
Also Published As
Publication number | Publication date |
---|---|
CN101609417A (zh) | 2009-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101609417B (zh) | 基于VxWorks操作系统的混合任务集调度方法 | |
Buttazzo et al. | Limited preemptive scheduling for real-time systems. a survey | |
CN108762896B (zh) | 一种基于Hadoop集群任务调度方法及计算机设备 | |
CN110287003B (zh) | 资源的管理方法和管理系统 | |
CN103491174A (zh) | 基于延迟服务器的周期/非周期混合实时任务调度方法 | |
CN101499019B (zh) | 电信级以太网系统及用于该系统的实时任务调度方法 | |
Lonn et al. | A comparison of fixed-priority and static cyclic scheduling for distributed automotive control applications | |
CN101923487A (zh) | 一种综合嵌入式实时周期任务调度方法 | |
CN106569887B (zh) | 一种云环境下细粒度任务调度方法 | |
CN105389204A (zh) | 一种多资源偏序调度策略 | |
Santoso et al. | Hierarchical job scheduling for clusters of workstations | |
Bril et al. | Best-case response times and jitter analysis of real-time tasks with arbitrary deadlines | |
CN112181689A (zh) | 一种在云端下进行gpu内核程序高效率调度的运行时系统 | |
CN108304257A (zh) | 基于延迟服务器的强实时混合任务调度方法 | |
CN106354553A (zh) | 一种大数据系统中基于资源估算的任务调度方法及装置 | |
CN105117281A (zh) | 一种基于任务申请信号和处理器内核执行代价值的任务调度方法 | |
Lorente et al. | An EDF hierarchical scheduling model for bandwidth servers | |
Urriza et al. | Fast Slack Stealing methods for Embedded Real Time Systems | |
Dong et al. | A general analysis framework for soft real-time tasks | |
CN114936076B (zh) | 一种面向混合任务集的实时调度方法、装置和计算机设备 | |
Kumar et al. | Real-time analysis of servers for general job arrivals | |
EP2637096B1 (en) | A system for schedule and executing best-effort, real-time and high-performance computing (HPC) processes | |
Wu et al. | Weakly hard real-time scheduling algorithm for multimedia embedded system on multiprocessor platform | |
CN110348818B (zh) | 一种流程引擎的流程智能处理方法及系统 | |
Kim | Real-time scheduling for power-saving of mixed tasks with periodic and aperiodic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120704 Termination date: 20210717 |