当前位置: 首页 > 专利查询>云南大学专利>正文

基于Forth虚拟机的任务调度方法及装置制造方法及图纸

技术编号:16644403 阅读:68 留言:0更新日期:2017-11-26 16:44
本发明专利技术涉及一种基于Forth虚拟机的任务调度方法及装置,将任务划分为终端、后台、中断三种任务类型,把任务控制表TCB中任务状态设置为Forth向量定义,通过创建与Forth虚拟机指令周期同步的任务调度循环机制,在无需状态判定只需保存或恢复当前数据栈指针的情况就能在预定时刻精确调度切换每一个任务。现场保护需要将当前返回栈指针压入数据栈,将此数据栈指针保存到该任务的用户变量区中;恢复现场需要从该任务的用户变量区里恢复SP,将栈顶值存入返回栈指针。采用本发明专利技术提供的调度方法及装置能够在确保良好的重构、扩展、移植、交互等Forth系统固有特性的前提实现精简高效,满足特定嵌入式应用的实时性要求。

Task scheduling method and device based on Forth virtual machine

The invention relates to a device and task scheduling method based on Forth virtual machine, the task is divided into terminal, background, interrupt three types of tasks, the task control table task state TCB is set to Forth the definition of vector, by creating a Forth virtual machine instruction cycle synchronization task scheduling cycle mechanism, determine the only save the current stack pointer or restore the data situation can be switched at predetermined time precise scheduling of each task in the free state. Field protection needs to press the current returned stack pointer into the data stack, store the data stack pointer into the user variable area of the task; recover the scene, and recover the SP from the user variable area of the task, and store the stack top value into the returned stack pointer. The scheduling method and device provided by the invention can simplify the efficiency and meet the real-time requirement of the particular embedded application under the premise of ensuring the inherent characteristics of the Forth system such as good reconstruction, expansion, transplantation and interaction.

【技术实现步骤摘要】
基于Forth虚拟机的任务调度方法及装置
本专利技术涉及一种基于Forth虚拟机的任务调度及装置,属计算机操作系统

技术介绍
Forth语言本身就是一种过程控制语言和一种快速开发环境,而不仅仅是一个单纯的编程工具,具有很强的交互性、重构性、移植性和自扩展能力,以及高效的生成代码,甚至可以快速构造出一个实时多任务操作系统。一直以来,基于Forth虚拟机(FVM)的嵌入式多任务操作系统(FVMOS)究竟采用何种多任务调度策略始终是Forth界长期争论的焦点,以至于在先后形成的FIG-Forth、Forth-79、Forth-83、ANSIX3.215-1994、ISO/IEC15145:1997、Forth-2012等标准中均未出现相关的内容。与直接基于CPU处理器架构的多任务操作系统不同,FVMOS的实现有其独特性,若引入抢占式调度,势必会破坏虚拟机的硬件抽象,从而散失固有的重构、扩展、移植等特性。按照以往的方式,若采用抢占式调度,同时具备并发(终端和后台)、定时和中断三种任务类型,则实时性的保证是以数十项复杂的CPU现场保护与恢复以及丢失重构、扩展、移植等特性为代价的。此外,如果存在终端任务,这种中断驱动的强制调度还会严重干扰和打乱Forth系统特有的在线交互过程。
技术实现思路
本专利技术的目的是克服现有技术的不足,提供一种精简高效的基于Forth虚拟机架构的嵌入式任务调度方法及装置。本专利技术提供一种基于Forth虚拟机任务调度方法,包括:将当前返回栈指针,即指向PAUSE模快后的断点,压入数据栈;将当前数据栈指针保存到当前任务的tcb[sp];得到下一个任务status里pass或wake对应过程的pfa,并压入返回栈;FVM虚拟机开始跳转去执行PASS或WAKE过程;若是pass,rp0和tcbn仍在数据栈里。PASS模快将沿着多任务循环链表不断循环,跳过处于pass状态的任务,直到遇到wake为止;若是wake,rp0和tcbm仍在数据栈里。WAKE模快将恢复处于wake状态任务的数据栈和返回栈,并由FVM实现跳转;当退出PAUSE模块时,FVM又开始返回到PAUSE后面的断点处开始执行。本专利技术提供一种基于Forth虚拟机的任务调度装置,包括:Flash中存放在FVM上运行可重入的Forth代码以及在其之上由高级定义组成的任务创建、任务初始化、任务激活、任务调度、任务控制等模块;RAM中有若干与用户任务相对应的由任务控制块TCB、返回栈RS、数据栈DS等组成的用户变量区,以及文本输入缓冲区TIB、其他用户变量区和普通变量区等存储项;在Flash的Forth字典里创建一个特殊的任务定义,初始化任务用户变量区里的TCB和堆栈区,链接任务体,启动任务调度,并可以按需要随时随停止、休眠、唤醒某个任务。与现有技术相比,本专利技术提供的一种基于Forth虚拟机的任务调度方法及装置在无需状态判定的情况下,就能在预定的时刻精确调度切换每一个任务。通常,轮询调度是在TCB的status单元里保存任务的状态,每次任务调度时都去循环搜索处于wake状态的任务,而在本专利技术中,通过引入Forth向量字pass和wake,可以使调度过程进一步优化到省去状态比较和循环跳转。这时,TCB里的status存储的就不再是任务状态,而是可随时置换的pass或wake向量字。与现有技术相比,本专利技术提供的一种基于Forth虚拟机的任务调度方法及装置任务切换定位在Forth定义之间,把调度时刻精确控制在FVM每次跳转执行下一条Forth指令时,与FVM指令周期保持同步,因此只需在保存或恢复当前数据栈指针的情况下,快速完成任务调度切换。现场保护仅需要将当前返回栈指针压入数据栈,并将当前数据栈指针保存到该任务的用户变量区里;而恢复现场仅需要从该任务的用户变量区里恢复SP,并将栈顶值存入返回栈指针。本专利技术的有益效果在于能够在确保良好的重构、扩展、移植、交互等Forth系统固有特性的前提下,实现精简高效,并满足特定嵌入式应用的实时性要求。附图说明图1为一个实施例中基于Forth虚拟机任务调度的结构示意图。图2为一个实施例中任务调度方法的流程图。图3为一个实施例中PASS和WAKE模块执行过程示意图。图4为一个实施例中任务调度装置的结构示意图。图5为一个实施例中中断任务调度过程示意图。具体实施方式以下参照附图并结合实施例,对本专利技术作进一步详细说明。在一个实施例中,一种基于Forth虚拟机的任务调度方法的结构,如图1所示:Flash中存放在FVM上运行的Forth代码,FBS底层是Code定义,上层是高级定义,在其之上是由高级定义组成的FVMOS。由FVMOS可以创建隶属Stask的若干用户任务。RAM中有若干与用户任务相对应的由任务控制块TCB、返回栈RS、数据栈DS等组成的用户变量区,以及文本输入缓冲区TIB、其他用户变量区和普通变量区等存储项。逻辑上,FBS、FVMOS都可以进行RAM操作,但物理上,系统的存取操作被封装在FBS的底层Code定义中,实际操作是透过这些分类存取指令完成的。与抢占式系统不同,本专利技术的调度方法及装置支持终端任务、后台任务和中断任务等三种任务类型,虽然三种任务的TCB内容有差异,但都可以连接到多任务循环链表中。FVMOS架构应当在Forth核心词典和主控循环Quit之上,与直接在寄存器处理器上架构操作系统有着明显的差异。若仅考虑单核Forth虚拟机,其可选的实时多任务操作系统实现方式为:利用Forth自身的特点,直接用汇编、C语言或Forth自生成器(可异构)生成一个包含Forth虚拟机的基本系统FBS(ForthBasicsystem),也就是Stask(SystemTask,第一个终端任务),之后在其上定义封装:内存管理、任务管理、设备管理、错误陷井等FVMOS原语构件。若存储在Flash中的FBS和FVMOS是可重入的,那么新创建的任务Utask(UserTask)只在RAM用户变量区中建立任务数据空间(运行在一个Forth虚拟机之上,适合于多核SMP模式)。同时,初始Utask的任务控制块TCB,并将新的TCB插入到系统的TCB链表中,进入多任务调度。在一个实施例中,一种基于Forth虚拟机的任务调度方法的TCB结构,如下表所示:FVMOS的任务控制块TCB,就是用户变量区里与多任务调度有关的一块特殊区域。TCB表中每一项都是通过用户变量USER定义的,其中基本表项(前六项)是每个任务的必备项,而附加表项是专门针对终端任务而设置的。附加表项(I/O驱动)存放的是该终端任务的I/O驱动向量,与该任务具体连接的终端设备有关,附加表项(解释器操作)存放的是该终端任务文本解释器与状态有关的操作向量。需要特别指出的是,TCB没有保留返回栈指针,而是将当前返回栈指针放在数据栈栈顶。在上述内存管理方式下,现场保护仅需要将当前返回栈指针RP压入数据栈,并将当前数据栈指针SP保存到该任务的用户变量区里。而恢复现场仅需要从该任务的用户变量区里恢复SP,并将栈顶值存入RP指针。在一个实施例中,如图2所示,一种基于Forth虚拟机的任务调度方法的PAUSE模块,包含如下步骤:S101:将当前返回栈指针(指向PAUSE后的断点)本文档来自技高网...
基于Forth虚拟机的任务调度方法及装置

【技术保护点】
一种基于FORTH虚拟机的任务调度方法,其步骤包括:(1)将当前返回栈指针,即指向PAUSE模快后的断点,压入数据栈;(2)将当前数据栈指针保存到当前任务的tcb[sp];(3)得到下一个任务status里pass或wake对应过程的pfa,并压入返回栈;(4)FVM虚拟机开始跳转去执行PASS或WAKE过程;(5)若pass,rp

【技术特征摘要】
1.一种基于FORTH虚拟机的任务调度方法,其步骤包括:(1)将当前返回栈指针,即指向PAUSE模快后的断点,压入数据栈;(2)将当前数据栈指针保存到当前任务的tcb[sp];(3)得到下一个任务status里pass或wake对应过程的pfa,并压入返回栈;(4)FVM虚拟机开始跳转去执行PASS或WAKE过程;(5)若pass,rp0和tcbn仍在数据栈里,PASS模快将沿着多任务循环链表不断循环,(6)跳过处于pass状态的任务,直到遇到wake为止;(7)若wake,rp0和tcbm仍在数据栈里,WAKE模快将恢复处于wake状态任务的数据栈和返回栈,并由FVM实现跳转;(8)当退出PAUSE模块时,FVM又开始返回到PAUSE后面的断点处开始执行。2.根据权利要求1所述的方法,其特征在于:基于Forth虚拟机的任务调度架构应当在Forth核心词典和主控循环QUIT之上,包含终端任务、后台任务和中断任务三种任务类型。3.根据权利要求1所述的方法,其特征在于:现场保护需要将当前返回栈指针RP压入数据栈,将当前数据栈指针SP保存到该任务的用户变量区中;而恢复现场仅需要从该任务的用户变量区中恢复SP,并将栈顶值存入RP指针。4.根据权利要求1所述的方法,其...

【专利技术属性】
技术研发人员:代红兵周永录王丽清
申请(专利权)人:云南大学
类型:发明
国别省市:云南,53

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1