多媒体计算机操作系统及方法.pdf

上传人:Y948****062 文档编号:656374 上传时间:2018-03-02 格式:PDF 页数:64 大小:2.10MB
返回 下载 相关 举报
摘要
申请专利号:

CN92114986.7

申请日:

1992.12.26

公开号:

CN1075021A

公开日:

1993.08.04

当前法律状态:

终止

有效性:

无权

法律详情:

专利权有效期届满IPC(主分类):G06F 9/46申请日:19921226授权公告日:19980603期满终止日期:20121226|||保护期延长|||授权|||公开|||

IPC分类号:

G06F9/46; G06F13/00

主分类号:

G06F9/46; G06F13/00

申请人:

国际商业机器公司;

发明人:

唐纳德·E·卡蒙

地址:

美国纽约

优先权:

1992.01.31 US 07/829,201

专利代理机构:

中国国际贸易促进委员会专利代理部

代理人:

王以平

PDF下载: PDF下载
内容摘要

一种调度执行多媒体计算机系统中遇到的周期循环硬的、实时任务随机组合的操作系统,这在多任务计算机工作环境是有用的。具有相当短的执行周期的循环出现的计算机任务可以被有效地进行调度,减少了处理器资源,其方法是:将所有活动的循环任务都放到执行队列中,每当一给定任务执行完,就对队列中任务的执行顺序重新排列,如果用调度任务时处理器所消耗的任务调度额外开销的减少量来衡量的话,本发明与先有技术相比,改善了50—100%。

权利要求书

1: 在多任务计算机系统中,控制执行计算机的随机变化的一组一个或多个重复的、硬的、实时完成截止时间关键的计算机任务的方法,其特点在于包括以下步骤: 在上述的计算机系统中装入需要启动的一个或更多上述任务;建立排序的任务执行优先级队列,根据上述任务需要的完成截止时间,该队列对应所有上述任务均具有一条登记项,上述这些登记项依据上述任务的完成截止时间按优先级排序;具有最早的上述完成截止时间的所述任务具有最高优先级; 从上述队列中被发现准备开始执行的上述具有最高优先级的登记项开始,执行上述任务。
2: 根据权利要求1的方法,其特征在于下列步骤: 当上述队列中的一条登记项的执行完成时,在该队列的登记项要重新排序。
3: 根据权利要求1的方法,其特征在于下列步骤: 当一个登记项执行完成时,就从上述队列中移动该登记项;并且 插入该登记项在上述队列的某个位置上,对应于新的完成截止时间等于上述循环任务的完成截止时间周期。
4: 根据权利要求2的方法,其特征在于下列步骤: 当一个登记项完成执行时,从上述队列中移走它;并且 插入该登记项在上述队列的某个位置上,对应于新的完成截止时间等于上述循环任务的完成截止时间周期。
5: 根据权利要求1的方法,其特征在于下列步骤: 对具有相同完成截止时间的上述任务排序,根据对应于上述登记项的任务的开始时间,上述开始时间最早的在具有相同完成截止时间的上述登记项中是最高优先级的登记项。
6: 根据权利要求2的方法,其特征在于下列步骤: 对具有相等完成截止时间的上述任务排序,根据对应于上述登记项的任务和开始时间,上述开始时间最早的在具有相同完成截止时间的上述登记项中是最高优先级的登记项。
7: 根据权利要求3的方法,其特征在于下列步骤: 对具有相等完成截止时间的上述任务排序,根据对应于上述登记项的任务和开始时间,上述开始时间最早的在具有相同完成截止时间的上述登记项中是最高优先级的登记项。
8: 根据权利要求1的方法,其特征在于下列步骤: 对应于至少一个不同时间的,非实时循环任务,插入一最低优先级登记项在上述队列中。
9: 根据权利要求2的方法,其特征在于下列步骤: 插入一最低优先级登记项在上述队列中,对应于至少一个时 间不同的,非实时循环任务。
10: 根据权利要求3的方法,其特征在于包括下列步骤: 插入一最低优先级登记项在上述队列中,对应于至少一个时间不同的,非实时循环任务。
11: 根据权利要求4的方法,其特征在于下列步骤: 插入一最低优先级登记项在上述队列中,对应于至少一个时间不同的,非实时循环任务。
12: 根据权利要求5的方法,其特征在于下列步骤: 插入一最低优先级登记项在上述队列中,对应于至少一个时间不同的,非实时循环任务。
13: 根据权利要求1-12中任何一种的控制计算机中执行的方法,其特征在于包括下列步骤: 建立另一个上述的排序的登记项队列,该登记项对应于已完成的上述执行任务,这些任务正等待它的下一次循环执行的开始时间,这个队列是以优先级排序,最高优先级指定给上述开始时间最早的登记项。
14: 根据权利要求1-12中任何一种的控制计算机中执行的方法,其特征在于包括下列步骤: 在上述队列中的每个上述任务都包括具有与上述相对应的上述截止时间相等的执行完成截止时间的所有上述任务。
15: 权利要求14的方法,其特征在于包括下列步骤: 建立另一个上述的排序的登记项队列,该登记项对应完成的上述执行任务,这些任务正等待它们的下一循环执行的开始时间,这个队列是以优先级排序,最高优先级指定给上述开始时间最早的登记项。
16: 在多项任务计算机系统中,周期重复的硬的实时完成截止时间任务和各不相同的随机组合在计算机中控制执行所用的操作系统,其特征在于包括: 根据所有上述任务所需要的任务执行完成截止时间建立排序的任务执行优先级队列的装置,在该队列中具有最高优先级的上述登记项对应于最早的上述任务执行完成截止时间; 扫描上述队列以便找到具有最高优先级的上述登记项的装置,上述登记项具有被确定为准备开始执行的任务;以及 导致确定为准备执行的任何上述任务开始执行的装置。
17: 权利要求16的系统,其特征在于包括: 当上述队列中的登记项执行完成时,重新排序该队列中的登记项的装置。
18: 权利要求16的系统,其特征在于包括: 一旦一个登记项执行完成,即从上述队列中移走上述登记项的装置,以及 重新将上述登记项插入到上述队列中的某个位置的装置,其对应着等于上述循环任务和完成截止时间周期的新的完成截止时 间。
19: 权利要求17的系统,其特征在于包括: 一旦一个登记项执行完成,即从上述队列中移走上述登记项的装置,以及 重新将上述登记项插入到上述队列中的某个位置的装置,其对应着等于上述循环任务和完成截止时间周期的新的完成截止时间。
20: 权利要求16的系统,其特征在于包括: 根据上述任务的开始时间,对具有相等完成截止时间的上述登记项,对应于上述登记项排序的装置,具有最早开始时间的登记项在上述具有相等完成截止时间的登记项中是具有最高优先级的登记项。
21: 权利要求17的系统,其特征在于包括: 根据上述任务的开始时间,对具有相等完成截止时间的上述登记项,对应于上述登记项排序的装置,具有最早开始时间的登记项在上述具有相等完成截止时间的登记项中是具有最高优先级的登记项。
22: 权利要求18的系统,其特征在于包括: 根据上述任务的开始时间,对具有相等完成截止时间的上述登记项,对应于上述登记项排序的装置,具有最早开始时间的登记项在上述具有相等完成截止时间的登记项中是具有最高优先级的 登记项。
23: 权利要求16的系统,其特征在于包括: 对应于至少一个时间不同的、非实时循环任务,将一最低优先级登记项插入在上述队列中的装置。
24: 权利要求17的系统,其特征在于包括: 对应于至少一个时间不同的、非实时循环任务,将一最低优先级登记项插入在上述队列中的装置。
25: 权利要求18的系统,其特征在于包括: 对应于至少一个时间不同的、非实时循环任务,将一最低优先级登记项插入在上述队列中的装置。
26: 权利要求19的系统,其特征在于包括: 对应于至少一个时间不同的、非实时循环任务,将一最低优先级登记项插入在上述队列中的装置。
27: 权利要求20的系统,其特征在于包括: 对应于至少一个时间不同的、非实时循环任务,将一最低优先级登记项插入在上述队列中的装置。
28: 根据权利要求16-27中任何一个在计算机中用于控制执行的系统,其特征在于包括: 建立另一个上述排序的登记项队列的装置,这些登记项对应于完成的上述执行任务,当上述任务在等待它们的下一个循环执行开始时间,该队列按最早发生的上述开始时间具有最高优先级 进行排序。
29: 根据权利要求16-27中任何一个在计算机中用于控制执行的系统,其特征在于包括: 在上述队列中的每一条上述登记项包括具有与该登记项对应的上述截止时间相等的执行完成截止时间的所有上述任务。
30: 根据权利要求29的系统,其特征在于包括: 建立另一个上述排序的登记项队列的装置,这些登记项对应于完成的上述执行任务,这些任务在等待它们的下一个循环执行开始时间,该队列按最早发生的上述开始时间具有最高优先级进行排序。

说明书


本发明一般性地涉及计算机操作系统,更准确地说是涉及适合于多任务工作的那些计算机操作系统,特别是在需要硬的、实时结果的环境,例如流行在多媒体计算机系统的应用。

    硬的,实时任务执行的调度已经是许多研究报告及论文的研究对象。在这些研究论文中,下面几篇有广泛代表性,它们描述了所面临的一般问题:

    V.Gafni,“硬实时系统运行的一种模式”,PP.69-74,IFAC实时程序设计国际会议,巴伦西牙,西班牙。1988年版。

    Henn,“硬、实时环境下可行的处理器分配”,实时系统期刊(The    Journal    of    Real-Time    Systems)Vol.1,PP.77~93,1989年版,Kluwer研究院出版公司。

    Xu    and    Parnas,“具有释放时间,截止时间,优先规定,以及互斥关系的调度技术”,IEEE软件工程会刊,Vol.16,No,3,1990年3月,pp.360-369Chetto    and    thetto,”对分布式硬实时系统中调度任务的可行性测试”,APⅡ,Vol.24,1990年,PP.239-252,AFCET    1990年版。

    在硬,实时操作环境下,任何任务执行的保用结果都必须通过一个固定的或“硬”的截止时间来得到,否则需要任务结果的应用就将失败,和/或其他等待执行的任务就可能受到不利影响。为了解决这个问题,每当一个作为多任务系统活动任务地新任务被调用时,通常采用诸如上述几篇论文中所提到的调度算法实现任务执行调度。一般的作法是:每当一个任务的到达时间或起动时间或调用时间发生时,将所要执行的任务送到执行队列或调度表中,同时正执行或在等待执行机会的其他任务一起,根据每个任务的优先级,将任务重新排队。这种方法相当于实施一个“N”阶排序程序,其中所需的最坏情况的排序重复数取决于执行队列中当前的任务数。

    一般人们所熟悉和推荐的方法是:在硬的、实时计算机系统中,任务调度最好根据各个任务的相对完成截止时间,通过对当前活动任务排队来进行,具有最早完成截止时间的就具有最高优先级。(参见IIenn,Xu等或Chetto等前面所引用过的论文)。然而,已经证明,完成这样一种方法的实际系统的建立是非常困难的。现执行任务中断的可能性以及在任务转换和执行调度表重新排序时的额外开销(over    head)的处理器资源的消耗都可能变成起抑制作用的部分。如Xu等人提到的那样,对于有些任务或部分任务可能是可剥夺的而有些任务是不可剥夺的这类更普遍的问题,存在许多未公布的解决方法。Xu等人提出的解决方法是采用“最早截止时间优先”的策略,但仍然存在很复杂的分支和受限的重新排序过程,不适用于实时按优先级重排队。

    在硬的实时环境下,当现执行任务的剥夺(中断)被批准时,已按优先级排序的任务的实时重新排队必须以有效的方式处理,否则,应付临界执行截止时间的能力就会由于在调度方法中调用的额外开销处理而丧失。Gafni(西班牙)提出了一种叫做“Reactive    Systems    Executive”(RSEX)的方法。这种方法采用最早截止时间准则在单处理机系统上进行优先级排队,但必须保持对所经过时间的跟踪,修改每个等待执行任务的剩余时间(P.72)并且还必须根据增加新的调用任务来修改任务表。这种方法改变优先级顺序并会导致已被中断的任务由于被新调用的、有较高优先级的任务占去了优先权而被中止。在动态改变任务组合时(例如在多媒体应用中所遇到的),这种作法就会导致不必要的处理,而且,或许还会在新调用的任务中有最高优先级,而它的执行周期要用掉的剩余时间多到使调度表中的其它任务不能完成时,导致完成截止时间的实际丢失。换句话说,具有最早所需的完成截止时间的中断任务可能获得执行的优先级,并用去很多剩余时间,以致使另一个任务,例如在中断发生前正在运行的那个任务,在高优先级中断任务已经运行完成以后,不能留下足够的时间来完成调度。

    在多媒体环境下,硬的实时任务往往周期性地重复出现。而且,由于应用或任务需要随机组合,任务的到达时间也将是周期性地同时发生。这样,根据规律,对系统中每个任务活动的调度将在任何任务开始执行之前完成。由于周期性重复的特性以及任务调度活动的集中,对系统调度给定任务组的能力产生很大影响。如上述现有技术所述,如果队列中有另一个任务具有更高优先级的话,调度活动可能导致任何现运行的当前任务的阻塞执行或者导致增加到任务交换时间的阻塞执行。计算机处理器资源,即实际任务执行(不是任务调度)可得到的处理器周期数,也由此受到不良影响。在硬的实时系统中,每个任务必须具有足够的可利用处理器周期资源剩余,以便执行并运行,完成它的每个重复执行周期,否则,请求任务的应用就将发生故障。另外,具有最短执行迭代或循环周期的任务变成用于确定一给定任务组是否能够全部调度的一个限制因素。

    当开始调度队列为空时,所检测的最坏情况“调度额外开销”,作为可得到的处理器资源的一部分,由常用调度算法产生,这种高度算法在任务的到达时间或调用时间把任务调度到优先级队列中,等式1给出最坏情况调度额外开销:

    等式1

    Overheadconv=Σi=1Ni·CschedTs=(N)(N+1)Csched2Ts]]>

    式中    Csched=执行调度代码的一个迭代的时间

    N=所要调度的任务数

    Ts=所调度任务组中的最短执行周期

    正如从等式1中可以看到的那样,由周期性重复任务的随机组合造成的调度额外开销与系统中现活动任务的最短执行周期成反比。与具有较短执行周期的任务不同,这对有长执行周期的任务是不公正的,这正是本发明所解决的一个问题。

    本发明的目的是提供一种用于多任务计算机环境的改进的操作系统,采用改进的任务调度系统和方法,减少任务调度处理器周期额外开销需用量。

    本发明的另一个目的是提供多媒体计算机系统操作方法和设备,适用于具有可变执行周期的周期性重复任务随机组合的调度。

    本发明涉及前述内容还有其它一些没有具体列举的目的,建立包括多任务系统中所有调用的当前活动任务的执行队列或表,而不管其当前状态(即,在等待起动时间或现执行状态)。任务在队列中的顺序由优先级确定。任务的优先级又是由它们相对的所需执行截止时间在任务完成时间确定的。这种按优先级排队法与先有技术的关键的差别在于它不是单独根据任务起动时间或结束时间仅在任务的到达时间进行优先级排队的调度表。另外在多任务系统中,每当一个任务执行完成,或者当一个新任务加到或撤离现活动任务的队列时,就要根据任务的相对优先级来检查和重新排列所要执行任务的调度表的顺序。可以表明,本发明的调度过程和技术所产生的处理器额外开销的减少得到50~100%的改善(或更多),这取决于具有宽范围变化的重复迭代频率的任务随机发生选择的恰当组合。这种改进在多媒体应用中是关键性的,多媒体应用中,较大量的硬的,实时的,随结果而定的用户应用可能同时运行。机器人应用也有类似的要求,运动以及跟踪系统反馈信号的复杂性必须进行管理,有类似要求的还有各种其他应用环境,都必须运行许多要提供硬的、实时传送方式结果的各不相同的任务,以达到用户应用的目标。

    下面将根据附图所示的最佳实施例,对本发明作进一步详细说明和描述,在附图中。

    图1表示计算机操作系统中作为控制代码及数据功能块的单元的排列以及数据流和控制流之间的相互关系。

    图2由图2A图2B组成,表示了调度技术的逻辑过程的流程图,这部分涉及将已调用任务加到包含现备用的已调用任务的备用表或队列中。

    图3由图3A和图3B组成,是图2所开始的过程的继续,但描述的是在建立任务执行优先级队列时采用的过程步骤。

    图4包括图4A和4B,如图4的布置简图所示。

    图4A是图3任务执行队列进程的继续,详细说明了对所要执行任务队列或调度表的扫描。

    图4B说明任务执行队列管理进程这部分,一给定任务或具有相同完成截止时间的任务组可能被启动执行。

    图5为中断处理进程,说明它对备用任务表的管理以及同活动任务执行队列相互配合的影响。

    图6由图6A和图6B组成,说明了在多中断系统中,恰在调用该任务或任务组之前调整(如果需要的话)任务执行队列中的登记项的进程流程。

    图7按照本发明的最佳实施例,以简图形式说明对循环任务,根据它们执行结束所需截止时间进行调度的情况。

    首先,描述在多媒体应用计算机系统范围内,本发明的最佳实施例。这样一种系统通常包括用来运行各种“多媒体”类型的用户应用的主机(例如个人计算机)、用来完成特定的多媒体应用支持任务的数字信号处理器以及数据和检测制光换器,例如访问和控制数字信号处理机和主机之间的相互联系的DMA。这样一种系统在我的申请号为071761534的中共同未决专利中有详细的表示和说明。在U.S专利4,794,517可以看到本发明用做操作系统的信号处理机的例子。

    简要地说,本发明的操作系统在U.S专利4,794,517中所示的数字信号处理机上得以实现,它是一种流水线信号处理机,具有一个带分离指令,数据存贮器及有关总线的实际的Harvard结构,一个运算器(ALV),一个乘法器/累加器,及适用于快速实现重复信号采样处理算法(诸如在多媒体环境下的一些应用中所流行的)的其它部件。上文所引用的专利在这里只是作为参考提出,作为本操作系统可以插入使用的一种适用的信号处理机的体系结构说明。很快就会明显地看到,本发明并不限于数字信号处理机范围,而是可以同样适用于大型计算机系统或者中型计算机系统,这些系统必须完成多任务的和/或硬的、实时算法周期重复任务的多动态可变组合。

    如上面简要描述,用于实时操作系统的典型调度方法在任务到达或者请求开始时完成任务执行调度。在这种系统中,当任务开始或到达时,根据该任务的优先级与系统中其它现运行任务或等待转入运行的任务相比较,将它放入执行队列中。这就需要执行N阶排序程序,迭代次数则取决于队列中现有任务数。由于在多媒体环境中特有的任务调用的周期性或重复性,任何随机的一批任务的任务到达或调用时间也会并将周期性地同时发生。因此,根据规律的重复性,对驻留在系统中的每个任务的调度必须在任何任务开始执行前完成。调度活动这样周期重复集中就会严重影响到处理系统调度给定的批任务或执行批任务的能力。在硬的,实时系统中,必须保证每个任务在和它们的重复周期相同的执行周期中的每一个周期结束之前都有足够的处理器周期资源以便执行完成。具有最短执行周期的任务就变成确定一给定批任务能否全部有效地调度的限制因素。

    对已描述的惯用的调度过程来说,任务调度在它们的到达或调用时间进行是造成为完成任务必需的处理器“额外开销”或处理器资源的要求量的原因。这一点由上面的等式1得以证明。

    在本发明中,调度过程是在任务执行结束或完成时间(而不是任务到达成开始时间)完成任务调度。任务完成时间决不会完全相同(而任务到达或开始时间就有可能),因为在任何给定时刻处理器中实际执行的任务只有一个,因此调度额外开销周期性集中的问题由本发明得以解决。重要的是,对任何给定任务的调度不需要在其它某个任务可能执行之前完成。例如,本发明中,如果一个优先级较高的任务到达或开始时,一个优先级较低的任务正在调度,较低优先级任务(任务B)的调度可以暂时挂起,而较高优先级任务A被实际调用,运行到完成,任务A完成之后,任务A在它规律性的重复或周期性循环间隔内重新排队,并且任务B的调度被取回,或任务B将完成,如果它是要运行的驻留和就绪的最高优先级任务的话。

    在本发明中,由于调度任务是在任务执行实时时间而不是任务开始或到达时间完成,常用的任务执行队列用一个队列或表来代替,它包括在所有时间的全部任务,不管它们当前的活动状态如何。在本发明最佳具体实施中,这个表叫做“Schedule”(“调度表”)。调度表相当于一个排序的,按优先级排队的表,对应着已经被调用执行的所有任务,不管它们的执行状态是正在执行或是等待执行状态。当任务运行完成并对它们下一个有规律重复的执行时间重新调度或当有任务被加到系统中或删去时,调度表就动态地重新排队和调整。

    用程序设计术语来说,调度表是一个双链表,表中一个登记项有一指针指向下一条登记项地址,在那里存有下一个优先级顺序的登记项;第二条登记项有指针返回到第一条登记项并向前指向下一条优先级登记项,等等。本发明中的调度表的登记项不是任务本身,而是“位置保持器”,为了对系统中所有任务调用各种固定频率的循环任务处理码,它们可以共有相同的循环任务重复周期或频率。本发明中,这些位置保持器叫做“帧管理者”(frame    manager)。帧管理者是调度表或队列中双链表的登记项,对应着与要执行的任务有关的排好序的优先级表。

    帧管理者在队列中或调度表中的次序是根据帧管理者被调用时的循环间隔上结束时间即任务完成截止时间确定的。最早的任务完成截止时间或结束时间是第一优先级登记项,其它帧管理者根据它们的结束时间按优先级排序连在后面,次最早结束时间是第二登记项,等等。一旦有二个或二个以上的帧管理者具有相同的结束时间(正如在重复周期形成相互关联处可能出现的那样),具有相等任务截止完成时间的帧管理者可以按其开始时间在双链表作进一步排序或按先级排队,具有最早开始时间任务的帧管理者最优先。在双链表中,选择作为调度表中第一帧管理者登记项的是个称作“调度表顶”的虚设的帧管理者,它是指向驻留着现最高优先级帧管理者的内存首地址的指针的位置保持器。双链表中最后的帧管理者登记项总是分配给非实时帧管理者,它被用来调用非实时任务,例如内务处理任务,它可以驻留在系统中,但只有在所有的硬、实时任务都已完成之后才执行它。

    在本具体实施例中,还有一个备用帧管理者表或备用任务队列。它包括所有备用帧管理者(即对当前时间已经完成其执行,正等待其下一次循环开始时间的那些帧管理者)的排序表。备用表表目对应于各种中断源的优先级被进一步排列,中断源的每个优先级都有一个单独的表。帧管理者备用表也是个双链表,包含帧管理者指示项,等待其下一个执行开始或调用时间到来。本发明中的中断处理器是独立的,并保持对备用表中对应于中断级的帧管理者的跟踪,给定任务或帧管理者驻留在备用表中。备用表中的帧管理者按它们的开始时间而不是任务完成或结束时间来进行排序或排队,最早开始的为优先。当二个或二个以上帧管理者碰巧具有相同开始时间时,只在备用帧管理者表中保存那个有最早结束时间的帧管理者。

    对帧管理者的任务执行队列,备用帧管理者表成队列以及用到的控制码和控制数据各部分的更为详尽的说明都将参照图1作进一步描述。不过,为了能理解本发明操作系统根据任务完成截止时间对执行任务的队列进行优先级排队的优越性,下面再作进一步解释。

    对本发明,调度额外开销对可得到的处理器资源的加载由下等式2给出。

    等式2

    OverhcadIspos=Σi=1NNioCschedTi]]>

    式中

    Csched=执行调度码一个循环的时间

    N=所要调度的任务数

    Ti=任务i的执行周期

    本发明中,执行队列中所有任务的调度,不管该任务的活动现状态如何,只产生最低限度的微小损失。可以注意到等式2的分子上的N表明:在最坏情况下,每个任务都将相对系统中所有其它任务来分级。然而优点则是Ts不再象等式1中的那样作为公共分母。为了能达到将两种调度过程的额外开销负载作比较的目的,等式1可以用频率域表示,如等式3所示。

    等式3

    Overheadconv=Σi=1Ni·CschedFmax=(N)(N+1)CschedFmax2]]>

    式中

    Fm a x = 1/(T5) =具有最短执行周期任务的调度频率

    此外,等式2也可用频率域表示,如下面的等式4A所示:

    等式4A

    OverheadISPOS=Σi=1Ni·CschedFi=N·CschedΣi=1NF]]>

    式中

    Fi= 1/(T5) 任务i的调度频率

    每个给定批任务在频域的调度频率的平均值由下面的等式4B给出:

    等式4B

    Favg=1NΣi=1NFi]]>

    等式4B也可以用任务调度频率的均值写成如等式5所示。

    等式5

    OverheadISPOS=N·N·Csched Favg

    式中

    Favg=任务调度频率的均值

    最后,若假定操作系统执行调度过程的一个循环所需的时间Csched,在给定的任务数相同时,对任务调度算法都近似相等,比较就可以简化。这个假设是合理的,因为所有的算法基本都需要某种排序循环以便将任务送入执行队列中。给出这个假设后,本操作系统调度技术的效率是按下面等式6所示与惯用的调度技术来比较的:

    等式6

    E F FI S P O S=( N ) ( N + 1 ) Cs c h e dFm a x2N · N ·Cs c h e dFa v g]]>

    等式6可以简化成等式7如下所示:

    等式7

    E F FI S P O S=( N + 1 )2 NFm a xFa v g]]>

    等式7清楚地表明本发明操作系统的调度技术的损失和优点。因子N+1/2N是损失。整个有效范围的分布从1(当N=1时)到最低1/2(当N=∞)。最高频率与平均频率之比给出本技术调度的优点之度量,因为这个因子总是大于1的,除非当最高频率等于平均频率时,它才精确地等于1。总之,当任务循环的最高频率大于或等于任务循环的平均频率的二倍左右时,本调度过程比惯用的调度算法要有效的多。

    在多媒体应用系统中,循环任务的最高频率远远大于循环任务平均频率的概率是相当高的。在诸如本发明这样的多任务操作系统中,涉及到在几种不同的数据采样率下的任务运行,每个都有专门的要求,很可能每个任务的最佳调度频率完全不同。例如,典型的通讯调制解调器任务对它调用的子任务需要4种不同的调度频率。换句话说,一种任务必须以16.216Hz频率执行,另一种是204.255Hz,另一种是600Hz,还有一种是1378.125Hz。对这个的调制解调器来说,N=4,最高频率等于1378.125Hz,平均频率等于549.649Hz,调度过程的效率按等式7计算等于1.567。

    包括DTMF按钮式译码,频率合成应用或用于语音响应等任务的电话应答需要六个以不同循环频率运行的不同子任务,这里N=6,Fmax=1378.125Hz,Favg=534.783Hz,从等式7计算出效率等于1.503。尽管在所给的二个例子中,任务的最高频率和平均调度频率之偏差都没有达到极端宽,按照调度过程额外开销的减少来算,调度改善还在50%以上。在频率和任务适当组合时,甚至会有超过100%的更大改善。例如,有一批任务,假定4个任务的调度频率为15Hz,40Hz,100Hz,和1378.125Hz,得到N=4,Fmax=1378.125Hz,Favg=383.281Hz,效率为2.247。这表示调度过程的效率改善在124%以上,必然减少了系统中调度任务时的处理器资源的额外开销。本发明的另一个优点是该调度技术减少了任务阻塞时间和任务交换时间,因为调度过程不是在到达时间完成,就不会变成任务阻塞或交换的等待时间。

    现在再回过来更详细地描述前文的最佳实施例,可以注意到任务本身并不被调度或重新排队。而是在队列中插入称作“帧管理者”的位置保持器,它对应着用来调用公共任务处理代码的标志符。事实上,帧管理者本身是一个特殊的任务并执行一组共用的、周期性循环的任务,其循环周期与任务和帧管理者相关联的任务的循环周期相一致。帧管理者执行分配给它的、具有相同任务完成截止时间的所有任务,并当它完成所有分配给它的任务之后就返回操作系统,以在队列中重新排队。

    操作系统提供系统中所有帧管理者共享的帧管理者代码。每个帧管理者需要它自己的数据结构,叫做帧控制块(FCB),它在帧管理者被操作系统激活之前要先预置初始值。帧控制块管理着帧管理者的执行。具有共同执行周期的任务被组合在一起并联合在一起连到共同的帧管理者,这是它们在执行队列中的位置保持器。这样,在任何给定时间,系统队列中驻留的每个帧管理者都有一个帧控制块。对于上面所给的例子中有四个或六个不同的调度频率;就会有四个或六个不同的帧管理者连同它们的帧控制块。

    帧控制块由主系统建立并被输到数字信号处理器中作为控制数据存贮起来、帧控制块是个包含本发明操作系统所需要的所有信息的数据结构,以便它调度帧管理者进入执行队列或表中。它还包括指定存贮区或地址,当任务转换被执行时,数字处理器中的处理器寄存器就保存在此处。FCB还包括为任何与帧管理有关的处理任务对数字信号处理器存贮区域存贮器的地址标记以及具有相同任务完成截止周期或时间的子任务的帧管理者链表的开始的识别启动地址。典型帧控制块在帧管理者被激活之前必须按下面表1进行初始化。

    表1    帧控制块

    名称    偏移量    要求的初始值

    PIFM    '0000'X    0

    NIFM    '0002'X    0

    ALARM    '0004'X    0

    LNTLINK    '0006'X    指向中断处理器的数据结构的指针

    PSFM    '0008'X

    NSFM    '000A'X

    ETH    '000C'X

    ST    '000E'X    0

    INTFLG    '0010'X    0

    FRAME    '0012'X    帧的大小

    FRAMEH    '0014'X    帧时间的高16位

    OSRTN    '0016'X    标号SCHEDLER的指令地址

    FIRSTTCB    '0018'X    0

    ISADDR    '001A'X    标号FM的指令地址

    SILR    '001C'X    0

    SRO    '001E'X    0

    SR1    '0020'X    0

    SR2    '0022'X    0

    SR3    '0024'X    0

    SR4    '0026'X    0

    SR5    '0028'X    0

    SR6    '002A'X    0

    SR7    '002C'X    0

    SR2L    '002E'X    0

    SR6L    '0030'X    0

    SRMH    '0032'X    0

    SRML    '0034'X    0

    SMCRH    '0036'X    0

    SPSRH    '0038'X    0

    SRCDB    '003A'X    0

    PRESENTH    '003C'X    0

    SCYCLCNT    '003E'X    0

    SDSPTR    '0040'X    0

    SYSTMP0    '0042'X    0

    SYSTMP1    '0044'X    0

    SYSTMP2    '0046'X    0

    SYSTMP3    '0048'X    0

    SYSTMP4    '004A'X    0

    FCB的建立是由主处理器连同DSP完成的,这并不特别地做为本发明的一部分。因此表中所示只是帧控制块的最终结构和存储信息。表1中,头二条登记项是指向备用帧管理者表的开头与结尾的指针,备用表同各个中断级一起作为控制数据保存起来。第三条登记项是报警或启动时间指示器,第四项登记项是中断链指针,指向与给定FCB有关的中断处理器数据结构。第五项和第六项登记项是指向帧管理者调度表或任务执行优先级队列的前地址和未地址的指针登记项。

    登记项第15项至38项是存贮器地址,当发生帧管理剥夺时,数据信号处理器当前工作状态现场就保存在这里。

    在激活一给定帧管理者之前必须由主机预置的数据,由主机设置到帧控制块,再输到数据信号处理器。

    根据表1的名称,下面对数字信号处理器一给定帧管理者激活之前,必须预置的数字作更详细地描述。

    INTLINK-该登记项包含一指针,即存贮器地址,驻留着与一特定用户有关联的合适的中断处理数据结构,用户硬件(即,调制解调器,激光唱机,视频显示器等)与一给定的帧管理者相关联。

    FRAME-保持帧尺寸,为数字采样时间数,这是由任务周期或循环任务间隔所覆盖的时间。时间帧以“采样时间”度量,由有关联的用户硬件以“采样时间”对数字信号处理器进行采样。例如,用户硬件的给定采样频率和采样时间,每经过N倍的采样时间,帧尺寸为N的任务就执行一次。

    FRAMEH-是表示帧管理者的实际帧时间的16位的数,其中的16个位是根据每个帧时间的中断数目乘以中断源的中断周期计算所得数的高16位。

    ISADDR-该登记表保持一个指向数字信号处理器存贮器中帧管理者数据结构的指针。

    OSRTH-该登记表保持帧管理者指令的返回地址。

    FIRSTTCB-该登记表是所要执行任务的帧管理者链表的始地址,该任务由那个帧管理者在临近或在其规定的截止时间发生之前,按其循环频率执行。该单元通常用来指示分配给帧管理者的第一个任务的任务控制块(TCB)。然而,为了允许帧管理者在没有任何任务连到它时也能启动,该表目可以预置为0,一旦这个表目保持为0,帧管理者就只能返回进行重新排队。FCB中的其它数据单元用来寄存调度和任务转换,下面作简要描述。

    PIFM是前一个备用帧管理者。这是一个指向备用帧管理者表中前一个帧管理者的后向指针。

    NIFM-下一个备用帧管理者。这是一个指向备用帧管理者表中下一个帧管理者的前向指针。

    Alarm-保持帧管理起动时间,它相对于由帧管理者中断处理代码所保存的采样时钟度量。中断处理代码利用报警(Alarm)存贮内容和SCLOCK来确定帧管理者起动时间何时到达。

    PSFM-前一个被调度的帧管理者。这是一个指向帧管理者执行队列或调度表中前位帧管理者的后向指针。

    NSFM-下一个被调度的帧管理者是指向按优先级排队的帧管理者执行队列或调度表中下一个帧管理者的前向指针。

    ETH-结束时间高位。该登记项保持帧管理者现结束时间的高16位。

    ST-这是开始时间。它保持帧管理者当前所指定的开始时间。开始时间以帧管理者中断处理代码所保持的采样时钟为基准来度量并用来确定是否已经到达“就绪运行”状态。

    INTFLG-中断标记。它用来指示帧管理者是被中断还是执行状态,或者指示它是处于闲置或等待开始时间的等待状态。一旦帧管理者到达它的执行时间开始,中断标志为0时,帧管理者是闲置的并且执行将从帧管理者代码的第一项开始。如果中断标记位等于1,帧管理者先被中断而后必须保存机器现场,执行从中断发生处重新开始。

    登记项SILR到SRCBD是每当帧管理者在执行中被中断或者由更高优先级帧管理者开始执行而被剥夺时,用来保存机器状态和内容的单元。

    PRESENTH-现行高位包含现任务的剩余分配周期记数的高16位。

    SCYCLCNT-保存周期记数。它用来保持帧管理者被中断和/或被更高优先级帧管理者剥夺时周期记数寄存器的内容。周期记数寄存器包含现任务的剩余执行周期记数的低16位。

    SDSPTR-系统数据存储指针用来保存数据存贮区地址指针(当帧管理者被剥夺时)并保持指向现执行任务的指针。

    SYSTMP0到SYSTMP4是为任务保留的,用作绝对数据中间存贮区的数据单元。放在这些单元的数据只在任务现执行期间有效。任务不能设想放在这些单元的数据从一个执行周期到下一个周期是有效的。

    下面简要介绍中断处理数据结构。从表2看出,中断处理数据结构包括软件时钟,备用帧管理表开始和结束表登记项及调度所需要的所有中断特定数据。

    表2    中断处理器数据结构

    名称    偏移量    说明

    LIFM    '0000'X    指向最未个后备帧管理者的指针

    FIFM    '0002'X    指向第一个后备帧管理者的指针

    CLOCKH    '0004'X    实时硬件时钟的高16位

    SCLOCK    '0006'X    采样时钟

    IPERIODH    '0008'X    中断周期的高16位

    IPERIODL    '000A'X    中断周期的低16位

    INTFREQ    '000C'X    中断频率

    SPERINT    '000E'X    每个中断周期的采样时间数

    中断处理数据结构中的数据同样由主处理器置初始值。它不属于本发明的特殊部分,但为了理解本发明操作系统的工作情况,在这仍予以介绍。

    LIFM-最末个备用帧管理者。这是指向备用帧管理者双链表结尾的一个指针或地址。当双链表为空时,它指向本身。

    FIFM-第一个备用帧管理者。这是指向备用帧管理者双链表的始地址的一个指针。当双链表为空时,FIFM指向LIFM。

    CLDCKH-时钟高位。它保持最近中断的实时,当与给定任务相关联的数字信号处理机收到一批采样进行处理时,就根据记录当前时间的时间记录寄存器对之修改。

    SCLOCK-采样时钟。它保持所测试的相对采样时间作为在每个中断周期为执行用户任务硬件系统的采样时间数,在每个中断时间,中断处理代码递增SCLOCK另一个寄存器SPERINT中保持的,每个中断的采样总数并测试在用户硬件设备的采样时间内的采样数,它将被建立并用于每个中断周期。

    IPERIODH-中断周期位保持正比于用户硬件设备的实际中断频率的数值的高16位。

    IPERIODL-中断周期低位保持正比于用户硬件设备的实际中断频率数的低16位。

    INTEREQ-中断频率保持正比于实际中断频率数(Hz)。

    调度表中帧管理者的执行调度和排序由与每个帧管理者相关联的开始时间和结束时间和相互关系来确定。一般来说,具有最早结束截止时间或结束时间的帧管理者优先执行。然而,由于帧管理者只在到达它的开始时间之后才被允许执行,当一具有较早结束时间的给定帧管理者在等待它的开始时间时,具有较晚结束时间但有较早开始时间的帧管理者可以执行。较早结束时间的帧管理者的开始时间一到,较晚结束时间的帧管理者就被剥夺而它的状态必须保存起来。本发明的操作系统管理帧管理者开始时间和结束时间之间的相互关系并通过采用调度表,在一给定时间系统中存在的所有帧管理者按优先级排队的排序表来确定哪个帧管理者应该执行。它还使用与每个中断级相关联的多后备帧管理者表(仅后备帧管理者的排序表)。这包含帧管理者在它们当前帧循环时间已经完成执行正在等待它们下一个循环开始时间的标记。数据存贮器中优先级寄存器区用来保持当前正在执行的帧管理者结束时间的拷贝。

    简要地说,举个例子,在主机的用户可以调用若干用户多媒体任务。任务可能是运行调制解调器,用CD唱机播放伴音,从压缩视频信号完成视频显示等。调用这些任务的用户将按要求把它们送到主系统(要建立帧控制块)并把它们输入到数字信号处理器,就驻留在内存中了。如果需要的话,主系统还向数字信号处理器内存装入特定的任务执行程序以支持用户所调用的应用。主系统还将建立任务控制块送到数字信号处理器,在那它们驻留在内存中以设置和读取特定的任务执行码代码。一旦主处理机需要初始化和调度帧控制块,数字信号处理器操作系统进行控制并开始工作,如图1的总流程简图所示。

    参考图1,操作系统首先访问内存中控制代码块1中所包含的帧管理者调度代码。图2和图3详细描述了这个过程。操作系统扫描与正调用的给定硬件或任务相关联的备用表2。然后把正调用的特定帧管理者的标记符插入到后备表中,如图2和图3所详细描述的那样。操作系统又扫描帧管理者按优先级排队的执行调度表3,它作为控制数据驻留在内存中,根据任务或帧管理者结束时间找到合适的开始点。操作系统扫描控制数据存贮器中的帧管理者优先级执行调度表,根据要调用的FCB的结束时间相对于调度表中现有的任何其它FCB的结束时间找到插入给定FCB的合适起动点。操作系统插入一地址指针到内存中的控制代码的帧管理者FCB中。

    接着,图1中的操作系统调度表扫描器4为要执行的下一个帧管理者扫描帧管理者按优先级排队的执行调度表3。它访问帧管理者的帧控制块,并找到那个帧管理者准备运行的下一个任务。调度表扫描器4送帧管理者的FCB到帧管理者启动控制5,它检查给定的帧管理者在中断之后是继续还是开始新的循环。帧管理者6受帧管理启动块5的启动并从与给定帧控块相关联的任务中调用要执行的下一个任务,启动控制块5从FCB的字符获得从何处开始或继续已中断任务的信息。

    如果一个同步编程的、规则发生的中断在执行中发生的话,帧管理者6就停止,分支到与正在中断的中断级相关联的中断处理器代码(在块7)并等待。块7中的中断处理器代码递增相应的块8,然后检查它的相关的备用表2查看对任何FCB与该中断级相关联的任何起动时间是否发生。可以注意到,在这一点,中断级相当于正调用的某种应用的用户硬件所要求的任务重复或循环的周期。例如,典型频率是每秒9600个循环,每秒8000次,每秒1380次(在备32个采样的数据块中处理CD机采样的速率)等等。

    如果任何开始时间到达,就从后备帧管理者表2中除去开始时间已经到达的帧管理者(但它们还留在按优先级排队的帧管理者执行调度表3中),并检查优先级指示器9确定从后备表中除去的给定帧管理者比现执行任务的优先级高还是低。由此,系统或是中断现执行任务、保存其状态,或是允许现执行任务继续。

    正如图1所示,数字信号处理器存贮器中有四个主要的控制代码部分(和五个控制数据部分)。图1中二者之间的区别是用重黑框围的表示存贮器中的控制代码,相反用较细框围的表示控制数据项。数据流和控制信号流用带双箭头的双线表示双向作用,而带单箭头的单实线则表示单向作用。控制代码流则用带双箭头或单箭头的虚线来表示各部分之间的双向或单向控制代码流。必须清楚地理解,为了“流动”,处理器(未表示出)必须访问相应的控制代码并执行由它确定的那个操作,由此选择控制数据,从存贮器的一个区到另一区完成流程图中的各种操作,这将在以后做更详细描述。

    为了详细说明最佳具体实施的工作情况,我们假设一个简单的典型的用户在主处理机上调用的应用,例如用户选择高保真CD机播放“所录的音乐”。正如一般所理解的,激光盘存贮数字信号,再现伴音信号连同错误恢复码位,跟踪码以及其它控制信息。为了处理从激光盘上读出的数字信号,CD机必须执行二个任务。第一个任务具有32D到A或A到D按CD机的采样率(通常为每秒44,1004采样)的采样时间的执行周期。第二个任务必须完成的是读取数据采样送到数字信号处理机进行反压缩,错误修正等,必须以48个采样为一个执行周期进行工作。为了完成这个任务,主处理机建立二个帧控制块(其参数对应于用户调用应用所需要的执行周数)并将帧控制块装入DSP数据存贮器。主处理机还建立二个任务控制块(取决于CD机功能所要完成的任务或子任务)并把它们装入DSP数据存贮器。然后它要求DSP操作系统开始调度帧控制块完成这些任务。

    本发明的DSP操作系统给帧控制块的某些信息并不由主处理机提供。它们的各称是帧控制块中的ALARM,ST,及ETH。这几个信息是根据图1中与上面表2的内容相同的中断处理器数据结构7中时钟的当前内容来装入的。然后制作系统设置图1中块10的FMPTR等于帧控制块1。这样,“FMPTR”将保持帧控制块1装入到存贮器中的地址。操作系统然后将扫描帧管理者按优先级排队的执行调度表3并插入帧控制块到调度表适当的位置,是通过调度对应于FCB1的帧管理者FM1到调度表的合适位置上完成。完成这些工作是由操作系统执行帧管理者调度过程,通常由图1中块1的代码来控制,接着执行图2和图3的详细过程。

    一开始,为简单起见可以假设上面提到的时钟的当前内容为0。给定这样的初始值后,图1中块1的控制码所控制的活动在图2和图3中有详细描述。

    图2中,过程以块11开始。块11中,设置当前帧管理者等于从FCB来的帧管理者指针。块12计算这个特定帧管理者的新的开始时间和结束时间。新的开始时间是旧的开始时间加上来自FCB的帧数。在目前的例子里帧是32个采样、新的结束时间是按将旧的结束时间加上FCB中的帧时间高位H,这里是64Kt,Kt是正比于用户任务所要求用来支持的给定硬件的采样时间的常数。这样,在信号处理器内测得的时间就与外部主设备CD机的各个采样时间,间隔以及时钟频率有关,以此类推。

    块13中,新的报警条件是按旧报警加上帧数,在本例中,帧数为32。

    然后,图2的过程前进到后备任务表(图1块2中的),向上扫描找到后备表中合适的位置插入帧控制块指针。这个表里的指针又按报警时间进行排序,最早报警时间在前。图2中块14说明设置要指向完成这个的备用表底部的备用表指针。由于图1中备用表2在本例中当前为空,表的顶部就被找到,帧管理者1的帧控制块指示器,就将放在表的顶部,作为这些表的唯一登记项。在这之前,必须要执行图2中的块15,启动中断保护,防止发生错误,如果在备用表正修改过程有任何中断应该发生的话。

    块16中,设置下一个帧管理者的指示器等于来自指令表的PIFM,进入块17确定下一个帧管理者是否在备用表的顶端,如果不是,则根据它的报警时间,利用块18,19,20诸步骤将帧管理者插到合适的位置上。如果下一个帧管理者已经在备用表的顶部,后面的这几块就可以跳过,由块17的输出直接到块24的输入。如果块18的测试表明下一个帧管理者的报警小于当前帧管理者报警,就必须做进一步测试,确定帧管理者报警是否等于当前报警,这示于图2的块21。如果回答为(yes)是则,二个帧管理者的结束时间进行比较(块22),备用表重新排序,如果需要的话,如块23所示。在另一种选择下,如果在表中找到的下一个帧管理者不等于当前帧管理者报警,就进入块24,在下一个帧管理者和指令表指针地址之间把帧管理者插入备用帧管理表中,然后表2在标记A处退出,指向图3中标记A处的入口。

    图3中,开始了对按优先级排队的帧管理者执行调度表重新排序的进程,设置一个非实时帧管理者NRTM在表的底部,方法是给定它的结束时间大于当前帧管理者的结束时间(按FCB1所控制的)。在本例中,我们已经假定NRTM的结束时间等于64Kt+1,因此NRTM比现有的唯一的其它帧管理者(就是FM1)按其结束时间至少要晚1个时钟数。这在块25到28作了说明,这些块都是自身说明问题的。

    其次,操作系统扫描图1中的帧管理者调度表3,以图3的块30为各步骤的开始。扫描按结束时间进行,这是对帧管理者按优先级排队的执行调度表进行优先级列表的方式。执行扫描以找到插入帧管理者FM1的正确位置。由于在我们的例子中假定帧管理者调度开始为空,在调度表或队列3中除了非实时帧管理者以外FM1将是唯一的帧管理者。然后,将新的开始时间和结束时间写入FCB1,FCB1的中断标记设置为0(没有在运行),图1中的中断寄存器9设置成优先级队列或调度表3中的下一个帧管理者的结束时间。这示出图3中块31-40,特别是在块39。

    然后,操作系统控制图1中块4的调度表扫描进程。这个代码为寻找其它准备要执行的帧管理者搜索块3中的调度表。在目前的例子中没有其它帧管理者,因此非实时帧管理者在表的底端被找到,它的标记由图1、块4的扫描器送到图1、块5的帧管理者启动代码。

    根据帧管理指钟找到的NRTM代码由处理器运行,图1中块9的优先级设置成NRTM帧管理者的优先级,本例中就是64Kt+1。NRTM代码将作为第二帧管理者插入存贮器中的调度表中,方法与上面所描述的FM1的插入方法完全一样。其结果是在这个调度表3中FM1后面跟着FM2。对第二个帧管理者又从图1,块1开始,重复执行图2、图3所描述的工作。

    再回到图2,计算这个帧管理者的新的开始时间和结束时间以及新的报警时间。FM2(由我们假想的用户为了CD播放调用的第二个任务)的开始时间为48,报警时间为48,结束时间为96Kt。图2中,将检查备用表,从底部开始,向上搜索以找到插入FM2的指示器在表中的合适位置。由于FM2将有比FM1更晚的ALARM时间(即相对来说,48比32更晚),在图1的备用帧管理者表2中,FM2将放在FM1后面。

    转到图3来,将再次搜索图1的帧管理者调度表3,FM2将放在调度优先级表或队列的正确位置上。由于FM2的结束时间比FM1晚,所以FM2在队列3的调度优先级表中,排在FM1后面。在这点上,非实时帧管理者结束时间设置为96Kt+1,过程继续进行到图1中的块4,在这里进行调度表扫描工作,从帧管理者原先的调度表位置开始,对任何其他要执行的帧管理者扫描。由于调度表3现在是帧管理者以队列形式的排序表并且包含FM1,后面跟着FM2,再后面跟着非实时管理者,所以通过图1中块4的帧管理者启动代码找到非实时帧管理者,非实时帧管理者将再次执行。图1的块9优先级指示器将设置为96Kt+1。

    由于本例中没有另外的帧管理者加到调度表里,非实时帧管理者代码将完成各个实用功能直到它被表示来自备用表的,对FM1或FM2的报警已经发生的,周期性产生的中断流中断时为止。当这种中断发生时,操作系统的代码执行流向图1块7里中断给定级的中断处理代码,然后将运行图5所示的中断处理。

    图5中块1的中断处理器代码按块58所示修正它的时钟。修改时钟的数据包含在表2的中断处理器数据结构中(见前面)。中断处理器代码检查它的配对的,有关联的中断级备用表2中的备用表。在目前的情况下,将找到FM1。它的报警时间等于32采样时间,并对照着SCLOCK(图1中块8)所表示的当前时间(等于1)进行校准。由于当前报警32不等于SCLOCK的内容,执行将从它被中断处重新开始。

    中断以这种方式即时反应直到最后SCLOCK数(它是每次递增1)等于报警数为止,即它将表示FM1的开始时间已经到来。这时,FM1将从备用表中除去,通过使备用表的顶指到表中下一个帧管理者(现在情况下即为FM2)。然后将优先级(即FM1的结束时间)对照着图1中优先级寄存器9进行比较。帧管理者1的优先级就是FCB1中的结束时间,为64Kt。但是优先级寄存器9的内容来自NRTM帧管理者,为96Kt+1,因此FM1由于它的结束时间比NRTM代码的帧管理者更早而具有更高的优先级。这在图5中从块59到64表示。在块64,图1的优先级寄存器9将设置为64Kt,这是FM1的结束时间。因为非实时管理者的FCB的各个字段中的这种中断,数字信号处理器中的内容,即所有操作寄存器的当前状态将被保存,进程将继续至图6。

    在图6中将检查图1中块3的调度表以确保调度表中在FM1之前没有任何其他具有相同结束时间(即“相同优先级”)的帧管理者。这种现象只出现在多级中断系统中并且只出现在所讨论的帧管理者具有相同的或近似相同的执行周期的情况。如果出现这种情况的话,就要调整调度表3的帧管理者,以使要执行的帧管理者优先于所有其它具有相同结束时间的帧管理者。也就是说,具有相同截止时间或完成时间的帧管理者中,取具有最早实际开始时间的帧管理者优先。在目前的例子中,没有其它的帧管理者优先于FM1,因此执行将继续,如图4所示,标记D在图4B块56进入。在这一点块10的帧管理者指针设置成指向FM1的FCB1,同时FM1被执行。

    当FM1完成执行之后,它就返回操作系统重新排队,操作系统又开始如图2所示的新的进程,计算新的开始时间,结束时间和报警。在本例中,将开始时间重新计算为64,报警为64,结束时间为96Kt。然后从底向上搜索备用表,在备用表中将碰到FCB2的帧管理者,并找到它的报警时间为48。因此,FM1将在备用表中放在FM2之后,因为现在它的开始时间比FM2的晚。进程继续进行到图3,在这里,找到的非实时帧管理者的结束时间比FM1的结束时间还晚,因此NRTM帧管理者的结束时间就不改变。图1中帧管理者调度表现在将由图1中块4的扫描器从FM1的帧管理者调度表3的当前位置开始搜索。下一次将找到FM2,由于FM2的结束时间等于FM1的结束时间,将绕过FM2。接着FM2的是非实时帧管理者,它的结束时间大于FM1的结束时间,因此FM1将重新插入调度表中FM2和非实时管理者之间。这样,帧管理者调度表3或队列现在已重新排序,包含作为调度表顶端的标志,FM2,FM1最后是非实时帧管理者。

    FM1的新的结束时间和开始时间写入它的FCB1中,优先级寄存器9设置成下一个帧管理者(FM2)的结束时间,因而设置为96Kt,重新排队的进程继续进行如图4A,标记B所示。在那,帧管理者调度表被扫描,从帧管理者2在调度表队列中原来的位置开始,以便可以找到所要执行的下一个帧管理者。FM2在调度表3中原来跟在FM1之后,因此搜索操作从FM2开始,这意味着FM2是下一个要检查的候选者。

    现在我们假定,恰好在这特殊时刻,FM2的开始时间来到,即相应于FM2的开始时间报警的中断发生。正如前面所述,图5中的中断处理代码(它是在图1中的中断处理器块7中)将确定FM2的ALARM是否已经发生以及FM2是否要从备用表级(对应于该中断所在的中断级)中移走。然而这时帧管理者2的结束时间不小于优先级寄存器9所包含的时间,因此执行将从它被中断处继续进行。执行是在图4A标记B点被中断的,因此就从这一点重新开始,FM2是执行候选者,它的开始时间在块44中与它的中断源的SCLOCK内容相比较。在本例中将发现它们是相等的,因此图1中优先级寄存器块9被设置为FM2的结束时间,现在FM2就是由图1、块5的帧管理者启动代码启动的帧管理者,详见图4B的图示说明。

    在图4B,首先FM2的启动标志被测试,查看该帧管理者是否处于中断状态。发现中断标志为0,表明FM2不处于中断状态而是从开始要执行的就绪状态。图1中块10的帧管理者指针将被设置成指向存贮器中的FCB2,表示FM2现在将要执行。FM2中断标志将被设置为1。表示如果FM2接着被中断,或被更高优先级帧管理者剥夺的话,它的状态需要恢复,帧管理者2将被执行。这以自说明方式块51-57中表示。

    尽管前面的过程看起来复杂,但它很容易执行且只发生在几个机器循环中。进程将无限地继续,FM1和FM2不断地重新排队,直至执行完成为止。根据它们当前的、分别计算的下一次结束时间,不断地重新安排它的在帧管理者调度表中的位置,并且当它的从活动状态转到闲置状态或从闲置转到活动状态时,将不断地把它们放到备用表中或从中移走。重新排队过程是可中断的,正如我们在整个描述过程中所指出的,执行着的帧管理者在执行过程中可以被中断和剥夺。如果出现这种情况,数字信号处理器的设备状态被保存在上面提到的FCB中所指定的特定字段里。当检测最终又返回到被中断的帧管理者时,重新排队又正常继续下去就象没有中断发生过。

    为了详细描述图2和图3的进程,要涉及已编号的块以及下面的描述。图2中的块11完成指向活动帧管理者的FCB指针的复杂,表示帧管理者正在图1的按优先级排队的队列3中重新排队。块12中,进程必须根据程序计算新的开始时间和结束时间,“新开始”时间等于“旧开始”时间加上来自FCB的“FRAME”,“新结束”时间等于“旧结束”时间加上FCB的“FRAMEH”。块13中,必须计算新的报警时间,在FCB中设置等于新的开始时间。块14中,系统必须将指针恢复到图1中备用帧管理者表2的底端。这来自中断处理器数据结构(在前面的表2中所示)。

    块15中,任何中断都被屏蔽以防止在随后的各步中发生中断。块16中,指向所要检查的下一个帧管理者的FCB的指针被复杂,这里所要检查的下一个帧管理者就是在备用帧管理者表中所指的前一个帧管理者。在块17中,检查备用帧管理者的顶,如果找到顶,操作进行到块24。

    在块18,所作检查是确定下一个帧管理者的报警是否小于活动帧管理者的报警;若为真,进程继续到块21。块19中,备用表指针设置到备用帧管理者表中的前一个帧管理者。也就是说,备用表指针在备用帧管理者表中上移一个表目。

    在块20中,使中断无屏蔽,这样任何挂着的中断可以运行,然后系统又进到块15。若没有中断发生的话,系统流程通过块15、16,等等。

    在块21,检查确定下一个帧管理者的报警是否等于活动帧管理者的报警。如果是,操作进行到块22,但若不是,则进行到块24。

    如果在块21中,发现下一个帧管理者的报警等于活动帧管理者的报警,那么这二个帧管理者中只需要一个保留在备用帧管理者表中,进入块22,检查确定下一个帧管理者的结束时间是否小于或等于活动帧管理者的结束时间,如果是,活动帧管理者就不需要放在备用帧管理者表中,备用帧管理者表的扫描和插入进程就已经完成了。

    块23中,假定块22中进程没有完成,下一个帧管理者在备用帧管理者表中被活动帧管理者替代。也就是说,下一个帧管理者从表中移走而当前活动帧管理者被放在它的位置上。备用帧管理者表的扫描和插入进程就已经完成。

    在块24进行的是将活动帧管理者插在备用帧管理者表中,下一个帧管理者如备用表指针之间,(对适合这个的条件下)也就是说,活动帧管理者将跟在下一个帧管理者后,在备用表指针所指的帧管理者之前。备用表扫描和插入进程完成。

    图2表示了程序上的各步骤,能够保持一个执行已经完成,正在等待新的开始时间(在它们的周期性重复的任务中断调度表中)的帧管理者队列或表。备用帧管理者表代表每当现待用帧管理者的开始时间来到时使操作系统处于“警戒”状态的装置。就允许操作系统检查执行调度表或队列,以确定当前就绪-运行的帧管理者的优先级是高于已经在执行的帧管理者的优先级的话,现执行帧管理者就应该被剥夺。

    图3详细地说明了帧管理者按优先级排队的执行队列或调度表扫描和插入过程,由图1的块1和块4中的控制代码完成。在图3中,进程从块25开始,使任何中断无屏蔽,允许挂着的中断运行。块26中,调度表指针最初设置在活动帧管理者指向正在执行的现活动帧管理者的帧管控制块。块27检查确定非实时管理者的结束时间是否晚于(即更大于)活动帧管理者的结束时间。如果是,进程继续到块29。如果不是,进程继续至块28,在那里设置非实时帧管理者的结束时间等于活动帧管理者结束时间+1。这样非实时帧管理者的结束时间将比当前调度表中的任何帧管理者的结束时间都晚,也就是说,NRTM帧管理者作为帧管理者队列或调度表的结束符,调度表则是根据帧管理者的结束时间排序的。

    在块29,中断又被屏蔽以防止它以后的过程中有中断发生,在块30,跟在调度指针后面确定下一个要调度的帧管理者。这意味着在帧管理者调度表中的当前指针就是下一个帧管理者的指示器。在块31,检查确定下一个帧管理者的结束时间是否不小于或等于活动帧管理者的结束时间。那么就已经找到活动帧管理者的合适新位置,进程可以继续到块34,否则过程进行到块32。在块32,调度表指针被设立,指向跟着当前调度表指针之后的下一个调度的帧管理者,即指针在帧管理者调度表中下移一个位置。在块33,使中断无屏蔽,以允许任何挂起的中断运行,然后进程继续到块29。

    在块34,确定调度表指针指向当前紧跟着活动帧管理者之后的帧管理者。在块35,将活动帧管理者从帧管理者调度表中除去。在块36,将活动帧管理者重新插入调度表跟在“下一个帧管理者”之后。在块37,将新的开始时间和结束时间写入活动帧管理者的FCB中。而在块38,活动帧管理者的中断标志设置为0,表示活动帧管理者不是在中断(即在运行但被中止)状态。在块39,对图1-块9确定系统优先级为当前调度表指针所指的帧管理者结束时间。这就是在帧管理者调度队列3中原来跟在活动帧管理者之后的帧管理者。在块40,使中断无屏蔽,以允许任何挂着的中断执行。帧管理者扫描和插入过程已经完成。

    从前面所述可以看到图3所说明的过程为对应于所要执行的用户任务建立帧管理者按优先级排队的队列,并根据最早帧管理者截止时间或结束时间进行管理。任何具有相同重复频率以及所要求结果可得到的相同截止时间的用户任务在其执行周期必须由这个帧管理者处理。每当帧管理者结束时间到达或由于执行实时帧管理者码而插入一个新帧管理者或者由此而删去一个帧管理者时,帧管理者按其优先级排序的表或队列被分类和重新排队如所示。

    图4A说明的是由图1块4所完成的帧管理者调度表扫描过程。在块41,调度表指针所指的帧管理者确定为执行候选者。块42在随后的过程实行中断屏蔽。块43得到对候选帧管理者相连的中断源在块7中相关联的中断数据结构中的采样时钟SCLOCK的内容,即对控制FCB和帧管理者的中断级的计时器。在块44,如果候选帧管理者开始时间已经到达(或者甚至已经通过),那么起动时间将小于或等于SCLOCK,现帧管理者可以执行。进程继续到块48。如果候选帧管理者开始时间还没有到来,它不能执行而必须走旁路,这样进程将继续到块45。要注意的是,非实时帧管理者以这样的方式被预置,以致它的开始时间似乎总是已经到来,因此一旦它被送到表中,非实时帧管理者总能被执行。

    在块45,确定图1块9的优先级等于候选帧管理者的结束时间加1。在块46,确定新的候选者为帧管理者调度表中跟在当前候选者后的帧管理者。块47中,使中断无屏蔽以允许任何挂起的中断运行,然后操作继续到块42。

    块48中,系统确定图1块9的优先级为候选帧管理者的结束时间。在块49,系统确定候选帧管理者为要启动(即要执行)的帧管理者。在块50,系统使中断无屏蔽以允许任何挂起的中断运行。调度表扫描过程已经完成,下一个要执行的帧管理者也已经找到。

    图4B的过程说明帧管理者启动(即执行)是如何开始的。块51,如果启动的帧管理者的中断标志等于0,它不再处于被中断状态,应该从它的开始处执行,因此过程进行到块56。但如果中断标志被设置为1,则帧管理者在先已被中断,执行应该从它被中断时它所在之处的状态重新开始。这意味着必须要恢复所保存的现场,进程进行到块52,将中断屏蔽。在块53,机器在中断发生时的现场,根据帧管理者的FCB中保存现场区进行恢复(参见前文)。块54中确定帧管理者指针指向启动的帧管理者,启动的帧管理者变成要执行的活动帧管理者。在块55,使中断无屏蔽,整个重新排队过程已经完成,因此,被中断的帧管理者可以继续执行了。

    在块56,从块51进入,或从图6块71进入,所要启动的帧管理者将要从它的开始处被启动。因此确定帧管理者指针等于启动的帧管理者,启动候选者变成活动帧管理者。在块57,启动帧管理者的中断设置为1。表示如果启动要被任何其他帧管理者中断和剥夺的话,它的现场需要保存以便恢复,执行必须从中断点重新开始。这完成整个重新排队过程,新的活动帧管理者已经开始执行。

    块7的中断处理代码在图5作了详述。在块58,时钟以表2所示的中断处理器数据结构进行修改。块59中,与该中断级相关的中断处理器备用帧管理者表中的第一个帧管理者被访问。如果备用表2是空的,正如块60所示,这意味着在这个中断级当前没有驻留帧管理者,系统返回被中断进程。在块61,如果帧管理者备用表有帧管理者并且已经到达该表的顶,即开始时间已经来到,则过程进行到块62,否则的话,它就返回被中断的进程。在块62,从备用帧管理表中移走第一个帧管理者,因为它现在已经变成活动的或者已经经过了它的开始时间。在块63,如果帧管理者的结束时间小于图1中优先级块9中当前所指示的,那么它就必须被执行,因此进程进行至块64。否则的话,进程返回到被中断的进程。在块64,优先级被重新设置为当前帧管理者的结束时间表示申请中断的帧管理者有优先权。在块65,申请中断的帧管理者确定为要启动(即要执行)的帧管理者。在块66,机器当前现场被保存在被剥夺的帧管理者的保存现场区。块67,结束中断保护,以允许任何后来的中断被运行。这完成中断过程。流程继续,操作系统对多级中断调度表的调整示于图6,以块68开始。

    在图6中,在诸如图1所示的多级中断级系统中,必须要建立调度表指针(是被启动帧管理者理者的)即,它必须指向所要执行的帧管理者。块69中,帧管理者的顶,这是虚拟FCB用作帧管理者调度表的开始时间,其结束时间必须不等于被启动的帧管理者的结束时间,这样防止在过了队列中帧管理者调度表的顶之后继续向上搜索。在块70,确定在当前调度表指针之前的帧管理者作为“前一个帧管理者”。在块71,如果结束时间或前一个帧管理者不等于被启动帧管理者的结束时间,那么不需要调度表调整。进程可以继续到图4B,块56,执行被启动帧管理者。否则的话,过程进行到块72。

    在块72,系统确定前一个帧管理者为调度表指针,并在帧管理者调度表中将帧管理者上移一个表格,在块73,如果“前一个帧管理者”的结束时间等于被启动帧管理者的结束时间,那么扫描还没有找到具有与启动不同的结束时间的在前的帧处理器,因此过程必须进行至块72。否则的话,过程则进行到块75。在块75,中断被屏蔽。块76中,被启动帧管理者先从帧管理者调度表中移走而后再把它插入帧管理者调度表中跟在前一个帧管理者后的那个位置上。在块78,使中断无屏蔽以允许任何挂起的中断运行。帧管理者调度表的调整,其目的是使被启动帧管理者放在所有具有与启动结束时间相同的结束时间的帧管理者之前,已以完成。过程可以继续到图4B、块56。

    在帧管理者执行的调度、重新排队、中断及恢复中,操作系统的所有操作都在图7中用图解法表示出来。在图7中,说明三个示范性的帧管理者,用符号FM11,FM5和FM3表示,时间轴以中断数为基准。帧管理者11,5和3的执行帧分别为11,5和3中断时间。也就是说,帧管理者将具有在每11,5与3个中断时间上有规律地出现的开始时间和结束时间。帧管理者可能会都连到同一个硬件中断源上,如本例为简便起见即如此。沿帧管理者11,5和3的时间轴上的方块表示帧管理者实际执行的时间周期。人为地标记各个中断为0,1,2,等等并从0起动。那么进程进行如下:

    帧管理者11,5和3都具有在中断开始(中断0)的开始时间。根据结束时间执行调度表的顺序将是帧管理者3,后面是帧管理者5,再后面是11。帧管理者3是执行调度表中的第一个帧管理者,它将在中断0处开始执行。在中断1之后的某一时间,表示完成对帧管理者3的任务的执行,并且将在中断3处重新开始执行该任务,而在中断6处具有一个新的结束时间。现在调度表的新的执行次序是帧管理者5,之后是帧管理者3,最后是帧管理者11。接下来将开始执行帧管理者5,因为它已经到达了开始时间,并且它在执行调度表中处于第一位,帧管理者3已经执行。在中断2已经到达之后的某一时间,将完成帧管理者5的执行,并且重新调度到一个在中断5开始的新的开始时间,在中断10具有一个新的结束时间。现在调度表的新的执行次序是帧管理者3,5和11。然而,在这一时刻,恰好在中断2之后,帧管理者3和5在执行调度表中位于帧管理者11之前,但它们的开始时间还没有到来。这样绕过了帧管理者3和5,而实际开始执行帧管理者11。

    在中断3,发生帧管理者3的第二次重复的开始时间,但帧管理者11没有完成它的执行。帧管理者3在执行调度中领先于帧管理者11,因而有较高的优先级。因此,帧管理者11被剥夺,即被中断(它的现行处理状态被保存在它的FCB中),而帧管理者3开始了它的执行的第二次重复。当帧管理者3完成执行,用在中断点6处的新的开始时间和中断9处的新的结束时间重新调度它。

    现在调度表的新的执行次序是FM3,FM5和FM11。在这一时刻点,帧管理者3和5领先于帧管理者11,但它们的开始时间还没有到来或重新到来,因此,在FM11开始执行的同时(从中断中重新恢复)被绕过。

    在中断5时,帧管理者5的开始时间到来,为它的第二次重复。帧管理者5优先于帧管理者11,这样它具有较高的优先级(在执行调度表队列中),因此帧管理者11再次被剥夺(中断),帧管理者5开始它的第二次执行周期。在中断6,帧管理者的开始时间复现,但帧管理者5尚未完成执行,因此被中断。

    帧管理者3优先于帧管理者5,因此帧管理者5被剥夺(中断),而帧管理者3开始它的第三次执行周期。帧管理者3有时将在中断1到达之后完成,重新排队,具有新的开始时间在中断9,新的结束时间在中断12。

    现在新的执行顺序是帧管理5,帧管理者11和帧管理者3。因为帧管理者5在调度表中优先,它的执行将从它被中断之处重新开始,运行到完成,将重新排队因此它的新开始时间在中断10,新的结束时间在中断15。

    帧管理者调度表或优先级队列的新的执行顺序现在是帧管理者11,帧管理者3和帧管理者5。帧管理者11的执行(现在已被中断过几次)重新开始。帧管理者3的开始时间在中断9发生,但帧管理者3未开始执行,因为在新的执行调度表中它的优先级低于帧管理者11。在中断10,帧管理者5的开始时间来到,但帧管理者5也未开始执行,因为在新的调度表中帧管理者11的优先级高于帧管理者5。这样帧管理者11将完成执行将重新排队,新的开始时间在中断11,新的结束时间在中断22。在调度表中执行的优先级新的顺序将是帧管理者3,帧管理者5,帧管理者11。帧管理者3的开始时间已经发生了,因此帧管理者3立即开始执行。在中断11帧管理者11的开始时间将来到,但帧管理者11未开始执行,因为在新的执行调度表中帧管理者3的优先级高于帧管理者11的优先级。帧管理者3完成执行,有时在中断11之后,重新排队,新的开始时间在中断12,新的结束时间在中断15。

    在执行调度表或队列中执行优先级的新的排序是帧管理者5,帧管理者3,后面是帧管理者11。帧管理者5将开始执行,因为它的开始时间已经到来并且由于在执行优先级队列中它优先于帧管理者3和11。在中断12,帧管理者3的开始时间将到来,但是由于帧管理者3的优先级没有帧管理者5高,所以帧管理者3不能开始执行。这样帧管理者5将在中断12之后的某一时间完成执行,并重新排队以具有新的开始时间在中断15,而新的结束时间在中断20。优先级队列的新的执行顺序为帧管理者3,跟着是帧管理者5和帧管理者11。帧管理者将开始其第4次执行,因为它的起动时间已经发生,它的优先级高于帧管理者5和11。

    前面的过程将继续经过几个重复到中断18,当帧管理者11将又完成执行时,这时帧管理者3,5和11对其当前帧而言都已经完成执行,而它们的开始时间尚未出现;当这种状态发生时,可以允许非实时帧管理者任务执行。最后中断20发生,帧管理者5的开始时间到来,非实时任务帧管理者将被中断,帧管理者5将按上面所描述的重新开始执行。

    从上述内容,很容易理解所确定的新的操作系统和方法适合于所选择的与硬的实时相关的任务(例如在多媒体,机器人以及其他类似的复杂人机对话或用户系统环境下所遇到的那些任务)的随机发生的组合。对特殊处理器,例如为说明最佳实施例而用到的数字信号处理器没有什么特别地依存性,因为该操作系统和方法完全能够适应或安装在任何通用计算机上。对操作系统(包括任务执行,根据重新发生任务完成或结束时间的优先级排队和调度),针对最佳实施例做了详细描述,但对本领域的技术人员来说,在特定的程序流程中做许多修改而不改变它的功能和内容是完全容易做到的。因此,在权利要求书中所描述的和想要得到专利保护的内容只是以一种说明的方式而不是以一种限制的方式提出来的。

多媒体计算机操作系统及方法.pdf_第1页
第1页 / 共64页
多媒体计算机操作系统及方法.pdf_第2页
第2页 / 共64页
多媒体计算机操作系统及方法.pdf_第3页
第3页 / 共64页
点击查看更多>>
资源描述

《多媒体计算机操作系统及方法.pdf》由会员分享,可在线阅读,更多相关《多媒体计算机操作系统及方法.pdf(64页珍藏版)》请在专利查询网上搜索。

一种调度执行多媒体计算机系统中遇到的周期循环硬的、实时任务随机组合的操作系统,这在多任务计算机工作环境是有用的。具有相当短的执行周期的循环出现的计算机任务可以被有效地进行调度,减少了处理器资源,其方法是:将所有活动的循环任务都放到执行队列中,每当一给定任务执行完,就对队列中任务的执行顺序重新排列,如果用调度任务时处理器所消耗的任务调度额外开销的减少量来衡量的话,本发明与先有技术相比,改善了5010。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1