基于单进程的多任务切换执行方法、系统及处理器的制造方法
【技术领域】
[0001]本发明属于计算机技术领域,涉及一种任务执行方法,特别是涉及一种基于单进程的多任务切换执行方法、系统及处理器。
【背景技术】
[0002]进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。现有技术实现的多任务是通过在进程中开几个线程,每个线程对应一个任务,最终实现多任务的执行。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
[0003]现有技术的缺点是:对于多个任务开多个线程是很浪费系统资源的,开多个线程就要实现对共享资源管理同步机制,因为多个线程是共享一个进程中的所有资源的,这种同步机制实现起来复杂而且花费的资源较多,而且线程之间的切换开销也比较大。
【发明内容】
[0004]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于单进程的多任务切换执行方法、系统及处理器,用于解决现有技术执行多个任务需要开多个线程浪费系统资源的问题。
[0005]为实现上述目的及其他相关目的,本发明提供一种基于单进程的多任务切换执行方法,所述基于单进程的多任务切换执行方法包括:设置任务等待队列集合,所述任务等待队列集合包括至少I个任务等待队列,每个任务等待队列对应一种任务类型;设置任务执行队列集合,所述任务执行队列集合包括至少2个优先级列表;每个优先级列表包含任务执行单元;主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当所述任务执行队列集合中不存在任务执行单元时,主进程从所述任务等待队列集合中获取任务,并将获取的任务添加到对应级别的优先级列表中继续执行。
[0006]可选地,所述任务等待队列集合包括事件任务等待队列、定时器任务等待队列、网络读任务等待队列、或/和网络写任务等待队列。
[0007]可选地,所述主进程从所述任务等待队列集合中获取任务的实现过程包括:从所述事件任务等待队列中按先后顺序获取任务添加到对应级别的优先级列表中;或/和轮询所述定时器任务等待队列,获取已超时的任务添加到对应级别的优先级列表中;当所述事件任务等待队列和所述定时器任务等待队列均有符合要求的任务添加时,select函数为非阻塞函数,返回值为O。
[0008]可选地,所述主进程从所述任务等待队列集合中获取任务的实现过程还包括:当所述事件任务等待队列和所述定时器任务等待队列均没有符合要求的任务添加时,轮询所述定时器任务等待队列,获取最先要超时的时间,将所述最先要超时的时间配置到select函数的超时字段中,此时所述主进程被阻塞,让出CPU ;若在所述最先要超时的时间内,有网络I/O 口可读或可写,那么select函数返回值大于O,所述网络读任务等待队列和网络写任务等待队列中与所述可读或可写的网络I/O 口对应的任务添加到对应级别的优先级列表中;若在所述最先要超时的时间内,没有网络I/O 口可读或可写,那么select函数返回值为O。
[0009]可选地,当所述select函数返回值为O时,所述任务执行队列集合中存在任务执行单元,所述主进程开始新一轮的按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作。
[0010]可选地,所述任务执行队列集合包括高优先级列表、中优先级列表、和低优先级列表。
[0011]本发明还提供一种基于单进程的多任务切换执行系统,所述基于单进程的多任务切换执行系统包括:等待任务设置模块,设置任务等待队列集合,所述任务等待队列集合包括至少I个任务等待队列,每个任务等待队列对应一种任务类型;执行任务设置模块,设置任务执行队列集合,所述任务执行队列集合包括至少2个优先级列表;每个优先级列表包含任务执行单元;任务执行模块,与所述任务等待队列集合和所述任务执行队列集合通信相连,开启主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当所述任务执行队列集合中不存在任务执行单元时,主进程从所述任务等待队列集合中获取任务,并将获取的任务添加到对应级别的优先级列表中继续执行。
[0012]可选地,所述任务等待队列集合包括事件任务等待队列、定时器任务等待队列、网络读任务等待队列、或/和网络写任务等待队列。
[0013]可选地,所述任务执行模块包括:第一选取添加单元,从所述事件任务等待队列中按先后顺序获取任务添加到对应级别的优先级列表中;或/和轮询所述定时器任务等待队列,获取已超时的任务添加到对应级别的优先级列表中;当所述事件任务等待队列和所述定时器任务等待队列均有符合要求的任务添加时,select函数为非阻塞函数,返回值为O ;第二选取添加单元,与所述第一选取添加单元相连,当所述事件任务等待队列和所述定时器任务等待队列均没有符合要求的任务添加时,轮询所述定时器任务等待队列,获取最先要超时的时间,将所述最先要超时的时间配置到select函数的超时字段中,此时所述主进程被阻塞,让出CPU ;若在所述最先要超时的时间内,有网络I/O 口可读或可写,那么select函数返回值大于0,所述网络读任务等待队列和网络写任务等待队列中与所述可读或可写的网络I/O 口对应的任务添加到对应级别的优先级列表中;若在所述最先要超时的时间内,没有网络I/O 口可读或可写,那么select函数返回值为O。
[0014]本发明还提供一种处理器,所述处理器运行有所述基于单进程的多任务切换执行系统。
[0015]如上所述,本发明的基于单进程的多任务切换执行方法、系统及处理器,具有以下有益效果:
[0016]本发明利用单个进程实现了多任务之间的无缝切换和多任务执行的管理,无需开启多个线程,也省略了多线程所需的共享资源管理同步机制,节省了大量的资源。
【附图说明】
[0017]图1显示为本发明实施例所述的基于单进程的多任务切换执行方法的一种实现流程示意图。
[0018]图2显示为本发明实施例所述的基于单进程的多任务切换执行方法的步骤S103的一种实现流程示意图。
[0019]图3显示为本发明实施例所述的基于单进程的多任务切换执行方法的一种示例性的结构体示意图。
[0020]图4显示为本发明实施例所述的基于单进程的多任务切换执行系统的一种实现结构示意图。
[0021]图5显示为本发明实施例所述的处理器的一种实现结构示意图。
[0022]元件标号说明
[0023]400基于单进程的多任务切换执行系统
[0024]410等待任务设置模块
[0025]420执行任务设置模块
[0026]430任务执行模块
[0027]431第一选取添加单元
[0028]432第二选取添加单元
[0029]500处理器
[0030]SlOl ?S103 步骤
[0031]S201 ?S207 步骤
【具体实施方式】
[0032]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0033]需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0034]请参阅图1,本发明提供一种基于单进程的多任务切换执行方法,所述基于单进程的多任务切换执行方法包括:
[0035]S101,设置任务等待队列集合,所述任务等待队列集合包括至少I个任务等待队列,每个任务等待队列对应一种任务类型。在实际应用中,任务类型有很多种,本实施例仅列举其中几种为例进行具体说明,如:事件类任务、定时器类任务、网络I/o读类任务、网络I/o写类任务等类型的任务。对应上述列举的几种任务类型,所述任务等待队列集合即可包括事件任务等待队列、定时器任务等待队列、网络读任务等待队列、或/和网络写任务等待队列等。
[0036]S102,设置任务执行队列集合,所述任务执行队列集合包括至少2个优先级列表;每个优先级列表包含任务执行单元。其中,优先级列表的个数以及级别可以根据实际需要具体设置,例如:设置3个优先级列表,分别为高优先级列表、中优先级列表和低优先级列表。若优先级列表中存在任务执行单元,则说明该优先级列表中有任务需要执行;若优先级列表中当前不存在任务执行单元,则说明该优先级列表中当前没有任务需要执行。
[0037]S103,主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当所述任务执行队列集合