[go: up one dir, main page]

CN105204933A - 基于单进程的多任务切换执行方法、系统及处理器 - Google Patents

基于单进程的多任务切换执行方法、系统及处理器 Download PDF

Info

Publication number
CN105204933A
CN105204933A CN201510598987.6A CN201510598987A CN105204933A CN 105204933 A CN105204933 A CN 105204933A CN 201510598987 A CN201510598987 A CN 201510598987A CN 105204933 A CN105204933 A CN 105204933A
Authority
CN
China
Prior art keywords
task
waiting queue
execution
queue
priority list
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.)
Pending
Application number
CN201510598987.6A
Other languages
English (en)
Inventor
庞骏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Feixun Data Communication Technology Co Ltd
Original Assignee
Shanghai Feixun Data Communication Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201510598987.6A priority Critical patent/CN105204933A/zh
Publication of CN105204933A publication Critical patent/CN105204933A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种基于单进程的多任务切换执行方法、系统及处理器,该方法包括:设置任务等待队列集合,任务等待队列集合包括至少1个任务等待队列;设置任务执行队列集合,任务执行队列集合包括至少2个优先级列表;主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当任务执行队列集合中不存在任务执行单元时,主进程从任务等待队列集合中获取任务,并将获取的任务添加到对应级别的优先级列表中继续执行。本发明利用单个进程实现了多任务之间的无缝切换和多任务执行的管理,无需开启多个线程,也省略了多线程所需的共享资源管理同步机制,节省了大量的资源。

Description

基于单进程的多任务切换执行方法、系统及处理器
技术领域
本发明属于计算机技术领域,涉及一种任务执行方法,特别是涉及一种基于单进程的多任务切换执行方法、系统及处理器。
背景技术
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。现有技术实现的多任务是通过在进程中开几个线程,每个线程对应一个任务,最终实现多任务的执行。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
现有技术的缺点是:对于多个任务开多个线程是很浪费系统资源的,开多个线程就要实现对共享资源管理同步机制,因为多个线程是共享一个进程中的所有资源的,这种同步机制实现起来复杂而且花费的资源较多,而且线程之间的切换开销也比较大。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于单进程的多任务切换执行方法、系统及处理器,用于解决现有技术执行多个任务需要开多个线程浪费系统资源的问题。
为实现上述目的及其他相关目的,本发明提供一种基于单进程的多任务切换执行方法,所述基于单进程的多任务切换执行方法包括:设置任务等待队列集合,所述任务等待队列集合包括至少1个任务等待队列,每个任务等待队列对应一种任务类型;设置任务执行队列集合,所述任务执行队列集合包括至少2个优先级列表;每个优先级列表包含任务执行单元;主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当所述任务执行队列集合中不存在任务执行单元时,主进程从所述任务等待队列集合中获取任务,并将获取的任务添加到对应级别的优先级列表中继续执行。
可选地,所述任务等待队列集合包括事件任务等待队列、定时器任务等待队列、网络读任务等待队列、或/和网络写任务等待队列。
可选地,所述主进程从所述任务等待队列集合中获取任务的实现过程包括:从所述事件任务等待队列中按先后顺序获取任务添加到对应级别的优先级列表中;或/和轮询所述定时器任务等待队列,获取已超时的任务添加到对应级别的优先级列表中;当所述事件任务等待队列和所述定时器任务等待队列均有符合要求的任务添加时,select函数为非阻塞函数,返回值为0。
可选地,所述主进程从所述任务等待队列集合中获取任务的实现过程还包括:当所述事件任务等待队列和所述定时器任务等待队列均没有符合要求的任务添加时,轮询所述定时器任务等待队列,获取最先要超时的时间,将所述最先要超时的时间配置到select函数的超时字段中,此时所述主进程被阻塞,让出CPU;若在所述最先要超时的时间内,有网络I/O口可读或可写,那么select函数返回值大于0,所述网络读任务等待队列和网络写任务等待队列中与所述可读或可写的网络I/O口对应的任务添加到对应级别的优先级列表中;若在所述最先要超时的时间内,没有网络I/O口可读或可写,那么select函数返回值为0。
可选地,当所述select函数返回值为0时,所述任务执行队列集合中存在任务执行单元,所述主进程开始新一轮的按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作。
可选地,所述任务执行队列集合包括高优先级列表、中优先级列表、和低优先级列表。
本发明还提供一种基于单进程的多任务切换执行系统,所述基于单进程的多任务切换执行系统包括:等待任务设置模块,设置任务等待队列集合,所述任务等待队列集合包括至少1个任务等待队列,每个任务等待队列对应一种任务类型;执行任务设置模块,设置任务执行队列集合,所述任务执行队列集合包括至少2个优先级列表;每个优先级列表包含任务执行单元;任务执行模块,与所述任务等待队列集合和所述任务执行队列集合通信相连,开启主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当所述任务执行队列集合中不存在任务执行单元时,主进程从所述任务等待队列集合中获取任务,并将获取的任务添加到对应级别的优先级列表中继续执行。
可选地,所述任务等待队列集合包括事件任务等待队列、定时器任务等待队列、网络读任务等待队列、或/和网络写任务等待队列。
可选地,所述任务执行模块包括:第一选取添加单元,从所述事件任务等待队列中按先后顺序获取任务添加到对应级别的优先级列表中;或/和轮询所述定时器任务等待队列,获取已超时的任务添加到对应级别的优先级列表中;当所述事件任务等待队列和所述定时器任务等待队列均有符合要求的任务添加时,select函数为非阻塞函数,返回值为0;第二选取添加单元,与所述第一选取添加单元相连,当所述事件任务等待队列和所述定时器任务等待队列均没有符合要求的任务添加时,轮询所述定时器任务等待队列,获取最先要超时的时间,将所述最先要超时的时间配置到select函数的超时字段中,此时所述主进程被阻塞,让出CPU;若在所述最先要超时的时间内,有网络I/O口可读或可写,那么select函数返回值大于0,所述网络读任务等待队列和网络写任务等待队列中与所述可读或可写的网络I/O口对应的任务添加到对应级别的优先级列表中;若在所述最先要超时的时间内,没有网络I/O口可读或可写,那么select函数返回值为0。
本发明还提供一种处理器,所述处理器运行有所述基于单进程的多任务切换执行系统。
如上所述,本发明的基于单进程的多任务切换执行方法、系统及处理器,具有以下有益效果:
本发明利用单个进程实现了多任务之间的无缝切换和多任务执行的管理,无需开启多个线程,也省略了多线程所需的共享资源管理同步机制,节省了大量的资源。
附图说明
图1显示为本发明实施例所述的基于单进程的多任务切换执行方法的一种实现流程示意图。
图2显示为本发明实施例所述的基于单进程的多任务切换执行方法的步骤S103的一种实现流程示意图。
图3显示为本发明实施例所述的基于单进程的多任务切换执行方法的一种示例性的结构体示意图。
图4显示为本发明实施例所述的基于单进程的多任务切换执行系统的一种实现结构示意图。
图5显示为本发明实施例所述的处理器的一种实现结构示意图。
元件标号说明
400基于单进程的多任务切换执行系统
410等待任务设置模块
420执行任务设置模块
430任务执行模块
431第一选取添加单元
432第二选取添加单元
500处理器
S101~S103步骤
S201~S207步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
请参阅图1,本发明提供一种基于单进程的多任务切换执行方法,所述基于单进程的多任务切换执行方法包括:
S101,设置任务等待队列集合,所述任务等待队列集合包括至少1个任务等待队列,每个任务等待队列对应一种任务类型。在实际应用中,任务类型有很多种,本实施例仅列举其中几种为例进行具体说明,如:事件类任务、定时器类任务、网络I/O读类任务、网络I/O写类任务等类型的任务。对应上述列举的几种任务类型,所述任务等待队列集合即可包括事件任务等待队列、定时器任务等待队列、网络读任务等待队列、或/和网络写任务等待队列等。
S102,设置任务执行队列集合,所述任务执行队列集合包括至少2个优先级列表;每个优先级列表包含任务执行单元。其中,优先级列表的个数以及级别可以根据实际需要具体设置,例如:设置3个优先级列表,分别为高优先级列表、中优先级列表和低优先级列表。若优先级列表中存在任务执行单元,则说明该优先级列表中有任务需要执行;若优先级列表中当前不存在任务执行单元,则说明该优先级列表中当前没有任务需要执行。
S103,主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当所述任务执行队列集合中不存在任务执行单元时,主进程从所述任务等待队列集合中获取任务,并将获取的任务添加到对应级别的优先级列表中继续执行。例如:当任务执行队列集合中设置有高优先级列表、中优先级列表和低优先级列表三个优先级列表时,主进程按优先级顺序先获取高优先级列表中的任务执行单元进行执行,当高优先级列表中的任务都执行完后,再获取中优先级列表中的任务执行单元进行执行,当中优先级列表中的任务都执行完后,最后获取低优先级列表中的任务执行单元进行执行。对于每个优先级列表中的任务执行单元,主进程可以按任务执行单元的前后顺序依次执行,也可以根据设置的各种规则来选取任务执行单元进行执行。每各任务执行单元指向一个真正的执行动作,对于每一个要执行的任务,本发明根据该任务的类型将其加入到对应的等待队列中,如果一直要执行某个任务,那么在执行完该任务的动作后,会继续把该任务加入到等待队列,等待下一次切换到该任务,然后继续执行该任务。本发明中,所述主进程会在一个循环体里面一直执行“获得任务”,然后“执行任务”的动作,最后返回到循环体里面继续执行“获得任务”,然后“执行任务”的动作。
当所述任务执行队列集合中不存在任务执行单元时,主进程需要从所述任务等待队列集合中获取任务来执行,具体参见图2所示,所述主进程从所述任务等待队列集合中获取任务的一种实现过程包括:
S201,从所述事件任务等待队列中按先后顺序获取任务添加到对应级别的优先级列表(如高优先级列表)中。
S202,轮询所述定时器任务等待队列,获取已超时的任务添加到对应级别的优先级列表中。所述定时器任务等待队列是按照超时的时间从小到大排序的,每次取任务的时候从第一个开始取,加快取任务的时间。
S203,当所述事件任务等待队列或所述定时器任务等待队列有符合要求的任务添加时,select函数为非阻塞函数,返回值为0。
S204,当所述事件任务等待队列或所述定时器任务等待队列均没有符合要求的任务添加时,轮询所述定时器任务等待队列,获取最先要超时的时间,将所述最先要超时的时间配置到select函数的超时字段中,此时所述主进程被阻塞,让出CPU。
S205,若在所述最先要超时的时间内,有网络I/O口可读或可写,那么select函数返回值大于0,所述网络读任务等待队列和网络写任务等待队列中与所述可读或可写的网络I/O口对应的任务添加到对应级别的优先级列表(如中优先级任务列表)中。即,如果网络I/O可读或者可写,那么select函数返回值大于0,将可读/写套接口对应的网络I/O读/写任务等待队列里的任务加入到中等优先级任务执行队列中。由于网络I/O是通过select函数来实现的,在本发明中select以master结构体的max_fd,readfd,writefd为输入参数,select函数会从第一个套接口开始轮询到max_fd套接口,如果有某个套接口可读或者可写,那么select就返回可读或者可写的套接口,然后根据套接口和网络I/O读或者写的任务列表中任务上下文中的套接口做对比,如果相等那么执行任务的动作。
S206,若在所述最先要超时的时间内,没有网络I/O口可读或可写,那么select函数返回值为0。如果经过配置到select函数的超时时间后没有网络I/O可读,或者可写,那么select函数返回值是0。
S207,当所述select函数返回值为0时,所述任务执行队列集合中存在任务执行单元,所述主进程开始新一轮的按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作。
图3显示了所述基于单进程的多任务切换执行方法在实现的过程中所使用的一种示例性的主要任务管理的数据结构体、任务链表结构体、任务上下文描述结构体。其中,
所述主要任务管理的数据结构体的一种示例性的伪代码描述如下:
structmaster
{
/*任务执行队列集合*/
structtask_listqueue_high;高优先级执行队列
structtask_lisqueue_middle;中等优先级执行队列
structtask_lisqueue_low;低优先级执行队列
/*任务等待队列集合描述*/
structtask_listimer;定时器等待队列
structtask_lisread;网络I/O读等待队列
structtask_liswrite;网络I/O写等待队列
structtask_lisevent;事件等待队列
structreadfd;一组等待可读性检查的套接口
structwritefd;一组等待可写性检查的套接口
intmax_fd;最大的套接口句柄(用于select函数轮询所有的套接口)
}
所述任务链表结构体的一种示例性伪代码描述如下:
structtask_lis
{
structtaskhead;指向的头任务上下文
structtasktail;指向的尾部的任务上下文
}
所述任务上下文结构体的一种示例性伪代码描述如下:
structtask
{
structtasknext;指向下一个任务上下文
structtaskprev;指向上一个任务上下文
structmastermaster;指向主要任务管理数据结构体
function任务真正执行动作的代码
structtype;任务的类型
structsocket_fd套接口句柄(这个句柄会加入到master结构体的readfd,wirtefd中)
}。
本发明所述的基于单进程的多任务切换执行方法的保护范围不限于本实施例列举的步骤执行顺序,凡是根据本发明的原理所做的现有技术的步骤增减、步骤替换所实现的方案都包括在本发明的保护范围内。
本发明还提供一种基于单进程的多任务切换执行系统,所述基于单进程的多任务切换执行系统可以实现本发明所述的基于单进程的多任务切换执行方法,但本发明所述的基于单进程的多任务切换执行方法的实现装置包括但不限于本实施例列举的基于单进程的多任务切换执行系统的结构,凡是根据本发明的原理所做的现有技术的结构变形和替换,都包括在本发明的保护范围内。
参见图4所示,所述基于单进程的多任务切换执行系统400包括:等待任务设置模块410,执行任务设置模块420,任务执行模块430。
所述等待任务设置模块410设置任务等待队列集合,所述任务等待队列集合包括至少1个任务等待队列,每个任务等待队列对应一种任务类型。在实际应用中,任务类型有很多种,本实施例仅列举其中几种为例进行具体说明,如:事件类任务、定时器类任务、网络I/O读类任务、网络I/O写类任务等类型的任务。对应上述列举的几种任务类型,所述任务等待队列集合即可包括事件任务等待队列、定时器任务等待队列、网络读任务等待队列、或/和网络写任务等待队列等。
所述执行任务设置模块420设置任务执行队列集合,所述任务执行队列集合包括至少2个优先级列表;每个优先级列表包含任务执行单元。其中,优先级列表的个数以及级别可以根据实际需要具体设置,例如:设置3个优先级列表,分别为高优先级列表、中优先级列表和低优先级列表。若优先级列表中存在任务执行单元,则说明该优先级列表中有任务需要执行;若优先级列表中当前不存在任务执行单元,则说明该优先级列表中当前没有任务需要执行。
所述任务执行模块430与所述任务等待队列集合410和所述任务执行队列集合420通信相连,开启主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当所述任务执行队列集合中不存在任务执行单元时,主进程从所述任务等待队列集合中获取任务,并将获取的任务添加到对应级别的优先级列表中继续执行。例如:当任务执行队列集合中设置有高优先级列表、中优先级列表和低优先级列表三个优先级列表时,主进程按优先级顺序先获取高优先级列表中的任务执行单元进行执行,当高优先级列表中的任务都执行完后,再获取中优先级列表中的任务执行单元进行执行,当中优先级列表中的任务都执行完后,最后获取低优先级列表中的任务执行单元进行执行。对于每个优先级列表中的任务执行单元,主进程可以按任务执行单元的前后顺序依次执行,也可以根据设置的各种规则来选取任务执行单元进行执行。每各任务执行单元指向一个真正的执行动作,对于每一个要执行的任务,本发明根据该任务的类型将其加入到对应的等待队列中,如果一直要执行某个任务,那么在执行完该任务的动作后,会继续把该任务加入到等待队列,等待下一次切换到该任务,然后继续执行该任务。本发明中,所述主进程会在一个循环体里面一直执行“获得任务”,然后“执行任务”的动作,最后返回到循环体里面继续执行“获得任务”,然后“执行任务”的动作。
所述任务执行模块430包括:第一选取添加单元431,第二选取添加单元432。当所述任务执行队列集合中存在任务执行单元时,所述第一选取添加单元431工作。当所述任务执行队列集合中不存在任务执行单元时,所述第二选取添加单元432工作,从所述任务等待队列集合中获取任务来执行。
所述第一选取添加单元431从所述事件任务等待队列中按先后顺序获取任务添加到对应级别的优先级列表中;或/和轮询所述定时器任务等待队列,获取已超时的任务添加到对应级别的优先级列表中;所述定时器任务等待队列是按照超时的时间从小到大排序的,每次取任务的时候从第一个开始取,加快取任务的时间。当所述事件任务等待队列和所述定时器任务等待队列均有符合要求的任务添加时,select函数为非阻塞函数,返回值为0。
所述第二选取添加单元432与所述第一选取添加单元431相连,当所述事件任务等待队列或所述定时器任务等待队列均没有符合要求的任务添加时,轮询所述定时器任务等待队列,获取最先要超时的时间,将所述最先要超时的时间配置到select函数的超时字段中,此时所述主进程被阻塞,让出CPU;若在所述最先要超时的时间内,有网络I/O口可读或可写,那么select函数返回值大于0,所述网络读任务等待队列和网络写任务等待队列中与所述可读或可写的网络I/O口对应的任务添加到对应级别的优先级列表中;如果网络I/O可读或者可写,那么select函数返回值大于0,将可读/写套接口对应的网络I/O读/写任务等待队列里的任务加入到中等优先级任务执行队列中。由于网络I/O是通过select函数来实现的,在本发明中select以master结构体的max_fd,readfd,writefd为输入参数,select函数会从第一个套接口开始轮询到max_fd套接口,如果有某个套接口可读或者可写,那么select就返回可读或者可写的套接口,然后根据套接口和网络I/O读或者写的任务列表中任务上下文中的套接口做对比,如果相等那么执行任务的动作。若在所述最先要超时的时间内,没有网络I/O口可读或可写,那么select函数返回值为0。如果经过配置到select函数的超时时间后没有网络I/O可读,或者可写,那么select函数返回值是0。
本发明还提供一种处理器,如图5所示,所述处理器500运行有本发明所述的基于单进程的多任务切换执行系统400。
本发明利用单个进程实现了多任务之间的无缝切换和多任务执行的管理,无需开启多个线程,也省略了多线程所需的共享资源管理同步机制,节省了大量的资源。
综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (10)

1.一种基于单进程的多任务切换执行方法,其特征在于,所述基于单进程的多任务切换执行方法包括:
设置任务等待队列集合,所述任务等待队列集合包括至少1个任务等待队列,每个任务等待队列对应一种任务类型;
设置任务执行队列集合,所述任务执行队列集合包括至少2个优先级列表;每个优先级列表包含任务执行单元;
主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当所述任务执行队列集合中不存在任务执行单元时,主进程从所述任务等待队列集合中获取任务,并将获取的任务添加到对应级别的优先级列表中继续执行。
2.根据权利要求1所述的基于单进程的多任务切换执行方法,其特征在于:所述任务等待队列集合包括事件任务等待队列、定时器任务等待队列、网络读任务等待队列、或/和网络写任务等待队列。
3.根据权利要求2所述的基于单进程的多任务切换执行方法,其特征在于,所述主进程从所述任务等待队列集合中获取任务的一种实现过程包括:
从所述事件任务等待队列中按先后顺序获取任务添加到对应级别的优先级列表中;或/和
轮询所述定时器任务等待队列,获取已超时的任务添加到对应级别的优先级列表中;
当所述事件任务等待队列和所述定时器任务等待队列均有符合要求的任务添加时,select函数为非阻塞函数,返回值为0。
4.根据权利要求3所述的基于单进程的多任务切换执行方法,其特征在于,所述主进程从所述任务等待队列集合中获取任务的一种实现过程还包括:
当所述事件任务等待队列或所述定时器任务等待队列均没有符合要求的任务添加时,轮询所述定时器任务等待队列,获取最先要超时的时间,将所述最先要超时的时间配置到select函数的超时字段中,此时所述主进程被阻塞,让出CPU;
若在所述最先要超时的时间内,有网络I/O口可读或可写,那么select函数返回值大于0,所述网络读任务等待队列和网络写任务等待队列中与所述可读或可写的网络I/O口对应的任务添加到对应级别的优先级列表中;
若在所述最先要超时的时间内,没有网络I/O口可读或可写,那么select函数返回值为0。
5.根据权利要求4所述的基于单进程的多任务切换执行方法,其特征在于:当所述select函数返回值为0时,所述任务执行队列集合中存在任务执行单元,所述主进程开始新一轮的按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作。
6.根据权利要求2所述的基于单进程的多任务切换执行方法,其特征在于:所述任务执行队列集合包括高优先级列表、中优先级列表、和低优先级列表。
7.一种基于单进程的多任务切换执行系统,其特征在于,所述基于单进程的多任务切换执行系统包括:
等待任务设置模块,设置任务等待队列集合,所述任务等待队列集合包括至少1个任务等待队列,每个任务等待队列对应一种任务类型;
执行任务设置模块,设置任务执行队列集合,所述任务执行队列集合包括至少2个优先级列表;每个优先级列表包含任务执行单元;
任务执行模块,与所述任务等待队列集合和所述任务执行队列集合通信相连,开启主进程按优先级顺序获取各优先级列表中的任务执行单元,并执行获取的任务执行单元中的动作;当所述任务执行队列集合中不存在任务执行单元时,主进程从所述任务等待队列集合中获取任务,并将获取的任务添加到对应级别的优先级列表中继续执行。
8.根据权利要求7所述的基于单进程的多任务切换执行系统,其特征在于,所述任务等待队列集合包括事件任务等待队列、定时器任务等待队列、网络读任务等待队列、或/和网络写任务等待队列。
9.根据权利要求8所述的基于单进程的多任务切换执行系统,其特征在于:所述任务执行模块包括:
第一选取添加单元,从所述事件任务等待队列中按先后顺序获取任务添加到对应级别的优先级列表中;或/和轮询所述定时器任务等待队列,获取已超时的任务添加到对应级别的优先级列表中;当所述事件任务等待队列和所述定时器任务等待队列均有符合要求的任务添加时,select函数为非阻塞函数,返回值为0;
第二选取添加单元,与所述第一选取添加单元相连,当所述事件任务等待队列或所述定时器任务等待队列均没有符合要求的任务添加时,轮询所述定时器任务等待队列,获取最先要超时的时间,将所述最先要超时的时间配置到select函数的超时字段中,此时所述主进程被阻塞,让出CPU;若在所述最先要超时的时间内,有网络I/O口可读或可写,那么select函数返回值大于0,所述网络读任务等待队列和网络写任务等待队列中与所述可读或可写的网络I/O口对应的任务添加到对应级别的优先级列表中;若在所述最先要超时的时间内,没有网络I/O口可读或可写,那么select函数返回值为0。
10.一种处理器,其特征在于:所述处理器运行有权利要求7至9任意一项所述的基于单进程的多任务切换执行系统。
CN201510598987.6A 2015-09-18 2015-09-18 基于单进程的多任务切换执行方法、系统及处理器 Pending CN105204933A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510598987.6A CN105204933A (zh) 2015-09-18 2015-09-18 基于单进程的多任务切换执行方法、系统及处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510598987.6A CN105204933A (zh) 2015-09-18 2015-09-18 基于单进程的多任务切换执行方法、系统及处理器

Publications (1)

Publication Number Publication Date
CN105204933A true CN105204933A (zh) 2015-12-30

Family

ID=54952629

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510598987.6A Pending CN105204933A (zh) 2015-09-18 2015-09-18 基于单进程的多任务切换执行方法、系统及处理器

Country Status (1)

Country Link
CN (1) CN105204933A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106303063A (zh) * 2016-08-29 2017-01-04 Tcl移动通信科技(宁波)有限公司 一种移动终端显示亮度调节方法及系统
CN108052443A (zh) * 2017-10-30 2018-05-18 北京奇虎科技有限公司 一种测试任务调度方法、装置、服务器及存储介质
CN108228240A (zh) * 2016-12-14 2018-06-29 北京国双科技有限公司 多任务队列中任务的处理方法和装置
CN108736952A (zh) * 2017-04-24 2018-11-02 株式会社东芝 通信中继系统及方法
CN108874513A (zh) * 2017-05-11 2018-11-23 北京京东尚科信息技术有限公司 处理定时任务的方法、系统、电子设备和计算机可读介质
WO2019047009A1 (zh) * 2017-09-05 2019-03-14 深圳欣锐科技股份有限公司 一种基于处理器的数据处理方法和装置
CN111552546A (zh) * 2020-04-16 2020-08-18 贝壳技术有限公司 一种基于多线程的任务实现方法、装置及存储介质
CN112433803A (zh) * 2020-12-09 2021-03-02 上海创远仪器技术股份有限公司 无线电Web单页面应用中实现多任务切换的方法
CN113946528A (zh) * 2020-07-16 2022-01-18 华为技术有限公司 切换系统架构的方法与装置
CN114187259A (zh) * 2021-12-10 2022-03-15 北京达佳互联信息技术有限公司 视频质量分析引擎的创建方法、视频质量分析方法及设备
CN115469991A (zh) * 2022-11-14 2022-12-13 苏州浪潮智能科技有限公司 一种定时器队列设置方法、装置、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0299538A2 (en) * 1987-07-17 1989-01-18 Nec Corporation Unified switching between an invariable and a variable priority task
US7155716B2 (en) * 2002-03-08 2006-12-26 Intel Corporation Weighted and prioritized task scheduler
CN103970603A (zh) * 2014-05-21 2014-08-06 哈尔滨工程大学 一种基于多级反馈队列的事件注入引擎的任务调度方法
CN104199730A (zh) * 2014-08-29 2014-12-10 浪潮集团有限公司 一种基于同步i/o复用机制的单线程多任务处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0299538A2 (en) * 1987-07-17 1989-01-18 Nec Corporation Unified switching between an invariable and a variable priority task
US7155716B2 (en) * 2002-03-08 2006-12-26 Intel Corporation Weighted and prioritized task scheduler
CN103970603A (zh) * 2014-05-21 2014-08-06 哈尔滨工程大学 一种基于多级反馈队列的事件注入引擎的任务调度方法
CN104199730A (zh) * 2014-08-29 2014-12-10 浪潮集团有限公司 一种基于同步i/o复用机制的单线程多任务处理方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
周启平 张扬: "《VxWorks程序员速查手册》", 28 February 2005 *
周苏,金海溶编: "《操作系统原理》", 31 August 2013 *
蒋砚军,高占春: "《实用UNIX教程》", 31 January 2005 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106303063A (zh) * 2016-08-29 2017-01-04 Tcl移动通信科技(宁波)有限公司 一种移动终端显示亮度调节方法及系统
CN108228240A (zh) * 2016-12-14 2018-06-29 北京国双科技有限公司 多任务队列中任务的处理方法和装置
CN108736952B (zh) * 2017-04-24 2021-04-27 株式会社东芝 通信中继系统及方法
CN108736952A (zh) * 2017-04-24 2018-11-02 株式会社东芝 通信中继系统及方法
CN108874513A (zh) * 2017-05-11 2018-11-23 北京京东尚科信息技术有限公司 处理定时任务的方法、系统、电子设备和计算机可读介质
WO2019047009A1 (zh) * 2017-09-05 2019-03-14 深圳欣锐科技股份有限公司 一种基于处理器的数据处理方法和装置
CN108052443A (zh) * 2017-10-30 2018-05-18 北京奇虎科技有限公司 一种测试任务调度方法、装置、服务器及存储介质
CN111552546A (zh) * 2020-04-16 2020-08-18 贝壳技术有限公司 一种基于多线程的任务实现方法、装置及存储介质
CN113946528A (zh) * 2020-07-16 2022-01-18 华为技术有限公司 切换系统架构的方法与装置
CN112433803A (zh) * 2020-12-09 2021-03-02 上海创远仪器技术股份有限公司 无线电Web单页面应用中实现多任务切换的方法
CN112433803B (zh) * 2020-12-09 2023-06-20 上海创远仪器技术股份有限公司 无线电Web单页面应用中实现多任务切换的方法
CN114187259A (zh) * 2021-12-10 2022-03-15 北京达佳互联信息技术有限公司 视频质量分析引擎的创建方法、视频质量分析方法及设备
CN115469991A (zh) * 2022-11-14 2022-12-13 苏州浪潮智能科技有限公司 一种定时器队列设置方法、装置、设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN105204933A (zh) 基于单进程的多任务切换执行方法、系统及处理器
EP3425502B1 (en) Task scheduling method and device
US8533716B2 (en) Resource management in a multicore architecture
TWI502511B (zh) 用於管理多核心架構之資源的方法和設備
Kulkarni et al. Survey on Hadoop and Introduction to YARN.
WO2017070900A1 (zh) 多核数字信号处理系统中处理任务的方法和装置
CN105045658B (zh) 一种利用多核嵌入式dsp实现动态任务调度分发的方法
KR101332840B1 (ko) 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법
US9973512B2 (en) Determining variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time
CN104199730B (zh) 一种基于同步i/o复用机制的单线程多任务处理方法
CN110297661B (zh) 基于amp构架dsp操作系统的并行计算方法、系统及介质
US9529625B2 (en) Method and system for providing stack memory management in real-time operating systems
WO2014110702A1 (zh) 协同并发式消息总线、主动构件组装模型及构件拆分方法
CN105260180A (zh) 基于Xscale架构实训的嵌入式操作系统
Yerraballi Real-time operating systems: An ongoing review
Gadre et al. Investigating MapReduce framework extensions for efficient processing of geographically scattered datasets
JP2018536945A (ja) タスクをタイムベーススケジューリングする方法及び装置
Tianzhou et al. A real-time scheduling algorithm for embedded systems with various resource requirements
Ramasubramanian et al. Studies on Performance Aspect of Scheduling Algorithms on Multicore Platform
WO2014110701A1 (zh) 独立主动构件和可运行主动构件组装模型及构件拆分方法
CN114217915B (zh) 一种异构众核上基于主-从模型的轻量级多线程处理方法
Labrosse Operating systems
Kumar et al. Scheduling Techniques for Workload Distribution in YARN Containers
Morari et al. GMT: Enabling easy development and efficient execution of irregular applications on commodity clusters
Ibrahim μRTOS: Simple multitasking with microcontrollers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20151230