论文部分内容阅读
Forth操作系统凭借其可扩展、可重构、可移植等诸多优点,在嵌入式领域有着广泛应用。早期的Forth多任务操作系统是基于CPU方式进行调度的,此方式虽然可以对突发事件进行实时处理,但这种方式打破了Forth虚拟机的工作节奏,其实时性的获得是在任务切换时,以消耗大量的信息存储时间和存储空间为代价的。正因为如此,基于Forth虚拟机调度的操作系统逐渐成为领域研究的热点。在基于Forth虚拟机的操作系统中,任务运行信息的传递都是通过堆栈来实现的。在任务切换时,系统只需保存和恢复数据堆栈的栈顶指针就可以完成上下文切换,大大减少了内存空间的占用和时间的消耗。但基于Forth虚拟机的操作系统自身也存在着缺陷,其调度时刻必须与Forth虚拟机指令周期同步,现有调度机制不支持实时调度,导致应用受限。针对该问题,本课题在基于Forth虚拟机的操作系统中,新定义了一种任务类型——中断任务,并且设计了一套中断任务处理机制,通过创建中断任务、链接突发事件执行体,使中断任务、终端任务和后台任务链接在一起,共同构成任务循环链表。当有突发事件发生,通过触发中断的方式使中断任务就绪,在保证原Forth系统多任务调度稳定性的前提下,调度中断任务去处理突发事件,以增加Forth系统对突发事件的实时处理能力。以上工作在移植了开源AmForth系统的Arduino UNO硬件平台上得到了验证,实验结果表明,改进后的Forth操作系统,其中断任务的等待时间明显地小于原系统,验证了本课题提出的基于Forth虚拟机的实时多任务调度具有可行性和有效性。本课题的创新点是:在保证Forth虚拟机的固有特性以及兼容现有轮询调度的前提下,使Forth多任务操作系统具备了通过实时调度去处理突发事件的能力。