CN106062716A - 在单任务系统中实现多任务的方法、装置及单任务系统 - Google Patents
在单任务系统中实现多任务的方法、装置及单任务系统 Download PDFInfo
- Publication number
- CN106062716A CN106062716A CN201680000462.0A CN201680000462A CN106062716A CN 106062716 A CN106062716 A CN 106062716A CN 201680000462 A CN201680000462 A CN 201680000462A CN 106062716 A CN106062716 A CN 106062716A
- Authority
- CN
- China
- Prior art keywords
- task
- function
- steplike
- transaction layer
- time
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000012545 processing Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 137
- 230000008569 process Effects 0.000 claims description 37
- 238000005520 cutting process Methods 0.000 claims description 24
- 238000009826 distribution Methods 0.000 claims description 9
- 230000004807 localization Effects 0.000 claims description 3
- 239000000725 suspension Substances 0.000 claims description 3
- 238000004891 communication Methods 0.000 abstract description 6
- 230000007246 mechanism Effects 0.000 abstract description 3
- 238000010304 firing Methods 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
Abstract
本发明适用于计算机技术领域,提供了一种在单任务系统中实现多任务的方法、装置及单任务系统,所述方法包括:运行主任务;在中央处理器CPU上为从任务分配一个硬件定时器;配置所述硬件定时器的中断周期;所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务。本发明,实现了在单任务系统中独立的、并行运行主任务和从任务,不需要在操作系统中增加庞大的多任务调度框架。且由于从任务是在硬件定时器产生硬件中断时运行,因此耗用系统资源少,无需采用传统多任务系统中的庞大的进程间通讯机制,如:信号灯、自旋锁等。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种在单任务系统中实现多任务的方法、装置及单任务系统。
背景技术
多任务一般在多任务系统中由操作系统来统一实现,但多任务系统是以调度开销较大、耗用系统资源较多、并发管理较繁琐为代价的。
单任务系统以其简洁高效、耗用系统资源小、管理和维护容易、总体成本低而运用于它力所能及的场合。
基于成本和需求的综合考虑,可以考虑选择单任务系统,在单任务系统中实现多任务的处理。
然而,在实现本发明过程中,发明人发现现有技术提供的单任务系统至少存在如下问题:
现有的单任务系统的操作系统的软件构架中只提供了单任务机制和框架,没有提供任务启/停、任务切换、任务调度、信号灯、互斥锁等与任务相关的管理和服务,因此无法实现多任务的处理。
发明内容
有鉴于此,本发明实施例提供一种在单任务系统中实现多任务的方法、装置及单任务系统,以解决现有技术提供的单任务系统无法实现多任务的处理的问题。
一方面,提供一种在单任务系统中实现多任务的方法,所述方法包括:
运行主任务;
在中央处理器CPU上为从任务分配一个硬件定时器;
配置所述硬件定时器的中断周期;
所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务。
进一步地,所述硬件定时器是专门分配给所述从任务使用的定时器,所述从任务只为一个软件模块服务。
进一步地,所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务包括:
按顺序将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤。
进一步地,将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤,包括:
按顺序将所述从任务的运行事务依次切分为多个运行事务层;
为每个运行事务层分配一个全局的独立的步进计数变量,用于记录每个运行事务层的当前事务处理函数的下一次重入运行起始点;
将每个运行事务层中最大完成耗时大于预设耗时阈值的事务处理函数实现为可重入的步进函数;
每个运行事务层的事务处理函数中,在调用下一运行事务层的步进函数前,增加一句对下一运行事务层的步进计数变量清零的语句、一句对步进计数变量赋值的语句和一句语句标号,用于下一运行事务层的步进函数的初始运行定位以及当前事务处理函数重入时的跳转定位;
在每个运行事务层的步进函数代码开始处,增加步进跳转分支转移语句;
在各运行事务层的步进函数中,在等待的状态尚未达到时退出所述运行事务层的步进函数,中止所述从任务的运行。
进一步地,所述将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤,还包括:
控制所有步进函数从自己的切分点退出时,修改自己的步进计数变量的计数值为非零值、且在本步进函数内唯一;
控制所有步进函数,在已运行完毕时,修改自己的步进计数变量的计数值为零。
进一步地,将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤,还包括:
每次调用步进函数之后,判断所述步进函数的步进计数变量的计数值是否为非零值,如果是,则退出当前函数。
另一方面,提供一种在单任务系统中实现多任务的装置,所述装置包括:
主任务运行模块,用于运行主任务;
定时器分配模块,用于在中央处理器CPU上为从任务分配一个硬件定时器;
中断周期配置模块,用于配置所述硬件定时器的中断周期;
从任务运行模块,用于所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务。
进一步地,所述硬件定时器是专门分配给所述从任务使用的定时器,所述从任务只为一个软件模块服务。
进一步地,所述从任务运行模块包括:
从任务运行单元,用于按顺序将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤。
进一步地,所述从任务运行单元包括:
分层子单元,用于按顺序将所述从任务的运行事务依次切分为多个运行事务层;
步进计数变量分配子单元,用于为每个运行事务层分配一个全局的独立的步进计数变量,用于记录每个运行事务层的当前事务处理函数的下一次重入运行起始点;
步进函数生成子单元,用于将每个运行事务层中最大完成耗时大于预设耗时阈值的事务处理函数实现为可重入的步进函数;
定位处理子单元,用于每个运行事务层的事务处理函数中,在调用下一运行事务层的步进函数前,增加一句对下一运行事务层的步进计数变量清零的语句、一句对步进计数变量赋值的语句和一句语句标号,用于下一运行事务层的步进函数的初始运行定位以及当前事务处理函数重入时的跳转定位;
跳转处理子单元,用于在每个运行事务层的步进函数代码开始处,增加步进跳转分支转移语句;
从任务中止子单元,用于在各运行事务层的步进函数中,在等待的状态尚未达到时退出所述运行事务层的步进函数,中止所述从任务的运行。
进一步地,所述从任务运行单元还包括:
第一步进计数变量修改模块,用于控制所有步进函数从自己的切分点退出时,修改自己的步进计数变量的计数值为非零值、且在本步进函数内唯一;
第二步进计数变量修改模块,用于控制所有步进函数,在已运行完毕时,修改自己的步进计数变量的计数值为零。
进一步地,所述从任务运行单元还包括:
步进计数变量判断模块,用于每次调用步进函数之后,判断所述步进函数的步进计数变量的计数值是否为非零值,如果是,则退出当前函数。
又一方面,提供一种单任务系统,所述单任务系统包括如上所述的在单任务系统中实现多任务的装置。
在本发明实施例,实现了在单任务系统中独立的、并行运行主任务和从任务,不需要在操作系统中增加庞大的多任务调度框架。且由于从任务是在硬件定时器产生硬件中断时运行,因此耗用系统资源少,无需采用传统多任务系统中的庞大的进程间通讯机制,如:信号灯、自旋锁等,并且从任务运行快捷,自身占用系统时间较少而不会把CPU和其它模块阻塞。
附图说明
图1是本发明在单任务系统中实现多任务的方法实施例的实现流程图;
图2是本发明在单任务系统中实现多任务的装置实施例的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,运行主任务后,为从任务分配一个硬件定时器,配置所述硬件定时器的中断周期,由所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务。
以下结合具体实施例对本发明的实现进行详细描述:
实施例一
图1示出了本发明实施例一提供的单任务系统中实现多任务的方法的实现流程,详述如下:
在步骤S101中,运行主任务。
在本发明实施例中,单任务系统需要对两个任务进行处理。其中,一个是主任务,另一个是从任务。主任务一直不会停止,运行着应用程序,管理着整个系统的输入和输出;从任务偶尔开启、开启若干时间后会停止。
在步骤S102中,在中央处理器CPU上为从任务分配一个硬件定时器。
单任务系统内核中并行处理两种事务时,两种事务的编程处理需要模块化,即相互独立、不能交织在一起以便于升级和维护。
在本发明实施例中,在中央处理器(Central Processing Unit,CPU)上分配一个硬件定时器,该硬件定时器是专门分配给从任务使用的定时器,并且从任务只为一个软件模块服务,从而满足单任务系统中两种事务的编程处理需要模块化的要求,避免与其他模块公用所产生的相互依赖或相互影响。
在步骤S103中,配置所述硬件定时器的中断周期。
在本发明实施例中,配置硬件定时器的中断周期,使硬件定时器能够周期性地产生向CPU发起的中断,中断周期可以设置为10毫秒。也可根据CPU的运行速度和从任务的急迫程度对中断周期的值进行调整,如调整为:1毫秒、5毫秒、50毫秒、100毫秒等。对硬件定时器的配置可在使用从任务所属模块的相关API(如模块打开API)中来实现。
在步骤S104中,所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务。
在本发明实施例中,当硬件定时器的计时时间到达配置的中断周期时,可以产生硬件中断,触发从任务开始运行。
具体的,可以按顺序将从任务依次切分为多个运行事务层,每次当硬件定时器产生硬件中断时只执行一个切分步骤,每个切分步骤只占用一个有最大额定限度的小片段时长,如:小于500纳秒。
具体的,通过以下步骤可以实现按顺序将从任务依次切分为多个运行事务层,每次当硬件定时器产生硬件中断时只执行一个切分步骤:
步骤1、按顺序将从任务的运行事务依次切分为多个运行事务层。
可以按顺序将从任务的运行事务依次切分为多个运行事务层,一般分为3层。第一层是事务的总入口,根据当前的状态,会调用第二层的相关事务处理函数,即:提供进入第二层的入口。第二层的事务处理函数顺序地处理自己的事务,并会调用第三层的相关事务处理函数。
例如:一个MODEM通讯模块的事务在第一层依次管理着连接子事务和数据收发子事务,会调用连接子事务函数和数据收发子事务函数;连接和数据收发子事务函数是第二层的事务处理函数,它们的函数体内分别会调用第三层的处理函数,用于直接对MODEM芯片的读写。
步骤2、为每个运行事务层分配一个全局的独立的步进计数变量,用于记录每个运行事务层的当前事务处理函数的下一次重入运行起始点。
步骤3、将每个运行事务层中最大完成耗时大于预设耗时阈值的事务处理函数实现为可重入的步进函数。
每个运行事务层的事务处理函数中,最大完成耗时较长,大于预设耗时阈值(如:大于1毫秒)的事务处理函数,可设计和实现为可重入的步进运行函数(下文简称步进函数),保证每一次步进运行耗时较短(如:小于500纳秒)。可重入的要求是:一次访问完成而不影响下次运行的变量可定义为局部自动变量;一次访问后影响下一次或累积到下一次的变量需定义为局部静态变量。一次可完成且耗时很短的函数,无需实现为步进函数。
步骤4、每个运行事务层的事务处理函数中,在调用下一运行事务层的步进函数前,增加一句对下一运行事务层的步进计数变量清零的语句、一句对步进计数变量赋值的语句和一句语句标号,用于下一运行事务层的步进函数的初始运行定位以及当前事务处理函数重入时的跳转定位。
为确保简单易控,标号头部采用“STEP_”、尾部采用数字(如:STEP_1),该数字与步进计数变量的当前计数相同。
比如,在MODEM的第一层事务处理函数中:
…
task_s1=0;//为接着的下层函数调用初始化步进计数
task_s0=2;//对当前层的步进计数变量task_s0赋予当前步进位置值
STEP_2://跳转标号
a=step_modem_connect();//它将使用task_s1来控制自己的步进运行
步骤5、在每个运行事务层的步进函数代码开始处,增加步进跳转分支转移语句。
在每个运行事务层的步进函数代码开始处,增加步进跳转分支转移语句,这是实现步进运行的重要环节,非步进函数无需作这样的处理。
比如,在MODEM的第一层事务处理函数中:
步骤6、在各运行事务层的步进函数中,在等待的状态尚未达到时退出所述运行事务层的步进函数,中止所述从任务的运行。
若运行事务被切分为3个运行事务层,则最底层的运行事务层是切分得到的第三个运行事务层。最底层的运行事务层的步进函数中,一般在等待的状态尚未达到时即退出本步进函数,最终中止本次中断服务,也就是从任务的运行。此退出点即切分点,它确保整个任务以切分方式运行、而每次运行又只占用极少的CPU时间,使得CPU可以从容处理其它事务,从而有力地支持了嵌入式系统的实时性。由于各层的步进计数变量一起记录了本次运行的断点,下次中断发生时,就会经过三次跳转、跳转到本次运行的断点处继续运行。需记忆的变量要采用局部静态变量的形式。根据事务处理的需要,其它各层也可部署切分点。
比如,在MODEM的第三层事务处理函数中:
优选地,为了准确控制从任务的运行,实现将从任务依次切分为多个运行事务层,每次当硬件定时器产生硬件中断时只执行一个切分步骤,还可以包括以下步骤:
步骤11、控制所有步进函数从自己的切分点退出时,修改自己的步进计数变量的计数值为非零值、且在本步进函数内唯一,表示事务尚未执行完毕、还用于确保下次能从本切分点继续运行。
步骤12、控制所有步进函数,在已运行完毕时,修改自己的步进计数变量的计数值为零。
优选地,实现将从任务依次切分为多个运行事务层,每次当硬件定时器产生硬件中断时只执行一个切分步骤,还可以包括下述步骤:
每次调用步进函数之后,判断所述步进函数的步进计数变量的计数值是否为非零值,如果是,则表示所述步进函数的事务尚未完成,退出当前函数。
比如,在MODEM的第一层事务处理函数中:
通过以上的处理后,定时器定时时间到后,首先进入第一个事务运行层,跳转到第一个事务运行层的步进断点处,再调用和进入第二个事务运行层的一个事务步进函数,跳转到该函数的步进断点处,然后调用和进入第三个事务运行层的一个步进函数,跳转到该函数的步进断点处,判断等待的状态是否到达,如果等待的状态尚未达到,则依次退出第三个事务运行层的步进函数、第二个事务运行层的步进函数、第一个事务运行层的步进函数;否则,继续后续事务的处理。
另外,需要说明的是,从任务的管控由系统API函数来进行,通常包括开启、数据发送、数据接收、状态查询、状态控制、关闭等操作,系统API函数通过操作从任务的全部变量来管控从任务。而API对从任务的管理,主要是通过存取与从任务相关的全局变量来实现,为了防止竞争和流程异常,在存取的瞬间,应先关闭硬件定时器中断,待存取完后再打开硬件定时器中断。
本实施例,运行主任务后,为从任务分配一个硬件定时器,配置所述硬件定时器的中断周期,由所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务。实现了在单任务系统中独立的、并行运行主任务和从任务,不需要在操作系统中增加庞大的多任务调度框架。且由于从任务是在硬件定时器产生硬件中断时运行,因此耗用系统资源少,无需采用传统多任务系统中的庞大的进程间通讯机制,如:信号灯、自旋锁等,并且从任务运行快捷,自身占用系统时间较少而不会把CPU和其它模块阻塞。
另外,硬件定时器是专门分配给从任务使用的定时器,并且从任务只为一个软件模块服务,从而满足单任务系统中两种事务的编程处理需要模块化的要求,避免与其他模块公用所产生的相互依赖或相互影响,便于系统的升级和维护。
此外,巧妙地将部分函数实现成可连续重入、且步进运行的函数,以此来分步完成一个逻辑上连续的事务。每步之间的间隔时间,让出去给CPU去运行别的事务。外设模块的特性往往是这样的:真正数据吞吐的时间很短,大量的时间是在等候状态。这样切分、步进处理,正好与外设模块的特性相匹配。
应理解,在本发明实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
实施例二
图2示出了本发明实施例二提供的在单任务系统中实现多任务的装置的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该在单任务系统中实现多任务的装置2可以是内置于单任务系统中的软件单元、硬件单元或者软硬件结合的单元,该在单任务系统中实现多任务的装置2包括:主任务运行模块21、定时器分配模块22、中断周期配置模块23和从任务运行模块24。
其中,主任务运行模块21,用于运行主任务;
定时器分配模块22,用于在中央处理器CPU上为从任务分配一个硬件定时器;
中断周期配置模块23,用于配置所述硬件定时器的中断周期;
从任务运行模块24,用于所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务。
进一步地,所述硬件定时器是专门分配给所述从任务使用的定时器,所述从任务只为一个软件模块服务。
具体的,所述从任务运行模块24包括:
从任务运行单元,用于按顺序将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤。
具体的,所述从任务运行单元包括:
分层子单元,用于按顺序将所述从任务的运行事务依次切分为多个运行事务层;
步进计数变量分配子单元,用于为每个运行事务层分配一个全局的独立的步进计数变量,用于记录每个运行事务层的当前事务处理函数的下一次重入运行起始点;
步进函数生成子单元,用于将每个运行事务层中最大完成耗时大于预设耗时阈值的事务处理函数实现为可重入的步进函数;
定位处理子单元,用于每个运行事务层的事务处理函数中,在调用下一运行事务层的步进函数前,增加一句对下一运行事务层的步进计数变量清零的语句、一句对步进计数变量赋值的语句和一句语句标号,用于下一运行事务层的步进函数的初始运行定位以及当前事务处理函数重入时的跳转定位;
跳转处理子单元,用于在每个运行事务层的步进函数代码开始处,增加步进跳转分支转移语句;
从任务中止子单元,用于在各运行事务层的步进函数中,在等待的状态尚未达到时退出所述运行事务层的步进函数,中止所述从任务的运行。
进一步地,所述从任务运行单元还包括:
第一步进计数变量修改模块,用于控制所有步进函数从自己的切分点退出时,修改自己的步进计数变量的计数值为非零值、且在本步进函数内唯一;
第二步进计数变量修改模块,用于控制所有步进函数,在已运行完毕时,修改自己的步进计数变量的计数值为零。
进一步地,所述从任务运行单元还包括:
步进计数变量判断模块,用于每次调用步进函数之后,判断所述步进函数的步进计数变量的计数值是否为非零值,如果是,则退出当前函数。
本发明实施例提供的在单任务系统中实现多任务的装置可以应用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (13)
1.一种在单任务系统中实现多任务的方法,其特征在于,所述方法包括:
运行主任务;
在中央处理器CPU上为从任务分配一个硬件定时器;
配置所述硬件定时器的中断周期;
所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务。
2.如权利要求1所述的方法,其特征在于,所述硬件定时器是专门分配给所述从任务使用的定时器,所述从任务只为一个软件模块服务。
3.如权利要求1所述的方法,其特征在于,所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务,包括:
按顺序将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤。
4.如权利要求3所述的方法,其特征在于,将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤,包括:
按顺序将所述从任务的运行事务依次切分为多个运行事务层;
为每个运行事务层分配一个全局的独立的步进计数变量,用于记录每个运行事务层的当前事务处理函数的下一次重入运行起始点;
将每个运行事务层中最大完成耗时大于预设耗时阈值的事务处理函数实现为可重入的步进函数;
每个运行事务层的事务处理函数中,在调用下一运行事务层的步进函数前,增加一句对下一运行事务层的步进计数变量清零的语句、一句对步进计数变量赋值的语句和一句语句标号,用于下一运行事务层的步进函数的初始运行定位以及当前事务处理函数重入时的跳转定位;
在每个运行事务层的步进函数代码开始处,增加步进跳转分支转移语句;
在各运行事务层的步进函数中,在等待的状态尚未达到时退出所述运行事务层的步进函数,中止所述从任务的运行。
5.如权利要求4所述的方法,其特征在于,将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤,还包括:
控制所有步进函数从自己的切分点退出时,修改自己的步进计数变量的计数值为非零值、且在本步进函数内唯一;
控制所有步进函数,在已运行完毕时,修改自己的步进计数变量的计数值为零。
6.如权利要求4所述的方法,其特征在于,将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤,还包括:
每次调用步进函数之后,判断所述步进函数的步进计数变量的计数值是否为非零值,如果是,则退出当前函数。
7.一种在单任务系统中实现多任务的装置,其特征在于,所述装置包括:
主任务运行模块,用于运行主任务;
定时器分配模块,用于在中央处理器CPU上为从任务分配一个硬件定时器;
中断周期配置模块,用于配置所述硬件定时器的中断周期;
从任务运行模块,用于所述硬件定时器按照所述中断周期周期性地产生硬件中断,触发运行所述从任务。
8.如权利要求7所述的装置,其特征在于,所述硬件定时器是专门分配给所述从任务使用的定时器,所述从任务只为一个软件模块服务。
9.如权利要求7所述的装置,其特征在于,所述从任务运行模块包括:
从任务运行单元,用于按顺序将所述从任务依次切分为多个运行事务层,每次当所述硬件定时器产生硬件中断时只执行一个切分步骤。
10.如权利要求9所述的装置,其特征在于,所述从任务运行单元包括:
分层子单元,用于按顺序将所述从任务的运行事务依次切分为多个运行事务层;
步进计数变量分配子单元,用于为每个运行事务层分配一个全局的独立的步进计数变量,用于记录每个运行事务层的当前事务处理函数的下一次重入运行起始点;
步进函数生成子单元,用于将每个运行事务层中最大完成耗时大于预设耗时阈值的事务处理函数实现为可重入的步进函数;
定位处理子单元,用于每个运行事务层的事务处理函数中,在调用下一运行事务层的步进函数前,增加一句对下一运行事务层的步进计数变量清零的语句、一句对步进计数变量赋值的语句和一句语句标号,用于下一运行事务层的步进函数的初始运行定位以及当前事务处理函数重入时的跳转定位;
跳转处理子单元,用于在每个运行事务层的步进函数代码开始处,增加步进跳转分支转移语句;
从任务中止子单元,用于在各运行事务层的步进函数中,在等待的状态尚未达到时退出所述运行事务层的步进函数,中止所述从任务的运行。
11.如权利要求9所述的装置,其特征在于,所述从任务运行单元还包括:
第一步进计数变量修改模块,用于控制所有步进函数从自己的切分点退出时,修改自己的步进计数变量的计数值为非零值、且在本步进函数内唯一;
第二步进计数变量修改模块,用于控制所有步进函数,在已运行完毕时,修改自己的步进计数变量的计数值为零。
12.如权利要求9所述的装置,其特征在于,所述从任务运行单元还包括:
步进计数变量判断模块,用于每次调用步进函数之后,判断所述步进函数的步进计数变量的计数值是否为非零值,如果是,则退出当前函数。
13.一种单任务系统,其特征在于,所述单任务系统包括如权利要求7至12任一项所述的在单任务系统中实现多任务的装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/084582 WO2017206151A1 (zh) | 2016-06-02 | 2016-06-02 | 在单任务系统中实现多任务的方法、装置及单任务系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106062716A true CN106062716A (zh) | 2016-10-26 |
CN106062716B CN106062716B (zh) | 2019-11-29 |
Family
ID=57195553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680000462.0A Active CN106062716B (zh) | 2016-06-02 | 2016-06-02 | 在单任务系统中实现多任务的方法、装置及单任务系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10782999B2 (zh) |
CN (1) | CN106062716B (zh) |
WO (1) | WO2017206151A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108241308A (zh) * | 2017-12-08 | 2018-07-03 | 中国航空工业集团公司成都飞机设计研究所 | 一种基于分时分区嵌入式软件的运行时间控制方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144703B (zh) * | 2018-09-10 | 2021-03-23 | 维沃移动通信有限公司 | 一种多任务的处理方法及其终端设备 |
CN110442439B (zh) * | 2019-08-05 | 2022-04-01 | 北京百佑科技有限公司 | 任务进程处理方法、装置和计算机设备 |
CN112346609B (zh) * | 2020-09-25 | 2022-07-12 | 北京淇瑀信息科技有限公司 | 一种基于多业务任务显示的页面展示方法、装置和电子设备 |
CN113239525A (zh) * | 2021-04-26 | 2021-08-10 | 珠海市一微半导体有限公司 | 基于分层约束的事务模型建立方法及处理器 |
CN116627620B (zh) * | 2023-07-25 | 2023-09-29 | 无锡卓海科技股份有限公司 | 适于嵌入式smif装载机构的多任务实时并发处理方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63153639A (ja) * | 1986-12-17 | 1988-06-27 | Omron Tateisi Electronics Co | マルチタスクos用インタプリタの作成方法 |
JPH0496139A (ja) * | 1990-08-08 | 1992-03-27 | Nec Corp | Ms―dos上のマルチタスク制御方式 |
CN1248016A (zh) * | 1998-09-16 | 2000-03-22 | 英业达股份有限公司 | 在单任务系统中实现图形化界面模拟的方法 |
CN102109839A (zh) * | 2009-12-29 | 2011-06-29 | 贵阳铝镁设计研究院 | 基于dos操作系统的工业控制多任务上位机架构 |
CN103760813A (zh) * | 2014-01-22 | 2014-04-30 | 哈尔滨工业大学 | 全自动贴片机在dos操作系统下的实时采样控制系统及方法 |
CN104102491A (zh) * | 2014-07-28 | 2014-10-15 | 航天科工深圳(集团)有限公司 | 单片机实时任务与耗时任务并行执行的实现方法和系统 |
CN104239200A (zh) * | 2013-06-20 | 2014-12-24 | 上海博达数据通信有限公司 | 一种硬单步系统中内存读写监控方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421702B1 (en) * | 1998-06-09 | 2002-07-16 | Advanced Micro Devices, Inc. | Interrupt driven isochronous task scheduler system |
CN1940858B (zh) * | 2005-09-26 | 2011-06-15 | 深圳市朗科科技股份有限公司 | 媒体播放装置上实现多任务的方法 |
US7698541B1 (en) * | 2006-10-31 | 2010-04-13 | Netapp, Inc. | System and method for isochronous task switching via hardware scheduling |
TW201009713A (en) * | 2008-08-21 | 2010-03-01 | Ind Tech Res Inst | Multitasking processor and task switch method thereof |
-
2016
- 2016-06-02 WO PCT/CN2016/084582 patent/WO2017206151A1/zh active Application Filing
- 2016-06-02 CN CN201680000462.0A patent/CN106062716B/zh active Active
-
2017
- 2017-12-12 US US15/839,127 patent/US10782999B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63153639A (ja) * | 1986-12-17 | 1988-06-27 | Omron Tateisi Electronics Co | マルチタスクos用インタプリタの作成方法 |
JPH0496139A (ja) * | 1990-08-08 | 1992-03-27 | Nec Corp | Ms―dos上のマルチタスク制御方式 |
CN1248016A (zh) * | 1998-09-16 | 2000-03-22 | 英业达股份有限公司 | 在单任务系统中实现图形化界面模拟的方法 |
CN102109839A (zh) * | 2009-12-29 | 2011-06-29 | 贵阳铝镁设计研究院 | 基于dos操作系统的工业控制多任务上位机架构 |
CN104239200A (zh) * | 2013-06-20 | 2014-12-24 | 上海博达数据通信有限公司 | 一种硬单步系统中内存读写监控方法 |
CN103760813A (zh) * | 2014-01-22 | 2014-04-30 | 哈尔滨工业大学 | 全自动贴片机在dos操作系统下的实时采样控制系统及方法 |
CN104102491A (zh) * | 2014-07-28 | 2014-10-15 | 航天科工深圳(集团)有限公司 | 单片机实时任务与耗时任务并行执行的实现方法和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108241308A (zh) * | 2017-12-08 | 2018-07-03 | 中国航空工业集团公司成都飞机设计研究所 | 一种基于分时分区嵌入式软件的运行时间控制方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017206151A1 (zh) | 2017-12-07 |
US10782999B2 (en) | 2020-09-22 |
CN106062716B (zh) | 2019-11-29 |
US20180101402A1 (en) | 2018-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106062716A (zh) | 在单任务系统中实现多任务的方法、装置及单任务系统 | |
US11573796B2 (en) | Conditional branching control for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11288074B2 (en) | Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue | |
US20220188265A1 (en) | Loop Thread Order Execution Control of a Multi-Threaded, Self-Scheduling Reconfigurable Computing Fabric | |
CN100517236C (zh) | 智能卡嵌入式操作系统及其控制方法 | |
US10659316B1 (en) | State machine controlled dynamic distributed computing | |
CN100504763C (zh) | 启用同时多线程(smt)的系统及其管理方法 | |
US20230153258A1 (en) | Multi-Threaded, Self-Scheduling Reconfigurable Computing Fabric | |
CN105893126A (zh) | 一种任务调度方法及装置 | |
CN105045658A (zh) | 一种利用多核嵌入式dsp实现动态任务调度分发的方法 | |
CN105683939A (zh) | 用于在诸如fpga的动态可重新配置硬件装置以及诸如cpu的指令集处理器上同时执行进程的计算平台、可重新配置硬件装置和方法、以及相关的计算机可读介质 | |
CN102375761A (zh) | 业务管理方法和装置、以及设备 | |
US10521395B1 (en) | Systems and methods for implementing an intelligence processing computing architecture | |
CN101751288A (zh) | 应用进程调度的方法、设备及系统 | |
CN100492282C (zh) | 处理系统、通信系统及在处理系统中处理作业的方法 | |
CN104636878A (zh) | 一种银行自动处理任务的调度方法及装置 | |
JP4199444B2 (ja) | パーティション構成変更方式、パーティション構成変更方法およびパーティション構成変更用プログラム | |
CN103677990A (zh) | 虚拟机实时任务的调度方法、装置和虚拟机 | |
CN106250217A (zh) | 一种多虚拟处理器间的同步调度方法及其调度系统 | |
CN104123183B (zh) | 集群作业调度方法和装置 | |
CN102968303A (zh) | 程序设计系统和程序设计方法 | |
CN107203421A (zh) | 一种云计算环境中自适应的组合工作流方法 | |
CN111459622A (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
CN109766168A (zh) | 任务调度方法和装置、存储介质以及计算设备 | |
CN115658278B (zh) | 一种支持高并发协议交互的微任务调度机 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |