存储器管理系统以及在多任务系统中的任务控制器技术方案

技术编号:2865598 阅读:171 留言:0更新日期:2012-04-11 18:40
当在空闲任务运行期间产生中断时,在将CPU寄存器的值存储在当前堆栈区域中之后,该当前堆栈区域转换为仅用于处理中断的堆栈区域。此时,堆栈具有将堆栈区域重叠在仅用于处理中断的堆栈区域之上的结构。当空闲处理期间产生中断时,使用处理中断的堆栈,以便覆盖其中存储CPU寄存器值的区域。因此,通过一般的使用中断处理中使用的堆栈来减小RAM的使用量,其中在多任务系统中将堆栈用于空闲处理。

【技术实现步骤摘要】

本专利技术涉及一种对软件堆栈存储器的管理方法,具体地说,本专利技术涉及一种在执行多任务系统时用于减少堆栈存储器可利用量的程序结构。
技术介绍
随着程序中控制的复杂化,可以用计算机一次将两个或多个任务分别处理为工作单元的多任务系统已经得到普遍应用。多任务系统的采用可以有效转换和执行多个任务。图3示意性示出了一个在常见多任务系统中处于使用状态的RAM例子。图3中用参考数字标注的区域表示用在各项任务中的堆栈存储器区域(以下称为堆栈)。特别的,在RAM上,构造了具有多项任务1、任务2、...和任务n的多个堆栈,一个用于空闲任务的堆栈,和一个只用于处理由多任务系统执行的中断的堆栈。这些堆栈分别由堆栈301、311和321、返回PC存储区域302、312和322、PSW存储区域303、313和323以及CPU寄存器存储区域314、324和304组成。此外,用于处理中断的堆栈包括在产生中断时存储任务SP的返回SP存储区域305以及处理用在中断处理序列中的中断的堆栈区域306。在这里,中断处理表示每隔规定的时间,在例如定时器控制下通过在一任务或处理由外部因素执行时临时中断该任务(普通处理)而执行的处理。例如,在任务1运行期间产生中断时,通过使用堆栈311来执行的任务1被临时中断。此时,PC寄存器的当前值存储在返回PC存储区域312。PSW寄存器的当前值存储在PSW存储区域313中。此外,任务1中使用的CPU寄存器值存储在CPU寄存存储区域314中。然后,任务1的SP寄存器值存储在返回SP存储区域305中,该区域位于处理中断时使用的堆栈区域中。设置SP寄存器的值,以标明用于处理中断的返回SP存储区域305和堆栈区域306的边界,即堆栈区域306的末端区域。因此,堆栈区域从任务堆栈转换为处理中断的堆栈。完成中断处理后,将存储在SP存储区域305的值设置到SP寄存器,以便将堆栈区域转换为任务区域。此后,将存储在CPU寄存器存储区域314中的值设置到每个CPU寄存器,并将存储在PSW存储区域313和返回PC存储区域312中的值也返回到PSW寄存器和PC寄存器,使得堆栈区域可以返回到初始任务1。在这样的结构中,当多任务系统执行多项任务时,可以执行规定的中断处理(例如,参考专利文献1 JPA8123698)。然而,在图3所示的堆栈结构中,确定产生中断时存储的CPU寄存器的释放能力大体上与处理任务的内容无关。很多无需存储数据的寄存器可能包括在其中,使得存储器被多余地消耗掉了。为了适应这一点,一种方法是在例如中断处理的第一部分就区分各种存储数据的CPU寄存器。然而,该方法的缺点是恶化了中断响应性能。
技术实现思路
本专利技术解决了上述问题,包括用于执行多任务系统的n个任务堆栈、一个用于处理中断并由每个任务堆栈共享功能的堆栈,以及分别与产生中断处理时执行的任务堆栈并联的PC、PSW和CPU寄存器。用于处理中断的堆栈区域由n个任务堆栈中的任何一个共享和使用。在产生中断处理时,PC、PSW和CPU寄存器的值并列放入当前任务堆栈之后,堆栈指针跳转到中断处理端。完成中断处理之后,堆栈指针跳转到任务堆栈,存储在该任务堆栈中的PC、PSW和CPU寄存器值从该任务堆栈返回以重新开始任务运行。如上所述,本专利技术的效果是,使用实时OS(操作系统)的系统任务堆栈区域和中断堆栈区域同时以双重方式使用,从而在整个系统中减小了存储器的可利用量。因此,多任务系统可以在小容量存储器下有利地运行。附图说明图1为示意性表示本专利技术实施方式的堆栈结构的框图;图2为示意性表示常规多任务系统中堆栈结构的框图;图3为特别地表示常规多任务系统中堆栈使用状态的框图;图4为特别地表示本专利技术的多任务系统中堆栈使用状态的框图; 图5为表示常规多任务系统中产生中断时堆栈转换处理内容的流程图;图6为表示本专利技术的多任务系统中产生中断时堆栈转换处理内容的流程图;图7为表示一个模式跳转到本专利技术的低功率消耗运行模式时堆栈转换处理内容的流程图;图8为表示在完成中断时堆栈转换处理内容的流程图;图9为表示在空循环情况下空闲任务处理内容的流程图;图10为表示一个模式转换到低功率消耗运行模式时的空闲任务处理内容的流程图;图11为特别地表示一个模式转换到低功率消耗运行模式时用于空闲任务的堆栈结构和用于处理中断的堆栈结构的框图;图12表示第一和第二实施方式中的任务控制器;图13表示第三实施方式中的任务控制器。具体实施例方式下面根据附图描述本专利技术的实施方式。(第一实施方式)图1为表示一种根据本专利技术的多任务系统中堆栈的使用途径的框图。就设置处理中断的堆栈107的位置而言,该多任务系统比图2所示的常规多任务系统更有特色。在图2所示的常规多任务系统中,三个任务102、104和106以及一个中断处理程序108在操作系统109(以下称之为OS)上运行。堆栈区域101、103、205和207分别独立的为任务或程序做准备。三个任务中具有最低优先级的任务称为空闲任务106。在执行该空闲任务时,表明一种该系统没有任务可处理以及外部中断等待进入的状态。在图1所示的根据本专利技术的多任务系统中,三个任务102、104和106以及一个中断处理程序108也在OS 109上运行,堆栈区域101、103、105和107分别独立的为任务或程序做准备。此外,也准备好三个任务中具有最低优先级的空闲任务106。在这种情况下,将处理中断的堆栈107的位置设置为与用于空闲任务的堆栈区域105重叠。在中断处理时的堆栈区域通过覆盖(堆栈破坏)用在空闲任务处理中的该堆栈区域来运行。图3表示在常规多任务系统中的堆栈内容,包括两个普通的任务堆栈区域,一个用于空闲任务的堆栈区域和一个用于处理中断的堆栈区域。在图3中,最初在任务1运行时,堆栈指针(以下称为SP)指向用于任务1的堆栈区域311,任务1利用该区域处理程序。在此状态下,鉴于硬件原因,当产生中断以及CPU接收该中断时,程序计数器(以下称为PC)和处理器状态字(以下称为PSW)的内容分别存储在堆栈区域312和313中。SP的值自动减去PC和PSW的大小。然后,CPU将PC值移动到中断处理程序的第一位置,以执行OS中断输入处理。图5表示常规多任务系统中,在执行任务期间接收中断时的OS中断输入处理的流程图。在执行任务1期间产生中断的情况将在下面描述。最初,在步骤S501中,CPU寄存器值存储在堆栈区域314中。CPU寄存器的数量根据CPU种类而有所不同。最简单的安装方法是存储所有安装在CPU上的CPU寄存器。然后,在步骤S502中,SP的当前值(其等于相关任务堆栈的最后一个地址)存储在位于处理中断的堆栈区域末端的返回SP存储区域305中。在完成中断处理后,该处理对于再次将SP指定的位置返回到任务堆栈是必要的。然后,在步骤S503中,处理中断的堆栈区域306的末端地址代替了SP,以便将该堆栈从任务堆栈区域314转换为处理中断的堆栈区域306。此时,要注意设置SP的值,使得用于任务的返回SP存储区域305不会被覆盖。最后,在步骤S504中,调用由应用程序定义的中断处理程序函数,以便在步骤S505中执行该应用程序的中断控制程序。该处理以函数返回的形式从步骤S505返回OS中断输入处理,以便在此后跳转到OS中断退出处理。图8是本文档来自技高网
...

【技术保护点】
一种用于管理多任务系统堆栈的方法,包括下列步骤:根据中断的产生,将CPU的内部信息存储在一个被中断任务的任务堆栈中作为第一区域;在存储所述内部信息之后,将堆栈指针的值存储在中断处理堆栈的指定第一位置;将所述堆栈指针设 置到所述中断处理堆栈的指定第二位置;以及开始中断处理,其中,所述中断处理堆栈的指定第二位置对应于特定任务的堆栈区域中的所述第一区域的指定位置。

【技术特征摘要】
JP 2003-7-30 282887/031.一种用于管理多任务系统堆栈的方法,包括下列步骤根据中断的产生,将CPU的内部信息存储在一个被中断任务的任务堆栈中作为第一区域;在存储所述内部信息之后,将堆栈指针的值存储在中断处理堆栈的指定第一位置;将所述堆栈指针设置到所述中断处理堆栈的指定第二位置;以及开始中断处理,其中,所述中断处理堆栈的指定第二位置对应于特定任务的堆栈区域中的所述第一区域的指定位置。2.如权利要求1所述的管理堆栈的方法,其中,所述第一区域包括用于存储从中断处理返回控制所需的任务控制信息的第二区域;和直接设置在该第二区域之后的第三区域,以便存储除所述任务控制信息之外的CPU内部信息,以及在所述特定任务的任务堆栈的第一区域中的指定位置对应于所述第一区域中第三区域的顶端地址。3.如权利要求1所述的管理堆栈方法,其中,所述中断处理堆栈的指定第一位置是所述中断处理堆栈的顶端地址。4.如权利要求1所述的管理堆栈方法,其中,所述中断处理堆栈的指定第二位置直接位于所述中断处理堆栈的指定第一位置之后。5.如权利要求1所述的管理堆栈方法,其中,所述第一区域包括用于存储从中断处理返回控制所需的任务控制信息的第二区域;和直接位于该第二区域之后的第三区域,以便存储除所述任务控制信息之外的CPU内部信息,以及在所述特定任务的任务堆栈的第一区域中的指定位置是通过将第一区域中所述第三区域的顶端地址通过指定的地址差值的校正获得的。6.如权利要求5所述的管理堆栈方法,其中,所述地址差值是用于指定存储在所述特定任务中使用的CPU内部信息所需的区域。7.如权利要求5所述的管理堆栈方法,其中,所述地址差值事先给定为一常量。8.如权利要求5所述的管理堆栈方法,其中,所述地址差值通过执行所述特定任务来设置。9.如权利要求2所述的管理堆栈方法,其中,所述任务控制信息包括至少一个程序计数器和一个指示CPU状态的程序状态字(PSW)。10.如权利要求1所述的管理堆栈方法,其中,所述特定任务是无需使用CPU内部信息而自循环的空闲任务。1...

【专利技术属性】
技术研发人员:小玉将义小林圭太
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:JP[日本]

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

1