短任务处理方法、装置及操作系统的制作方法_3

文档序号:8339451阅读:来源:国知局
序的连续短任务的数量,当计数器到达阈值时,即应用程序的短任务数量和密集程度到达阈值时,才向操作系统申请预留硬件线程。作为静态方法的补充,该计数器可以保证应用程序内短小任务尚不多或尚不密集时,不会因为占用预留硬件线程而浪费硬件资源。
[0105]步骤402、向所述操作系统下发待执行的短任务,以使所述操作系统将所述待执行的短任务直接装载在所述预留硬件线程上执行。
[0106]本发明实施例通过应用程序中向所述操作系统下发待执行的短任务,以使所述操作系统将所述待执行的短任务直接装载在所述预留硬件线程上执行,实现不需要创建线程就能执行短任务,解决在大规模短任务系统环境中,操作系统将耗费大量资源用于线程的创建和释放过程的问题。
[0107]在上述方案中,进一步还可以:在接收所述操作系统发送的待执行的短任务的数目超过所占有的预留硬件线程的处理能力的提示消息时,向所述操作系统继续发送请求设置预留硬件线程的申请消息以使所述操作系统继续将普通硬件线程设置成预留硬件线程。从而可以解决短任务数目超过所述应用程序所占有的预留硬件线程的处理能力时产生的调度拥塞问题。
[0108]实施例五
[0109]图5A-图5B为本发明短任务处理方法实施例五的流程图,本实施例在上述实施例的基础上,提供一完全实施例,详细说明本发明短任务处理方法,图5A为短任务1-7的处理方法流程图,如图5A所示,具体包括:
[0110](I)、短任务1、短任务2以及短任务3采用传统方式运行,由操作系统生成线程,并调度到普通硬件线程上运行,最终短线程1、短线程3被调度到普通硬件线程I的可运行队列中等待运行,短线程2被调度到普通硬件线程2的可运行队列中等待运行。
[0111](2)、当应用程序维护的计数器超过阈值时,应用程序得知目前自身的短任务数量较多,应当向操作系统申请预留硬件线程。应用程序不具有使用预留硬件线程条件时,维护连续短任务个数计数器。应用程序已经拥有使用硬件线程条件时,维护短任务拥堵个数计数器。
[0112](3)、应用程序的主线程向操作系统发起请求,请求操作系统分配预留硬件线程。操作系统通过查看各硬件线程的可运行队列,发现预留硬件线程3此时空闲。
[0113](4)、操作系统将预留硬件线程3分配给应用程序,创建空白线程数据结构,并将栈指针装在到预留硬件线程3的栈指针寄存器。硬件线程3成为当前应用程序的预留硬件线程,预留硬件线程3只能运行当前应用程序直接装载的短任务。且预留硬件线程3不再具有可执行队列,操作系统不能将线程调度到预留硬件线程3上运行。
[0114](5)、当前应用程序已经拥有了占用预留硬件线程的条件。短任务4和短任务5直接将代码及数据等指针装载到预留硬件线程3,运行结束后直接将结果返回给应用程序。
[0115](6)、短任务6采用与短任务4和短任务5相同的方式在预留硬件线程3上运行,但是在运行过程中产生了异常。则操作系统将此时的预留硬件线程3的运行时状态恢复到空白线程数据结构中,并交由操作系统调度运行。短任务6成为线程6并被调度到普通硬件线程2的可执行队列中,等待运行。操作系统清空预留硬件线程3的各寄存器状态。
[0116](7)、短任务7采用与短任务4和短任务5相同的方式在预留硬件线程3上运行。
[0117]应用程序最终会由于短任务规模减小,运行中异常次数过多,程序运行结束等原因释放预留硬件线程3。
[0118]图5B为短任务8_10的处理方法流程图,如图5B所不,具体包括:
[0119](8 )、短任务8、短任务9和短任务10仍旧采用与短任务4及短任务5相同的方式,直接将代码及数据等指针装载到预留硬件线程3中运行。此步骤与第(7)步相同。
[0120](9)、当应用程序的计数器所记录的单位时间内的短任务数量低于阈值时,证明应用程序在一段时间内没有短任务出现或规模很小。此时,应用程序的主线程主动向操作系统申请释放预留硬件线程3。
[0121](10)、当操作系统的计数器所记录的预留硬件线程3的连续异常次数超过阈值时,证明当前应用程序的短任务不适合直接装载到硬件线程上运行,采取传统方式性能更高。此时,操作系统主动回收预留硬件线程3。
[0122](11)、操作系统释放预留硬件线程3时,首先释放空白的线程数据结构和栈结构,其后解除应用程序对预留硬件线程3的占用。释放成功后,操作系统将告知应用程序。
[0123](12)、应用程序已经不具有使用预留硬件线程的条件,只能采用传统方式运行短任务。此时,整个过程结束,回到第(I)步循环执行。
[0124]由上述实施例可以看出,本发明通过将应用程序中待执行的短任务直接装载在所述预留硬件线程上执行,在大规模短任务系统环境中,减少操作系统耗费大量资源用于线程的创建和释放过程,提高了系统处理效率。
[0125]图6为本发明短任务处理装置实施例一的结构示意图,该装置通常集成在操作系统(如Linux)中。如图6所示,本实施例的装置可以包括:设置模块61、分配模块62和执行模块63,其中,设置模块61,用于根据接收应用程序发送的请求设置预留硬件线程的申请消息,将普通硬件线程设置成预留硬件线程,所述预留硬件线程只用于执行短任务;分配模块62,用于所述应用程序运行时,将所述预留硬件线程分配给所述应用程序;执行模块63,用于将所述应用程序下发的待执行的短任务直接装载在所述预留硬件线程上执行。
[0126]本实施例的装置,可以用于执行本发明所提供的短任务处理方法实施例一的技术方案,具备相应于各步骤的功能模块,其实现原理和技术效果类似,此处不再赘述。
[0127]图7为本发明短任务处理装置实施例二的结构示意图,如图7所示,本实施例的装置在图6所示装置结构的基础上,进一步地,还可以包括:创建模块71,用于在所述分配模块将所述预留硬件线程分配给所述应用程序之后,创建空白的线程数据结构;
[0128]恢复模块72,用于所述执行模块将所述应用程序中待执行的短任务直接装载在所述预留硬件线程上执行产生异常时,将执行中的短任务的运行时状态恢复到所述空白的线程数据结构中以使所述短任务参与正常的线程调度执行。
[0129]第一释放模块73,用于若所述执行模块将所述应用程序中待执行的短任务直接装载在所述预留硬件线程上正常执行完毕后,则释放所述空白的线程数据结构。
[0130]判断模块74,用于所述分配模块将所述预留硬件线程分配给所述应用程序之前,判断是否存在空闲的所述预留硬件线程,若不存在,则向所述应用程序发送申请失败的消息以使所述应用程序创建正常的线程调度执行。
[0131]所述执行模块63,具体用于:若待执行的短任务数目超过所述应用程序所占有的预留硬件线程的处理能力时,则向所述应用程序发送提示信息。
[0132]还包括:第二释放模块75,用于在所述应用程序执行完毕之后,释放所述预留硬件线程以使所述预留硬件线程成为普通硬件线程。
[0133]本实施例的装置,可以用于执行图2或图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0134]图8为本发明短任务处理装置实施例三的结构示意图,该装置通常集成在应用程序中。如图8所示,本实施例的装置可以包括:申请模块81和下发任务模块82,其中,申请模块81,用于向操作系统发送请求设置预留硬件线程的申请消息;下发任务模块82,用于向所述操作系统下发待执行的短任务,以使所述操作系统将所述待执行的短任务直接装载在所述预留硬件线程上执行。
[0135]本实施例的装置,可以用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0136]在上述实施例中,进一步地,所述申请模块81,可以具体用于:在初始化时,向操作系统发送请求设置预留硬件线程的申请消息;或者,当短任务的数目超过预设的阈值时,向操作系统发送请求设置预留硬件线程的申请消
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1