一种基于多线程的卫星数据产品生产任务并行调度方法技术

技术编号:4270800 阅读:323 留言:0更新日期:2012-04-11 18:40
一种基于多线程的卫星数据产品生产任务并行调度方法,包括:为待调度执行的任务设置优先级并实现统一接口;将任务按照优先级由高到底的顺序加入到优先级队列;设置线程池的任务最大数量,最小数量和线程的最长空闲时间;启动线程池中的守护线程和多个任务线程执行任务,守护线程根据任务量情况动态调整任务线程的数量。本发明专利技术能够合理利用系统资源,针对卫星地面应用系统的数据产品生产,解决了产品生产流程复杂、任务执行时间长、任务量大、任务调度实时性、并行度高等难点。

【技术实现步骤摘要】

本专利技术涉及,适用于卫星地面应用系统数据产品生产任务的调度。
技术介绍
随着卫星数据应用业务的快速发展,卫星地面应用系统面临卫星数据产品种类 多、处理流程复杂、任务种类和任务量快速增加的难题。为解决上述问题,需要一种有效的 调度方法,实现自动、科学有效地系统资源调配与任务调度,满足遥感数据产品快速、高效、 可靠生产的要求。 以往的卫星数据产品生产需求量有限,应用系统规模小,任务调度软件同时能调 度的任务数量少,产品生产的延迟性大。目前,卫星地面应用系统规模增大,进行卫星数据 产品生产的设备数量增多,可以进行大量产品的同时生产,提高了产品生产任务并行调度 的要求。以往的任务调度方法已经无法满足卫星数据产品生产任务量急剧增长、任务调度 的实时性和并行性要求增高等需求。
技术实现思路
本专利技术的技术解决问题是克服现有技术的不足,提供一种基于多线程的卫星数 据产品生产任务并行调度方法,该方法解决了卫星数据产品生产流程复杂、任务量大、任务 种类多等问题,提高了任务调度的实时性和并行性。 本专利技术的技术解决方案是一种基于多线程的卫星数据产品生产任务并行调度方 法,其特征在于包括任务生成、优先级队列管理、线程池创建、线程池管理4个部分,实现 如下 (1)任务生成根据卫星数据产品数据要求,生成任务并确定任务的优先级和任 务在优先级队列中的最长等待时间; (2)优先级队列管理根据步骤(1)确定的任务优先级和优先级别数量,创建相 应优先级别和优先级数量的线程安全的队列,将待执行的任务按照其优先级的级别插入到 相应的队列中,并为任务增加一个时间戳,记录该任务加入到队列的时间,在任务调度过程 中,检查非最高优先级队列中每个任务的等待时间,如果超过步骤(1)中的最长等待时间 而该任务仍未被执行,则将该任务转移到上一级优先级更高的队列中并更改时间戳,以防 止低优先级的任务长时间得不到执行; (3)创建线程池将线程分为守护线程和任务线程,根据系统CPU的数量、任务的 I/O等待时间和任务生成频率确定任务线程的最大数量和最小数量,并设置任务线程的最 长空闲时间,根据任务线程的最小数量创建并启动相应数量的任务线程,任务线程的状态 分为Ready态、空闲态、运行态和终结态四种状态,并为每个任务线程分配唯一的ID,任务 线程按照优先级由高到低的顺序从优先级队列中取出任务进行执行;创建并启动唯一的守 护线程,并由守护线程生成任务线程状态表,用于调整和控制线程池中任务线程的数量和3状态; (4)线程池管理守护线程维护线程池中任务线程的数量和任务线程状态表,记 录和控制任务线程状态的变化,如果有新任务加入到优先级队列,而当前无空闲的任务线 程,并且任务线程总数小于设定的任务最大线程数量,则守护线程负责创建新的任务线程 执行任务;如果所有优先级队列为空,即无需要执行的任务,任务线程将进入空闲状态,并 通过两种方式转变为终结态第一种方式是空闲状态超过设定的最长空闲时间,则自动结 束转变为终结态;第二种方式是守护线程扫描所有的空闲线程,由守护线程结束任务线程 将其转变为终结态,但守护线程要保证线程池中任务线程的数量不少于设定的任务线程最 小数量。 所述步骤(3)中最大线程数量的确定为N^ (l+Tw/Ts),最小线程数量确定为Fc^ (Tw+Ts) , Tw为任务的I/O等待时间,单位为秒,Ts为真正占用CPU的时间,单位为秒,N为 系统CPU的数量,Fc为任务生成频率,最小线程数量可设定为Fc * (Tw+Ts),任务线程的最 长空闲时间设定为1/Fc,单位秒。 本专利技术与现有技术相比具有如下优点 (1)本专利技术该方法能够合理利用系统资源,根据任务优先级调度任务,解决了复杂 的生产流程、大任务量等带来的调度问题,同时能调度的任务数量极大增加,满足了任务调 度的实时性、并行性和高效率的需求。 (2)本专利技术优先级队列根据优先级级别数量采用多个队列存储不同优先级的任 务,而传统采用单一队列的方式,需要使用排序算法将任务插入到相应位置,插入效率较 低。(3)本专利技术优先级队列管理中为每个加入的任务设置一个加入时间戳,如果该任务在队列中等待的时间超过设定的最长等待时间,则将任务转移到上一级优先级更高的队列中,并更改时间戳,该方法有效防止了低优先级的任务长时间得不到执行的问题。(4)本专利技术将线程池中的线程分为守护线程和任务线程,并设定线程池的任务最小数量、最大数量以及最长空闲时间,守护线程维护和控制任务线程的数量和状态,最大限度的使用系统资源同时又减小了对系统资源的浪费。 总之,本本专利技术与传统的调度方法相比,该方法解决了卫星数据产品生产流程复 杂、任务执行时间长、任务量大、任务调度的实时和并行处理要求高等问题,工程实现表明, 采用本专利技术方法进行的任务调度性能优越,实时性和并行性满足用户要求,实际可行,已成 功地应用于某卫星的地面处理系统中得到的有效的应用和验证。附图说明 图1为本专利技术的功能结构图; 图2为本专利技术中任务线程状态转移示意图; 图3为本专利技术中守护线程的流程示意图。具体实施例方式下面结合附图对本专利技术作进一步说明。 卫星数据产品生产任务根据生产要求的不同,任务的优先等级、流程复杂程度以4及任务执行时间也不同,本专利技术根据任务的特点由多个优先级队列存储任务,采用多线程 调度任务执行,并用线程池管理多线程。本专利技术的功能组成如图l所示。 本专利技术的实现过程如下 1、根据卫星数据产品生产要求,生成生产任务,确定任务的优先级和任务在队列 中的最长等待时间。所有任务的实现都继承Rurmable()接口 ,为任务的执行提供统一的 run()方法入口。 2、根据任务的优先级和优先级别数量,创建相应级别和数量的线程安全的队列, 如任务的优先级从高到低分为1 5级,则相应的创建5个优先级队列,分别存储1 5 级的任务。 3、将待执行的任务按照其优先级插入到相应的队列中,并为任务增加一个时间戳,记录该任务加入到队列的时间。检查非最高优先级队列中每个任务的等待时间,如果等待时间超过设定的任务最长等待时间而该任务仍未被执行,则将该任务转移到上一级优先级更高的队列中并更改时间戳为当前加入队列的时间。 4、创建线程池,生成并启动守护线程和任务线程,具体步骤如下 (1)根据系统CPU的数量、任务的I/O等待时间和任务生成频率等情况确定任务线程的最大数量和最小数量,并设置任务线程的最长空闲时间。假设任务的1/0等待时间为Tw (单位秒),真正占用CPU的时间Ts (单位秒),系统CPU的数量为N,任务生成频率为Fc(单位个每秒),则线程池中的任务线程的最大数量设定为(l+Tw/Ts),任务线程的最小数量设定为Fc * (Tw+Ts),任务线程的最长空闲时间设定为1/Fc(单位秒)。 (2)线程池创建并启动唯一的守护线程,根据设定的任务线程的最小数量创建任务线程,并为每个任务线程分配唯一的ID ;将任务线程的状态分为Ready态、空闲态、运行态和终结态四种状态。任务线程状态转变如2图所示任务线程创建成功但未启动时,任务线程为Ready态;如果任务线程开始执行任务则转变为运行态;如果优先级队列全部为空,则将任务线程在空队列上阻塞,并设置最长阻塞时间,此时任务线程转变空闲态;如本文档来自技高网...

【技术保护点】
一种基于多线程的卫星数据产品生产任务并行调度方法,其特征在于:包括任务生成、优先级队列管理、线程池创建、线程池管理4个部分,实现如下:(1)任务生成:根据卫星数据产品数据要求,生成任务并确定任务的优先级和任务在优先级队列中的最长等待时间;(2)优先级队列管理:根据步骤(1)确定的任务优先级和优先级别数量,创建相应优先级别和优先级数量的线程安全的队列,将待执行的任务按照其优先级的级别插入到相应的队列中,并为任务增加一个时间戳,记录该任务加入到队列的时间,在任务调度过程中,检查非最高优先级队列中每个任务的等待时间,如果超过步骤(1)中的最长等待时间而该任务仍未被执行,则将该任务转移到上一级优先级更高的队列中并更改时间戳,以防止低优先级的任务长时间得不到执行;(3)创建线程池:将线程分为守护线程和任务线程,根据系统CPU的数量、任务的I/O等待时间和任务生成频率确定任务线程的最大数量和最小数量,并设置任务线程的最长空闲时间,根据任务线程的最小数量创建并启动相应数量的任务线程,任务线程的状态分为Ready态、空闲态、运行态和终结态四种状态,并为每个任务线程分配唯一的ID,任务线程按照优先级由高到低的顺序从优先级队列中取出任务进行执行;创建并启动唯一的守护线程,并由守护线程生成任务线程状态表,用于调整和控制线程池中任务线程的数量和状态;(4)线程池管理:守护线程维护线程池中任务线程的数量和任务线程状态表,记录和控制任务线程状态的变化,如果有新任务加入到优先级队列,而当前无空闲的任务线程,并且任务线程总数小于设定的任务最大线程数量,则守护线程负责创建新的任务线程执行任务;如果所有优先级队列为空,即无需要执行的任务,任务线程将进入空闲状态,并通过两种方式转变为终结态:第一种方式是空闲状态超过设定的最长空闲时间,则自动结束转变为终结态;第二种方式是守护线程扫描所有的空闲线程,由守护线程结束任务线程将其转变为终结态,但守护线程要保证线程池中任务线程的数量不少于设定的任务线程最小数量。...

【技术特征摘要】
一种基于多线程的卫星数据产品生产任务并行调度方法,其特征在于包括任务生成、优先级队列管理、线程池创建、线程池管理4个部分,实现如下(1)任务生成根据卫星数据产品数据要求,生成任务并确定任务的优先级和任务在优先级队列中的最长等待时间;(2)优先级队列管理根据步骤(1)确定的任务优先级和优先级别数量,创建相应优先级别和优先级数量的线程安全的队列,将待执行的任务按照其优先级的级别插入到相应的队列中,并为任务增加一个时间戳,记录该任务加入到队列的时间,在任务调度过程中,检查非最高优先级队列中每个任务的等待时间,如果超过步骤(1)中的最长等待时间而该任务仍未被执行,则将该任务转移到上一级优先级更高的队列中并更改时间戳,以防止低优先级的任务长时间得不到执行;(3)创建线程池将线程分为守护线程和任务线程,根据系统CPU的数量、任务的I/O等待时间和任务生成频率确定任务线程的最大数量和最小数量,并设置任务线程的最长空闲时间,根据任务线程的最小数量创建并启动相应数量的任务线程,任务线程的状态分为Ready态、空闲态、运行态和终结态四种状态,并为每个任务线程分配唯一的ID,任务线程按照优先级由高到低的顺序从优先级队列中取出任务进行执行;创建并启动...

【专利技术属性】
技术研发人员:李颖孙晓良石贞云梁洁雯刘华
申请(专利权)人:航天恒星科技有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1