浮点上下文切换方法

文档序号:8361280阅读:346来源:国知局
浮点上下文切换方法
【技术领域】
[0001]本发明属于计算机软件控制领域,涉及一种浮点上下文切换方法。
【背景技术】
[0002]在机载嵌入式实时操作系统中,用户通常需要把浮点任务和非浮点任务配合使用,但是如果操作系统对每一个任务均的浮点上下文均进行切换则会造成大量的系统开销,影响系统性能,需要提出新的浮点任务和非浮点任务切换方法,为混合任务环境下任务的闻效切换提供可能。

【发明内容】

[0003]为了解决【背景技术】中存在的浮点任务和非浮点任务混和调度的问题,本发明提供了一种可提高任务切换的性能的浮点上下文切换方法。
[0004]本发明的技术解决方案是:本发明提供了一种浮点上下文切换方法,其特殊之处在于:所述浮点上下文切换方法包括以下步骤:
[0005]I)创建任务;所述任务包括前继任务以及后继任务;所述前继任务是被切换出处理器的任务;所述后继任务是切换进处理器的任务;
[0006]2)根据用户输入的参数判断步骤I)中创建的任务是否是浮点任务;若是,申请浮点上下文空间并将该空间的首地址记录在任务控制块中的成员fpContext中;若否,则设置任务控制块中的成员fpContext为NULL ;
[0007]3)判断前继任务和后继任务的类型;
[0008]4)根据前继任务和后继任务的类型对浮点上下文进行切换。
[0009]上述步骤3)中前继任务和后继任务的类型包括:浮点任务切换到浮点任务、浮点任务切换到非浮点任务、非浮点任务切换到浮点任务以及非浮点任务切换到非浮点任务。
[0010]上述步骤3)中的类型是浮点任务切换到浮点任务时,所述步骤4)的具体实现方式是:对浮点任务的上下文进行保存和恢复。
[0011]上述步骤3)中的类型是浮点任务切换到非浮点任务时,所述步骤4)的具体实现方式是:暂时不进行浮点上下文的保存,将前继任务控制块中的成员fpContext传递给后继任务,仅将浮点任务的浮点上下文地址传递给了非浮点任务,将该保存工作推迟到切换浮点任务时才进行。
[0012]上述步骤4)中将前继任务控制块中的成员fpContext传递给后继任务的具体实现方式是将前继任务控制块中的成员fpContext进行标记后赋值给后继任务控制块中的成员 fpContext ο
[0013]上述步骤3)中的类型是非浮点任务切换到浮点任务时,所述步骤4)的具体实现方式是:
[0014]4.1)判断前继任务控制块中的成员fpContext是否为NULL ;若是,则进行步骤4.2);若否,则进行步骤4.3);
[0015]4.2)在该任务运行前,没有运行过浮点任务:不需要进行浮点上下文的保存工作,仅需要恢复浮点上下文;
[0016]4.3)在该任务运行前运行过浮点任务:如果前继任务的浮点上下文与后继任务的浮点上下文不一致,则将浮点上下文保存到前继任务控制块所传递的上下文地址中,并清除前继任务控制块中的标记,恢复后继任务的浮点上下文,否则清除前继任务的浮点上下文。
[0017]上述步骤3)中的类型是非浮点任务切换到非浮点任务时,所述步骤4)的具体实现方式是:
[0018]4.1)判断前继任务控制块中的成员fpContext是否是NULL ;若是,则进行步骤4.2);若否,则进行步骤4.3);
[0019]4.2)在该任务运行前,没有运行过浮点任务;既不需要进行浮点上下文保存也不需要进行浮点上下文恢复;
[0020]4.3)在该任务运行前运行过浮点任务,将前继任务的浮点上下文传递到后继任务。
[0021]上述步骤4.3)中将前继任务的浮点上下文传递到后继任务的具体实现方式是将前继任务控制块中的成员fpContext的值赋给后继任务控制块中的成员fpContext,然后清除前继任务控制块中的fpContext。
[0022]本发明的优点是:
[0023]本发明是仅在需要切换浮点上下文时进行切换,即仅在切换浮点任务时才切换浮点上下文。具体来说就是如果被切换的是非浮点任务,那么认为在该任务中不会破坏浮点上下文,即不需要保存浮点上下文,直到切换到浮点任务时才进行浮点上下文的保存和恢复工作,有效的提高了操作系统任务切换的性能。
【附图说明】
[0024]图1是本发明所提供方法的流程示意图。
【具体实施方式】
[0025]在任务创建时,判断用户输入的参数,如果是浮点任务,那么申请浮点上下文空间并将该空间的首地址记录在任务控制块中的成员fpContext中;否则设置该成员为NULL。
[0026]在任务切换时(称被切换出处理器的任务为前继任务,称切换进处理器的任务为为后继任务),可能会发生以下四种情况:
[0027]1、浮点任务切换到浮点任务:
[0028]在这种情况下,由于两个任务均会进行浮点运算,所以需要保存和恢复浮点上下文。
[0029]2、浮点任务切换到非浮点任务:
[0030]在这种情况下,由于后继任务不会进行浮点运算,所以可以暂时不保存上下文。
[0031]3、非浮点任务切换到浮点任务:
[0032]在这种情况下,由于后继任务会进行浮点运算但是前继任务不进行浮点运算,所以需要恢复上下文。
[0033]4、非浮点任务切换到非浮点任务:
[0034]在这种情况下,由于两个任务均不会进行浮点运算,所以不需要保存和恢复上下文。
[0035]根据以上四种情况分别采取不同的处理措施:
[0036]1、浮点任务切换到浮点任务
[0037]在这种情况下,进行浮点上下文保存和恢复。
[0038]2、浮点任务切换到非浮点任务
[0039]在这种情况下,暂时不进行浮点上下文的保存工作,而是将前继任务控制块中的成员fpContext传递给后继任务,即将前继任务控制块中的成员fpContext进行标记后赋值给后继任务控制块中的成员fpContext。此时,系统不需要进行浮点上下文的保存工作,仅将浮点任务的浮点上下文地址传递给了非浮点任务,将该保存工作推迟到切换浮点任务时才进行。
[0040]3、非浮点任务切换到浮点任务
[0041]在这种情况下还需要区分为两种情况:
[0042]3.1)前继任务控制块中的成员fpContext为NULL,即在该任务运行前,没有运行过浮点任务:在这种情况下,不需要进行浮点上下文的保存工作,仅需要恢复浮点上下文。
[0043]3.2)前继任务控制块中的成员fpContext不为NULL,即在该任务运行前运行过浮点任务:在这种情况下,如果前继任务
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1