CN102023892A - 基于微处理器的多任务时间片实时处理方法 - Google Patents
基于微处理器的多任务时间片实时处理方法 Download PDFInfo
- Publication number
- CN102023892A CN102023892A CN2009101960252A CN200910196025A CN102023892A CN 102023892 A CN102023892 A CN 102023892A CN 2009101960252 A CN2009101960252 A CN 2009101960252A CN 200910196025 A CN200910196025 A CN 200910196025A CN 102023892 A CN102023892 A CN 102023892A
- Authority
- CN
- China
- Prior art keywords
- task
- microprocessor
- real
- processing method
- timeslice
- 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
Links
Images
Abstract
本发明的目的提供一种基于微处理器的多任务时间片实时处理方法,解决微处理器多任务处理时,构思一个无限循环的代码会有点困难,而且代码不易读懂、难于维护;又避免了移植实时操作系统所带来要扩大存储空间,增加开支的缺点。所述基于微处理器的多任务时间片实时处理方法,由多个平行的任务组成,时间片由定时器中断确定,当时间片期满时进行任务切换。
Description
【技术领域】
本发明涉及多任务实时处理方法,具体涉及一种微基于处理器的多任务时间片实时处理方法。
【背景技术】
基于微处理器实现多任务实时操作还有其他方法,比如开放源代码的实时操作系统UC/OS-II,和Keil公司的RTX-51 TINY,下表用来比较本发明方法与这二种方法的异同点。
本发明提供一种基于微处理器的多任务时间片实时处理方法,解决微处理器多任务处理时,构思一个无限循环的代码会比较困难,而且代码不易读懂、难于维护;又避免了移植实时操作系统所带来要扩大存储空间,增加开支的缺点。
另外西门子公司有专利号为96109992.5的中国发明专利《多任务实时处理设备和方法》。但是基于微处理器的多任务时间片实时处理方法目前还未见报道。
【发明内容】
本发明的目的提供一种基于微处理器的多任务时间片实时处理方法,解决微处理器多任务处理时,构思一个无限循环的代码会有点困难,而且代码不易读懂、难于维护;又避免了移植实时操作系统所带来要扩大存储空间,增加开支的缺点。
所述基于微处理器的多任务时间片实时处理方法,由多个平行的任务组成,时间片由定时器中断确定,当时间片期满时进行任务切换。所述任务的运行现场包括任务寄存器、任务状态寄存器、任务堆栈指针、任务堆栈区,其特征在于激活任务时将任务寄存器存入微处理器寄存器,任务状态寄存器存入微处理器状态寄存器,任务堆栈指针存入微处理器堆栈指针;挂起任务时将微处理器寄存器存入任务寄存器,微处理器状态寄存器存入任务状态寄存器,微处理器堆栈指针存入任务堆栈指针。所述的微处理器是8位微处理器,更具体一点是MCS51架构的微处理器。
【附图说明】
图1是所述基于微处理器的多任务时间片实时处理方法流程图。
图2是所述基于微处理器的多任务时间片实时处理方法空间分配图。
图3是所述基于微处理器的多任务时间片实时处理方法任务切换图。
【具体实施方式】
下面结合实施例并参照附图对本发明作进一步描述。
图1是本发明一实施方式所述基于微处理器的多任务时间片实时处理方法流程图。该流程开始于步骤100。然后,步骤101判断那个任务获得令牌。步骤102任务n获得令牌,将当前任务的运行现场写入指定寄存器;从任务n的指定寄存器中读出数据,恢复任务n的运行现场。步骤103进入任务n,执行任务n的代码。步骤104,定时执行时间期满,跳转执行步骤101。
本发明一实施方式中,任务是并行运行的,没有优先级的概念,采用循环令牌的方法判断应该执行的任务。微处理器从任务1开始执行,即该任务1获得令牌;当定时到达时,任务1交出令牌,由任务1获得令牌,微处理器执行任务1;当定时再次到达时,任务2交出令牌,由任务1获得。如此周而复始,仿佛分别由不同的微处理器来处理。
图2是本发明一实施方式所述基于微处理器的多任务时间片实时处理方法空间分配图。201微处理器运行现场,包括堆栈指针SP、状态寄存器PSW、累加器ACC;202任务运行现场,包括任务堆栈指针T_SP、任务状态寄存器T_PSW、任务累加器T_ACC;203任务堆栈区;204任务代码。
激活任务时将任务寄存器存入微处理器寄存器,任务状态寄存器存入微处理器状态寄存器,任务堆栈指针存入微处理器堆栈指针;挂起任务时将微处理器寄存器存入任务寄存器,微处理器状态寄存器存入任务状态寄存器,微处理器堆栈指针存入任务堆栈指针。
每个任务都有自己的寄存器存储缓冲,用于当任务挂起时保存实际寄存器的值;硬件堆栈区,用于保存任务的程序指针,区域由程序员根据具体情况划定。堆栈区的大小由以下式决定:
L≥2×(n+1)+i
其中L:堆栈长度
n:任务中嵌套调用子程序和中断的最大数目
i:嵌套调用子程序和中断时可能执行的push指令的个数
系统的初始化是为任务启动做准备:设置PSW,分配任务的寄存器组;累加器清零;在任务的堆栈区起始存入任务代码的起始地址;调整任务堆栈指针。完成定时器T0的初始化,打开定时中断,为执行任务切换作准备。
每个任务时按照时间片轮流执行的,当时间片到达时,会发生T0中断,进行任务切换。任务轮流执行的策略可以根据需要制定。
图3是本发明一实施方式所述基于微处理器的多任务时间片实时处理方法任务切换图。301微处理器运行现场,包括堆栈指针SP、状态寄存器PSW、累加器ACC;302待激活任务m运行现场,包括任务m堆栈指针TmSP、任务m状态寄存器TmPSW、任务m累加器TmACC;303待挂起任务n运行现场,包括任务n堆栈指针TnSP、任务n状态寄存器TnPSW、任务n累加器TnACC;304任务n堆栈区;305任务m堆栈区。
AT89C52的堆栈指针指向任务m的堆栈区,当发生T0中断时将当前程序指针(指向任务m的代码)压入堆栈。如不改变堆栈指针SP的值,从T0中断退出后微处理器继续执行任务m的代码。现在进入任务切换后将堆栈指针、状态寄存器和累加器存入任务m的寄存器缓冲,该任务挂起;将任务n的寄存器缓冲中数据分别给堆栈指针、状态寄存器和累加器,该任务激活。处理器堆栈指针指向任务n的栈顶,这样当退出T0中断时,任务n的代码地址弹入程序指针PC,处理器开始执行任务n。任何一个任务执行一定时间后都会挂起,当被激活时会接着任务挂起的代码地址继续执行,如果时间片设置得当,给人的感觉就是每个任务分别由不同的微处理器实时处理。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和补充,这些改进和补充也应视为本发明的保护范围。
Claims (3)
1.一种基于微处理器的多任务时间片实时处理方法,其特征在于由多个平行的任务组成,时间片由定时器中断确定,当时间片期满时进行任务切换。
2.根据权利要求1所述的基于微处理器的多任务时间片实时处理方法,所述的任务的运行现场包括任务寄存器、任务状态寄存器、任务堆栈指针、任务堆栈区,其特征在于激活任务时将任务寄存器存入微处理器寄存器,任务状态寄存器存入微处理器状态寄存器,任务堆栈指针存入微处理器堆栈指针;挂起任务时将微处理器寄存器存入任务寄存器,微处理器状态寄存器存入任务状态寄存器,微处理器堆栈指针存入任务堆栈指针。
3.根据权利要求1所述的基于微处理器的多任务时间片实时处理方法,其特征在于所述的微处理器是8位微处理器,更具体一点是MCS51架构的微处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101960252A CN102023892A (zh) | 2009-09-21 | 2009-09-21 | 基于微处理器的多任务时间片实时处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101960252A CN102023892A (zh) | 2009-09-21 | 2009-09-21 | 基于微处理器的多任务时间片实时处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102023892A true CN102023892A (zh) | 2011-04-20 |
Family
ID=43865213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101960252A Pending CN102023892A (zh) | 2009-09-21 | 2009-09-21 | 基于微处理器的多任务时间片实时处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102023892A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014134810A1 (zh) * | 2013-03-05 | 2014-09-12 | Xiang Zhiyong | 电子烟微控制器的多任务执行方法及装置 |
CN111061248A (zh) * | 2019-12-12 | 2020-04-24 | 东风电驱动系统有限公司 | 一种基于时间片切片的任务调度系统及方法 |
-
2009
- 2009-09-21 CN CN2009101960252A patent/CN102023892A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014134810A1 (zh) * | 2013-03-05 | 2014-09-12 | Xiang Zhiyong | 电子烟微控制器的多任务执行方法及装置 |
CN111061248A (zh) * | 2019-12-12 | 2020-04-24 | 东风电驱动系统有限公司 | 一种基于时间片切片的任务调度系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101751289B (zh) | 一种嵌入式实时操作系统的混合调度方法 | |
CN100485605C (zh) | 一种多任务实时操作系统的实现方法 | |
CN101529383B (zh) | 任务处理装置 | |
CN101796487B (zh) | 虚拟队列处理电路以及任务处理器 | |
CN101344843B (zh) | 一种指令级并行处理方法 | |
US9104500B1 (en) | Lock-free job scheduler for multi-processor systems | |
CN102043667A (zh) | 一种嵌入式操作系统的任务调度方法 | |
Wang et al. | Improving mapreduce performance with partial speculative execution | |
CN104199730A (zh) | 一种基于同步i/o复用机制的单线程多任务处理方法 | |
CN103346902B (zh) | 数据采集调度的方法及系统 | |
JP2017509059A (ja) | 電力消費を低減するための割り込み処理の同期化 | |
US9274829B2 (en) | Handling interrupt actions for inter-thread communication | |
CN109445939A (zh) | 一种基于主动出让机制的软实时调度内核的调度方法 | |
CN102279769A (zh) | 一种面向嵌入式Hypervisor 的中断虚拟化操作方法 | |
CN108182082A (zh) | 一种流水处理双发射处理器记分板电路 | |
CN103617071A (zh) | 一种资源独占及排它的提升虚拟机计算能力的方法及装置 | |
CN102023892A (zh) | 基于微处理器的多任务时间片实时处理方法 | |
CN101719116B (zh) | 基于异常处理的事务存储访问机制的实现方法及所用系统 | |
CN100440153C (zh) | 处理器 | |
CN107526622A (zh) | Linux的快速异常处理方法及装置 | |
CN101183317A (zh) | 实时中断与多个进程状态同步的方法 | |
CN103218251B (zh) | 多核系统级芯片的验证方法和装置 | |
Goyette | An analysis and description of the inner workings of the freertos kernel | |
McKenney | ‘Real time’vs.‘real fast’: How to choose? | |
CN101349975B (zh) | 一种在嵌入式操作系统上实现中断底半部机制的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110420 |