一种进程调度方法和装置与流程

文档序号:17048733发布日期:2019-03-05 19:49阅读:129来源:国知局
本发明涉及通信的
技术领域
:,特别是涉及一种进程调度方法和一种进程调度装置。
背景技术
::现有技术中,嵌入式开发从底层操作系统平台选型角度有以下几种方案:基于开源操作系统,例如linux,基于商业操作系统,例如vxworks,自主研发操作系统,无操作系统的baremetal(电脑裸机,指没有配置操作系统和其他软件的电子计算机)模式。基于开源linux操作系统方案非常普遍,但是基于linux操作系统的软件一般比较复杂,需要对linux下的任务调度和进程/线程模型有深入的认识,对开发人员有较高的要求,并且linux操作系统下多任务的切换和抢占系统开销较大,占用较多处理器时间,对计算性能敏感的应用来说希望将cpu(中央处理器,centralprocessingunit)时间最大化应用于计算处理而不是系统开销,另外基于linux的系统在实时性方面存在不足。基于商业操作系统在性能方面虽然满足需求,但是要面临购买成本问题。自主研发操作系统开发技术难度大,对不同处理器架构的长期演进支持非常困难,一般厂商不具备自主研发能力,长期来说不可持续。没有操作系统的baremetal模式软件比较简单,对开发人员要求较低,系统开销低,整体处理性能好,并且baremetal模式的软件通过仔细的时序设计能良好满足实时应用的要求。baremetal软件存在的问题是在不同的硬件平台和cpu上进行bearmetal软件移植时底层软件移植工作量较大,需要熟悉不同厂家的芯片,并且仍然需要开发大量的底层基础软件来支撑应用软件的功能需求,工作量大且存在稳定性风险。技术实现要素:本发明实施例提供一种进程调度方法和相应的一种进程调度装置,以解决linux操作系统下多任务的切换和抢占系统开销较大及baremetal软件在不同的硬件平台和cpu上进行软件移植时的移植工作量较大的上述问题。为了解决上述问题,本发明实施例公开了一种进程调度方法,应用于linux系统,所述linux系统包括二次调度组件,所述linux系统上安装有应用程序,所述方法包括:接收用户针对所述应用程序的输入指令;响应所述输入指令,创建所述应用程序对应的进程;其中,所述进程包括多个线程;判断所述线程的数量是否超过预设阈值;当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程。优选地,所述linux系统还包括核心调度组件,所述方法还包括:当所述线程的数量未超过预设阈值时,采用所述核心调度组件调度所述进程。优选地,所述方法还包括:将所述二次调度组件设置在一个或多个专用cpu中。优选地,所述线程具有不同的优先级;所述当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程的步骤包括:当所述线程的数量超过预设阈值时,采用所述二次调度组件将所述不同的优先级的线程从高优先级至低优先级进行排序。优选地,所述线程包括中断处理线程,所述当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程的步骤包括:当所述线程的数量超过预设阈值时,判断所述线程中是否包含中断处理线程;若是,则采用所述二次调度组件调度所述中断处理线程。优选地,所述方法包括:所述多个线程通过消息队列进行通信。本发明实施例还公开了一种进程调度装置,应用于linux系统,所述linux系统包括二次调度组件,所述linux系统上安装有应用程序,所述装置包括:指令接收模块,用于接收用户针对所述应用程序的输入指令;进程创建模块,用于响应所述输入指令,创建所述应用程序对应的进程;其中,所述进程包括多个线程;判断模块,用于判断所述线程的数量是否超过预设阈值;第一调度模块,用于当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程。优选地,所述linux系统还包括核心调度组件,所述装置还包括:第二调度模块,用于当所述线程的数量未超过预设阈值时,采用所述核心调度组件调度所述进程。优选地,所述装置还包括:设置模块,用于将所述二次调度组件设置在一个或多个专用cpu中。优选地,所述线程具有不同的优先级;所述第一调度模块包括:第一排序子模块,用于当所述线程的数量超过预设阈值时,采用所述二次调度组件将所述不同的优先级的线程从高优先级至低优先级进行排序。优选地,所述线程包括中断处理线程,所述第一调度模块包括:线程判断子模块,用于当所述线程的数量超过预设阈值时,判断所述线程中是否包含中断处理线程;第一调度子模块,用于当所述线程中包含中断处理线程,则采用所述二次调度组件调度所述中断处理线程。优选地,所述装置包括:通信模块,用于所述多个线程通过消息队列进行通信。本发明实施例包括以下优点:本发明实施例中,接收用户针对所述应用程序的输入指令,响应所述输入指令,创建所述应用程序对应的进程,其中,所述进程包括多个线程;判断所述线程的数量是否超过预设阈值,当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程,该二次调度组件以应用程序的方式在linux系统上运行,为该二次调度组件设置一个或多个独占的cpu,保证二次调度组件独占一个或多个cpu,降低任务切换开销,从而最大化提升系统系能,一方面利用了linux系统对底层硬件架构的良好支撑,因此可以与硬件的架构无关,可移植性非常好,避免了全新开发操作系统的巨大工作量。另一方面简易高效的包含二次调度组件的系统具有优异的性能,可以最大化提升系统效率。附图说明图1是本发明实施例的一种进程调度方法实施例一的步骤流程图;图2是本发明实施例的一种进程调度方法实施例二的步骤流程图;图3是本发明实施例的一种进程调度装置实施例的结构框图。具体实施方式为使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。参照图1,示出了本发明实施例的一种进程调度方法实施例一的步骤流程图,应用于linux系统,所述linux系统包括二次调度组件,所述linux系统上安装有应用程序,具体可以包括如下步骤:步骤101,接收用户针对所述应用程序的输入指令;本发明实施例中,linux系统是一个基于posix(可移植操作系统接口,portableoperatingsysteminterfaceofunix)和unix(尤尼斯操作系统)的多用户、多任务、支持多线程和多cpu的操作系统。其能运行主要的unix工具软件、应用程序和网络协议。linux继承了unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。本发明实施例中,该linux系统具有核心调度组件及二次调度组件,该核心调度组件可以包括由两个调度器组成:主调度器,周期性调度器;并且每个调度器包括两个内容:调度框架及调度器类,该主调度器主要负责将cpu的使用权从一个进程切换至另一个进程,举例而言,进程包括第一进程、第二进程及第三进程;该第一进程、第二进程及第三进程按照各自的执行时间执行,当第一进程已经在cpu上执行完后,主调度器将cpu使用权的转换至第二进程,完成进程间的切换;从第二进程转换至第三进程的过程与上述的类似。而周期性调度器主要负责更新当前进程的统计量,如更新当前进程中就绪消息队列的实际时钟时间,或更新就绪消息队列中权重数组的权利值,或调用cpu上正在执行的当前进程所属调度类的task_tick接口,更新调度类相关的统计信息,并检查是否需要重新调度,主调度器与周期性调度器共同组成核心调度组件,两者根据进程的优先级分配cpu时间。本发明实施例中,所述核心调度组件及二次调度组件采用调度器类针对进程实现不同的调度策略,需要说明的是,二次调度组件以应用程序的形式安装在linux系统上,设置该二次调度组件与一个或多个专用cpu的亲和性,即为该二次调度组件设置一个或多个独占的cpu,保证二次调度组件独占cpu降低任务切换开销从而最大化提升系统系能。当该二次调度组件运行时,可以单独为其创建一个特定进程,使用该特定进程承载该二次调度组件,该linux系统还可以安装有多个应用程序,该浏览器等,本发明实施例对此不作限制,linux系统可以接收用户针对所述应用程序的输入指令。步骤102,响应所述输入指令,创建所述应用程序对应的进程;其中,所述进程包括多个线程;进一步地,所述linux系统响应所述输入指令,创建所述应用程序对应的进程,需要说明的是,所述进程的数量可以是一个或多个,与应用程序的实际运行情况有关,每个进程中可以包括一个或多个线程,本发明实施例对此不作限制。步骤103,判断所述线程的数量是否超过预设阈值;实际应用到本发明实施例中,可以判断该线程的数量是否超过预设阈值;所述线程的数量可以为所有进程的线程总量,需要说明的是,该预设阈值可以是本领域技术人员根据实际情况而设定的任何数值,本发明实施例对此不作具体的限制。步骤104,当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程。具体到本发明实施例中,判断该线程的数量超过预设阈值后,采用二次调度组件调度所述进程,具体地,该二次调度组件根据进程的优先级或者判断是否有中断处理线程的方式进行调度,还可以采用其他的调度策略进行调度,本发明实施例对此不作限制,另一方面,在线程的数量未超过预设阈值时,则继续采用linux系统原有的核心调度组件调度所述进程。本发明实施例中,当进程中的线程数量超过预设阈值时,则不调用linux系统中的核心调度组件,因为其抢占系统开销比较大,占用较长的cpu时间,不利于计算性能的提高,故在进程中的线程数量超过预设阈值时调用该二次调度组件,即该二次调度组件可以应用于业务紧密型的进程调度,提高计算机的响应速度,而当进程中的线程数量未超过预设阈值时,则可以调用linux系统中的核心调度组件,即该核心调度组件可以应用于非业务紧密型的进程调度,如此,在不同的情况下调用不同调度组件,可以达到节约系统开销的技术效果。本发明实施例中,接收用户针对所述应用程序的输入指令,响应所述输入指令,创建所述应用程序对应的进程,其中,所述进程包括多个线程;判断所述线程的数量是否超过预设阈值,当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程,该二次调度组件以应用程序的方式在linux系统上运行,为该二次调度组件设置一个或多个独占的cpu,保证二次调度组件独占cpu,降低任务切换开销,从而最大化提升系统系能,一方面利用了linux系统对底层硬件架构的良好支撑,因此与硬件的架构无关,可移植性非常好,避免了自行研发操作系统的巨大工作量。另一方面简易高效的包含二次调度组件的系统具有优异的性能,可以最大化提升系统效率。参照图2,示出了本发明实施例的一种进程调度方法实施例二的步骤流程图,应用于linux系统,所述linux系统包括二次调度组件,所述linux系统上安装有应用程序,具体可以包括如下步骤:步骤201,接收用户针对所述应用程序的输入指令;本发明实施例中,linux系统接收用户针对所述应用程序的输入指令,该输入指令可以包括用户的点击指令或命令行指令,本发明实施例对此不作限制。步骤202,响应所述输入指令,创建所述应用程序对应的进程;其中,所述进程包括多个线程;具体而言,响应所述输入指令,linux系统创建所述应用程序对应的进程,该进程包括一个或多个线程,本发明实施例中,所述方法包括:所述多个线程通过消息队列进行通信,以及,所述linux系统还包括核心调度组件及二次调度组件。步骤203,判断所述线程的数量是否超过预设阈值;本发明实施例中,可以判断该线程的数量是否超过预设阈值;,该预设阈值可以是本领域技术人员根据实际情况而设定的任何数值,本发明实施例对此不作具体的限制。步骤204,当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程;具体地,当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程,所述线程具有不同的优先级;所述当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程的步骤包括:当所述线程的数量超过预设阈值时,采用所述二次调度组件将所述不同的优先级的线程从高优先级至低优先级进行排序。实际而言,所述线程包括中断处理线程,该中断处理线程由中断事件生成,所述当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程的步骤包括:当所述线程的数量超过预设阈值时,判断所述线程中是否包含中断处理线程;若是,则采用所述二次调度组件调度所述中断处理线程。因此,由于linux系统中时序是严格设计的,中断事件只会在预定的时间出现,因此在每个调度周期扫描中断处理线程对应的消息队列和不同优先级的线程对应的消息队列,能很好的配合而不影响系统效率。本发明实施例的一种优先实施例中,所述方法还包括:将所述二次调度组件设置在一个或多个专用cpu中。步骤205,当所述线程的数量未超过预设阈值时,采用所述核心调度组件调度所述进程。实际应用到本发明实施例中,当所述线程的数量未超过预设阈值时,采用所述核心调度组件调度所述进程,所述核心调度组件同样可以采用不同的调度策略调度该进程,当调度及执行完毕后,可以输出该进程执行后的结果。具体地,当进程中的线程数量超过预设阈值时,则不调用linux系统中的核心调度组件,因为不利于计算性能的提高,故在进程中的线程数量超过预设阈值时调用该二次调度组件,即该二次调度组件可以应用于业务紧密型的进程调度,而当进程中的线程数量未超过预设阈值时,则可以调用linux系统中的核心调度组件,即该核心调度组件可以应用于非业务紧密型的进程调度,如此,在不同的情况下调用不同调度组件,可以达到节约系统开销的技术效果。本发明实施例中,接收用户针对所述应用程序的输入指令,响应所述输入指令,创建所述应用程序对应的进程,其中,所述进程包括多个线程;判断所述线程的数量是否超过预设阈值,当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程,当所述线程的数量未超过预设阈值时,采用所述核心调度组件调度所述进程;本发明实施例中,根据线程的数量进行区分采用不同的调度组件,linux系统对底层硬件架构的良好支撑,因此可以和硬件架构无关,可移植性非常好,并且也避免了自行研发操作系统的巨大工作量。简易高效的二次调度组件具有优异的性能,可以最大化提升系统效率。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。参照图3,示出了本发明实施例的一种进程调度装置实施例的结构框图,应用于linux系统,所述linux系统包括二次调度组件,所述linux系统上安装有应用程序,具体可以包括如下模块:指令接收模块301,用于接收用户针对所述应用程序的输入指令;进程创建模块302,用于响应所述输入指令,创建所述应用程序对应的进程;其中,所述进程包括多个线程;判断模块303,用于判断所述线程的数量是否超过预设阈值;第一调度模块304,用于当所述线程的数量超过预设阈值时,采用所述二次调度组件调度所述进程。优选地,所述linux系统还包括核心调度组件,所述装置还包括:第二调度模块,用于当所述线程的数量未超过预设阈值时,采用所述核心调度组件调度所述进程。优选地,所述装置还包括:设置模块,用于将所述二次调度组件设置在一个或多个专用cpu中。优选地,所述线程具有不同的优先级;所述第一调度模块包括:第一排序子模块,用于当所述线程的数量超过预设阈值时,采用所述二次调度组件将所述不同的优先级的线程从高优先级至低优先级进行排序。优选地,所述线程包括中断处理线程,所述第一调度模块包括:线程判断子模块,用于当所述线程的数量超过预设阈值时,判断所述线程中是否包含中断处理线程;第一调度子模块,用于当所述线程中包含中断处理线程,则采用所述二次调度组件调度所述中断处理线程。优选地,所述装置包括:通信模块,用于所述多个线程通过消息队列进行通信。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。以上对本发明所提供的一种进程调度方法和一种进程调度装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1