分布式操作系统中的一种方法与系统的制作方法

文档序号:6408453阅读:266来源:国知局
专利名称:分布式操作系统中的一种方法与系统的制作方法
技术领域
本发明总体上涉及到分布式操作系统中的进程及相关资源处理。
所谓进程,当前连接中也称上下文,在本文中是指操作系统中的资源,作业需要使用这种资源以便执行该进程中的程序代码。进程为作业提供了若干必不可少的资源,如自己的程序计数器、自己的存储空间以及自己的一组处理器寄存器等。进程通过一次只允许执行一个作业而协调多个作业。
更一般地说,本文中作业是指涉及到进程的事件,因此,可以执行进程所拥有的对象中的方法。一项作业可以创建涉及到其它进程或者自身进程的新作业。
美国专利US3905023说明了一种包括多级操作系统的系统。这种系统以巨大和格外复杂为特征。通过多级操作系统能以适当的方式动态且自动地重构系统模块,从而保证了系统硬件的可靠性。在上述系统的所有主模块中均有检错和报错电路,该电路为操作系统提供了用于进行出错分析及动态重构系统资源的信息。其存储模块具有独立于操作系统的“单个位”的纠错能力。所述操作系统可看成包括有一基本级和N个连续级。基本级被定义为操作系统的核心。每一级操作系统内的进程只负责最邻近的高级别内所形成的处理工作,而不负责任何其它的处理工作。操作系统动态地控制系统资源并有计划地管理多程序混合体中的作业或任务。操作系统重新分配资源、启动作业并监控它们的执行。
专利GB2079997涉及到带有多个彼此相连系统的分布式计算机系统。每一个系统均具有多个相互连接的单元。所说的系统包括众多的单元以及一分布式操作系统,该操作系统在使用纵向寻址的同时用于操作、错误监控以及重新配置功能。当检测到错误时,就改正该错误,并将出错的单元隔离,同时将该单元的作业安排给其它未被占用的单元。如果没有其它单元可以利用,那么,就对系统进行重构,以便在使用可用系统的同时恢复恶化了的操作。
在专利US4933936中,说明了一种分布式计算机系统,这种系统规定了灵活的容错性。分布式操作系统驻留在所有的计算机内。共用操作系统的驻留拷贝控制着每个计算机。
在计算机中,希望通信错误或者有错程序所引起的错误都能由计算机的操作系统以这样的方式加以处理,亦即让该计算机保持原样且其它程序和调用均不受错误的影响。一个错误在最坏的情况下应该仅让出现错误的链接进程或调用链受控分离。错误的影响与调用是完全隔离的。换句话说,就系统而言,对已出现错误的恢复必须不包括比错误自身所引起的后果更严重的结果。
本发明的第一个目的是在分布式操作系统内卸下链接进程链,同时把尽可能多的内存和硬件资源返还给系统。
本发明的第二个目的是隔离错误并减少错误和恢复措施对有关事项/调用的影响,并且,如果可能的话,避免重新启动计算机以及对其它调用的影响。
本发明的第三个目的是不管错误出现在系统内什么地方都能跟踪这些错误。
本发明的第四个目的是在系统更新方面对某些活动进行类型标记,以便控制这些活动执行期望的程序版本。
一般地说,依照本发明,为了能在分布式操作系统的进程之间建立双向通信链路,给这些进程提供了端口,通过这些端口可进行进程之间的通信。所述进程和端口能使操作系统检查带有链路的进程,如果进程自身中止,操作系统就使用上述链路,同时,发现进程中的错误并中止它。为了能使操作系统经由所说的链路传送有关进程或计算机故障的信息并将这一信息传送到整个链接进程链中同时将这一信息报告给在所述链接进程内执行的应用程序,以便使这些应用程序执行特定的程序内容,因此要使用一种在链路中断及通信出错时被调用的代码。该代码的功能包括中止有错误的进程并将错误报告给出错处理代码。所说的第一种代码总是在已向其报告了错误的进程内执行。
具体地说,本发明之用于在分布式操作系统内处理资源的方法包括下列步骤在所说的进程之间提供双向通信链路并用操作系统来跟踪带有链路的进程,同时,如果带有链路的进程中止,操作系统就使用该链路;在进程中检错并中止该进程;经由所说的链路传递有关进程或计算机失效的信息,并将这一信息传遍整个的链接进程链;以及将上述信息报告给在链接进程内执行的应用程序,以便使这些应用程序能执行特定的恢复工作。
本发明的系统包括编码装置,编码装置包括第一装置,此装置用于在进程之间提供双向通信链路;第二装置,此装置用于使所说的操作系统能跟踪带有链路的进程,并且,如果有进程结束,操作系统就使用所说的链路;第三装置,此装置用于使所说的操作系统或在某些情况下使进程本身去检测进程中的错误并中止进程;第四装置,此装置用于使所说的操作系统经由前述链路传递有关进程或计算机失效的失效信息并将该信息传遍整个的链接进程链;以及第五装置,此装置用于使所说的操作系统将前述失效信息报告给在链接进程内执行的应用程序,以便使这些应用程序执行特定的恢复工作。
以下参照附图中概略示出的实施例来详细地说明本发明。


图1显示了分布式操作系统中呈作业链形式的活动的实例;图2显示了由若干上述活动所构成的活动组的实例;图3显示了资源如何短时间或长时间地从属于一种活动;图4显示了一种活动的链路模拟图;图5用于说明可将一种活动中错误的结果与活动本身隔离开来;图6a-6d说明了当一进程中出现错误时如何断开一活动;图7说明了系统的升级情况;图8说明了图1所示活动中的检错系统的结构;图9显示了在进程出错情况下所执行的动作码;
图10-13说明了对进程局部错误的处理;图14-16说明了对通信错误的处理;图17-19说明了对其它进程中错误的处理;图20以表的形式概括了参照图6至图19所说明的错误。
在不同的图中相同的标号说明相同或相类的部件。
在以下的说明和附图中,使用了信息和通信专家所熟悉的表达方式以及某种类型的伪语法表达方式。假定专业人员不需要对上述表达方式和语法作进一步的解释和说明,所以,以下不对所说的表达方式和语法作解释。
以下使用活动这一概念来定义操作系统中因独立的外部或内部事件而创建的作业链以及由该作业链在执行过程中所使用的资源总和。
图1显示了作业链的“作业记录”,作为一个实例,该作业链源于两个电话用户A与B之间电话交换过程中的事件。具体地说,图1显示了呈作业链形式的活动以及活动自身所连接的三种资源,即进程、端口和用户设备。在图1中,标号2表示进程,标号,4.n表示作业,标号6表示端口,标号8表示用户设备。
箭头涉及到作业链中的不同消息,如也称“cast”消息的异步通信信息10、呈调用及应答消息12和14形式的同步消息。具体地说,异步消息是指这样一种消息,一个进程发送了该消息之后不等待应答就继续执行,而在同步信息的情况下,进程锁定直至应答到达。每一种新的“cast”消息都会导致一个新的作业,如4.2等,然后作业4.2可以非常恰当地与创建它的作业4.1同时存在。调用12也会导致一新的作业4.6,而调用的作业4.5会被暂时挂起。直至新作业4.6停止执行并送出了一个应答消息14,挂起的作业4.5再继续。
“独立的”外部事件是指不涉及系统内任何活动的事件。如果用户A拿起电话接收机,那么,这就是一个启动新活动的独立事件。如果用户B拿起电话接收机,那么,这不是一个独立事件,这是因为,它是涉及到已建立起来的调用,因而涉及到了现有的活动。如果用户A或B放下接收机,上述情况同样成立。
多数内部事件都不是独立的。例如,如果接收到借方脉冲(debiting pulse),这是因为某项活动已安排了周期性的时间管理并且创建了暂时挂起的“到时(timeout)”作业。该作业包括在所说的活动内。但是,应把某些内部事件看作是独立的。这一点适用于诸如启动来自测试码生成程序或已触发的(启动例行检测型的)绝对时间管理程序的测试活动。
作业链中的作业并非必须通过操作系统中的通信设备直接在另一项作业或调用中出现。例如,可以有这样的情况,在特定的时隙内,活动中不存在有排队执行或等待的作业。在这种情况下,仅由以下将详细说明的链路图来定义所说的活动。如果当前一项新作业起源于所述活动独占的一些资源,如用户B的线路,那么作业4.10也属于所说的活动。
参照图2,如果有接线员或第三方C要加入谈话,那么,就更难区分“独立”和“不独立”。该事件的确是涉及到现有的活动20,但它首先导致了一个新的活动22的创建。这两项活动通过作业链汇合于相同的资源即汇合于用户A的半个调用进程24而形成了一“活动组”,如图2概略所示。但是,应该注意,两个活动共享一种资源并非这两个活动形成活动组的充分条件。为此,多个活动(调用)在不属于同一恢复域内的情况下可以共享访问进程。
足够合理的条件大概是共享动态进程的活动可以形成一活动组,而共享静态进程的活动则不能形成活动组。静态进程被看作是足够健壮的从而能在一种活动不会影响共享进程的其它活动的情况下恢复该活动。
如图3概略所示,所说的活动在生存期内会与不同的资源相连较短或较长的一段时间。例如,开始执行的作业25总是与进程型的资源26相连。在许多情况下,例如就静态起始进程而言,一旦作业中止,就会直接释放该进程,但由于已为该进程创建了端口28等类似原因,该进程也可以仍与所说的活动相连一段较长的时间,因此,来自同一活动的新调用会出现在较后的时间点上,如标号30和32所示,这意味着可分别连上或断开新进程34。
所述活动通常连接的一种重要类型资源是通信端口,该通信端口从属于操作系统的通信设备。所有的端口都从属于进程并且每个端口都涉及到一相对的端口。通常把端口连接在一起,所说的活动可创建出图4所示的链路图,该链路图把端口6的“拥有者”进程连在一起。通过这种方式,在活动内没有将要被执行的作业期间,该活动也可与进程相连。但是,请注意,这种“连接”并不意味着对进程作任何独占性的访问。
注意到链路图仅仅是以节点和链路方式存在的东西是很重要的。因此,没有能够知道链路图的存在及其范围的集中或分散式的协调功能。系统中存在的有关链路图的仅有知识是每个端口内的有限信息(一个节点能了解链路图中紧相邻的结点)。
端口6还可用于间接地把在一个进程内所管理的的资源与活动相连。在图4进程“入口A”中所执行的程序内,与用户A的硬件相联系的端口6与直接从属于链路图的端口6之间存在有一内部引用。当不希望当前进程与链路图的其余部分一起终止时,就需要这种“内部”连接。一般地说,静态进程应该在链路图拆线后继续存在(参照图6)。
当然,还存在有多种在活动存在期间与该活动相连的其它类型资源,但是,总是端口和链路图才可能把所有的资源连在一起。
由于从属于活动的资源和作业连在一起,所以,在系统中会形成新型的“管区”(domain)。如图5所示,管区40“横贯”与调用有关的所有计算机42、44、46和48。但另一方面各计算机有着明确的分界。在适当类型的设备的支持下,管区40也即活动可非常便利地用作恢复区。
如果能把错误的影响及范围限制在该活动内部并同时释放所有被占用的资源,即么,在最坏的情况下也有可能断开由上述活动所控制的调用,而所有其它调用均保持不变。
这一点与先有技术的方法完全相反,在先有方法中,最小的恢复区是一台独立的计算机。在一次调用中出现严重错误的情况下,标准的方法是重新启动计算机,结果,必须要断开属于该计算机的所有调用。
当链路图中进程之一内出现有严重错误时,通常的方法断开所有的调用即整个活动,不残留任何“调用休眠”(call rests)。如果只想作到这一点,那么,可以用操作系统本身来完成这任务。但是,如果应用程序包含有处理释放活动的代码,那么,可以更灵活更迅速地释放被占用的资源。图6a-6d是因出错而断开调用时的典型图。在这些图中,标号50表示有错的进程,标号52表示静态进程,标号54表示动态进程。在这一实施例中,事件链贯穿三个步骤即分别如图6a、图6b和图6c所示的步骤,并且会导致图6d所示的状态,在该状态下,只剩下静态进程52。具体地说,每个进程总是在按箭头58终止自身以前先在其链路上发送出一称为“Connection Abort”(连接废弃)的中断消息56。对上述最后一个步骤来说,使用了标志“Context Terminate”(上下文中止)。
对系统更新来说,一项活动也可以起客户的作用。该活动的全部或部分可以执行特定版本的程序。如业已安装了新版的程序。那么,就可以在一定时间内创建使用这一程序版本的“测试活动”,而对旧版程序来说,仍控制着“标准的”活动。以后,对新程序来说,可以进行选择以便控制新的“标准”活动。
这要求活动与“活动属性”相关联。属性必须包括带有有关活动类型的信息的字段。该属性必须存在于包括在活动内的所有消息、作业、时间管理程序以及作业创建资源中。
活动中系统更新的“有关区”是作业链以及作业创建资源(例如存取进程和端口)即活动包含有系统更新属性的那部分。从系统更新的观点看,链路图是无关和不可见的。
图7更详细地说明了系统更新的过程。在此图中,显示了上下文A、B、C、D、E、E′、F、F′、G。在每个上下文中都有程序执行,为简化起见,假定这些程序有与相应上下文相同的标号。在上下文A-D及G中只有一个程序版本,假定程序A、O和G是旧版程序,程序B和C是新版程序。程序E和F有两个不同的版本,它们分别在E和E′以及F和F′中执行。
例如在系统更新的某一阶段中,所有“标准业务”会转至一“旧”程序版本即上下文E和F,而所有“测试业务”则转至“新”程序版本即上下文E′和F′。可移动的箭头E″和F″说明了本系统中两个程序版本之间的转换。图7显示了测试业务的运行情况。如果只有一个程序版本,那么,对这个版本来说,必须要控制所有的业务,这对上下文A-D和G来说同样是成立的。图中带有文字“测试”的方框UA表示活动中所包括的系统更新属性。
所述操作系统的通信业务根据现有的“定向规则”了解可用的程序版本并控制调用。应该强调的是,图7所用的“规则”仅仅是简化了的实例。
在必须跟踪错误时,活动也可被用作跟踪信息的载体。所以,活动的属性包括有指示是否激活跟踪的字段以及某些“可见性属性”以便在跟踪期间可“查看”那种类型的事件(如每个消息的发送)。还要包括跟踪的标识。属性和跟踪标识是由操作人员间接指定的并且在活动执行过程中随时随地的改变。如果跟踪开始,那么,活动就以跟踪信息缓冲区形式与资源相连。这也随着上述活动并且在所有执行该活动的计算机中都是可以使用的。
在图8中,图1所示的活动中业已启动的跟踪由粗线60标识。带有文字“关”和“开”的方框SA分别表示跟踪的属性,它们分别表示该属性是“关”还是“开”。活动跟踪系统的范围要比用于系统更新的更有限。其影响只涉及到作业链的一部分,即在跟踪属性业已在标号62处“启动”并一直至点64处(在该点处,这部分则为“关闭”)之后的部分。作业链的一部分60称为执行链。在该执行链内也只关心某些特定的事件。一旦执行链改变,跟踪属性就改变自己的值。在图中SA’所示的五个位置“开”处,属性包括了一带有跟踪信息的缓冲区,在位置“关”处则不需要这种缓冲区。
在某些“跟踪点”处可以读取并改变跟踪属性,这些跟踪点分布在沿作业链所在区域内确定的位置上。在图8中,作为实例,用三角SP标记了某些跟踪点。就活动中的事件而言,跟踪点是可以调用的代码。在调用期间,跟踪点可以读取跟踪缓冲区的内容并根据其“可见性”,即对跟踪操作者来说,事件是否是可见的,确定是否要报告事件。
可能存在的可见性属性的实例是“报告正在发送的每一个消息的内容”,随后位于每一端口处的跟踪点处理已报告的内容;或者是“报告所创建的每项作业的标识”,从而使得每个进程内的跟踪点创建这种报告。
为了使跟踪点能报告事件并改变跟踪属性,需要有与操作者即人的交互界面。如何进行这种通信不是本发明的一部分,但是,仍对它加以解释以便说明经过上述界面的信息类型。
操作者发给跟踪点的典型指令是“在所有执行链中添加跟踪属性并将具有含义‘报告消息发送’的可见性属性放至跟踪属性的缓冲区内”。
跟踪点向操作员给出的典型报告是“标识为××内容为xyz的消息刚刚从ABC端口发送至DEX端口”。
从跟踪的观点看,链路图或其它资源是无关的。
本发明以下列条件为基础
—所有直接涉及活动的计算机必须靠一个操作系统工作,所说的操作系统则支持实现本发明所需的机制。不具备这种操作系统的计算机只能作为活动所控制的可用“资源”而存在。
—上述操作系统的通信机构应带有用于检错的高级装置并能将错误报告给用户,这一点是周知的。
—上述操作系统之通信机构的必要扩展必须在根本上不会影响执行和发送能力。
—所述系统及其硬件假设是足够健壮的,因而很少进行恢复。经常且大规模的恢复会严重影响系统的可用性。
本发明不涉及—在上下文出现失效之后如何修复静态进程。
在必要情况下对修复失效或部分失效的活动的支持—所以超出了断开活动和返回执行资源这些功能之外的所有修复工作必须由应用程序自身完成。
—某些用于返回除端口及上下文型执行资源以外的所用资源的机构。
以下说明本发明所依据的结构和原理。将依次说明出错环境中的动作码、处理进程局部错误时的动作码、处理通信错误时的动作码以及其它进程中的错误。
出错环境中的动作码这种动作码是周知的例如从程序设计语言C++编译而来的机器语言代码,并且,这种代码可在出现不同类型的错误环境时执行。
下文中,所使用的上述动作码的名称中在某些情况下会出现“例外”(“Exception”)字样。该字样特别用于指明因某种不正常的事件即例外事件而执行所说的动作码—“ErrorHandler”(错误处理程序)这是操作系统的错误处理程序。在图9中,标号66表示有错进程,标号68表示相关的执行核心。标号70和72分别表示相邻的进程和有关的执行核心。进程66和70通过端口76和78在标号74处彼此相通信。
标号80和82处所示的“ErrorHandler”的任务是从处理器硬件和执行核心以及图9中标号84和86所示的应用程序中接收错误指示。“ErrorHandler”根据这些指示有时主动地干预并控制恢复工作,有时仅统计错误的数量。只有通过两种调用才能进入“ErrorHandler”一种是从应用程序84经由调用“UserException”88,另一种是从以管理方式执行的核心功能部分经由“reportError”90进入。然后在相应的调用之后用参数描述所指示的错误。“UserException”是在要报告错误时使用的代码。如果必要的话,作为与上述调用有关的参数,会给出错误代码和文本错误信息。
传给位于调用“UserException”和“reportError”之后的“ErrorHandler”的所有错误代码都补充有可用的错误信息,即通常为错误代码和对错误的简短文字说明。
—“PortExceptionHandler”(端口例外处理程序)92这是操作系统通信设备的专门例外处理程序,在链路中断或通信出错时调用。该程序的直接恢复方法是中断进行中的进程并将错误报告给“ErrorHandler”。但是,应用程序的设计者可以重写上述处理程序或使该程序专门化,以便能进行更恰当的恢复。上述例外处理程序总是在向其报告了错误的进程中执行。
至于对“PortExceptionHandler”的错误调用,它是在函数“Port”(“端口”)及其专门功能中例外调用“handle Exception”时所执行的代码名称。“Port”及其专门功能在以后将详细说明。
—“ApplicationExceptionHandler”(应用程序例外处理程序)94这是应用程序专门的例外处理程序,在检出错误之后允许应用程序取得控制权的情况下调用此程序。缺省的恢复方法是返回所有的资源并终止进行中的进程。但是,应用程序的设计者可进一步使该处理程序专门化,以便能进行更恰当的恢复。这一例外处理程序总是在出现了错误的进程中执行。
“ApplicationExceptionHandler”是在调用“UserException”之后执行的代码名。“ApplicationExceptionHandler”不处理通信错误,但仅处理进程局部执行错误。
—“Context”(上下文)=进程除其它工作以外,“Context”还检查哪个端口与之相连。当一个进程得到指令要终止时,不管是正常终止还是非正常终止,该处理程序都会很快地指向将要没有拥有者的端口并命令这些端口终止自己及其链路。
对“Context”的调用是“terminateProcess”。它会取消进行中的进程,并且,所有其余的端口也将被取消。
—“Port”(端口)就错误处理而言,端口有以下几个任务
1)接收“删除”(delete),同时将“connectionAbort”发送给相连的端口78,如箭头96所示,若端口存在的话。
2)从其它端口或“MainGate”98中接收错误指示并用有关错误的信息调用“PortExceptionHandler”92,如箭头100所示。
就“Port”的错误标识而言,要作以下几方面的工作1)将包括有可用错误信息的“ReturnedMessage”型消息发送给端口。然后,该端口将用一错误代码调用“PortExceptionHandler”。
2)将包括有可用错误信息的“connectionAbort”型消息发送给端口。然后,该端口将用错误码“connectionError”调用“PortExceptionHandler”。
3)调用“connectionAbort”将上述信息送给端口,该消息告知接收消息的端口与之相连的端口不再存在。这一点与消息“connectionAbort”同样重要和有效。
—“MainGate”(主门)98这一“port”处理某些专门的错误,这些错误必须由操作系统的通信机构加以处理。此外,它还必须能接收和处理寻址错误的消息,因为不存在可以处理它的目的端口。当这种消息出现时,它会向发送端口产生一“ReturnedMessage”型消息。“MainGate”不与任何进程相连。
—“Computer Execution Capability Control”-“COECC”102(计算机执行能力控制)“COECC”的任务是了解所有属于某子网的计算机状态。就错误处理而言,“COECC”只有一项任务,即寻找具有通向失效计算机的端口的链路的端口,然后用“connectionAbort”调用这些端口。消息“stateChange”给出子网内计算机已改变了状态的信息。
—“Application”(应用程序)84=86在广义上使用“Application”一词,也就是说,本文指通信机构的所有用户。在许多情况下,它自己发现错误并报告、甚至处理错误。
—“Kernel”(内核)104=68=72“Kernel”是指执行核心。它向“ErrorHandler”报告错误。此外,“Kernel”包括操作系统通信机构的某些部分,即“MainGate”和“Port”,这是因为,这些部分的错误处理在用户进程中进行并报告来自其中的错误。“COECC”也是“Kernel”的一部分,但在图中是分别画出的,这是因为,它的功能与检错有关。
对“Kernel”不存在专门的调用。“Kernel”在错误环境中起作用时只具有活动功能。
以下参照图11-19说明几种错误处理环境。就总体内容而言,图11-19与图9相同并与图9有相同的标号以指示类似的功能和现象。图中出现在括号内的数字表示出现在各个图中的功能步骤顺序号。
对处理器局部错误的处理—由组件或执行核心所检测的应用程序执行错。参照图10。
这种类型的错误是寻址超出许用区域、被零除、溢出、循环等等。
这种错误会导致(通常为硬件的)中断,这种中断使得当前函数104通过“reportError”(1)向操作系统的“ErrorHandler”80发送一错误指示。在有错误的情况下,进程总是被判定为不可靠的,所以,“ErrorHandler”会向该进程发送“terminateProcess”,该进程又会向剩下的端口发送“delete”(3)。这些端口又会在它们的链路上发送“ConnectionAbort”(4)。如果错误是静态进程的问题,那么“ErrorHandler”就会创建一个同类型的新进程并调用其相同的启动例程。
—由应用程序84自身检测到的应用程序执行错误。参照图11。
如果应用程序84在执行过程中检测到有某种严重错误出现,那么,它就主动和通常一样经由“UserException”88调用“ErrorHandler”90(1)。这时,将进程判定为“可靠的”,这是因为,该进程自身可检测并报告错误。所以,“Kernel”104可能把控制权返回给应用程序专门的“ApplicationExceptionHandler”94。做这种处理的缺省方法仍然是用“TerminateProcess”终止进程,随后,同利用“delete”(3)和“ConnectionAbort”(4)的情况一样继续进行下去。
—系统调用时的错误。参照图12和图13。
如果在系统调用105过程中核心68检测到严重错误,那么,如图12所示,从上述核心的返回值就会指示出这种错误(1)。“Exception”106会发送给应用程序(2),因此,该应用程序的“ApplicationExceptiontlandler”94自身会处理上述错误(3)。此后,处理工作进入如参照图11所述的情况,需要时利用“terminateProcess”(4)、“delete”(5)以及“ConnectionAbort”(6)终止进程(8)。
就某些错误而言,核心104可以直接得出进程是不可靠的结论。在这种情况下,该核心直接报告给“ErrorHandler”80,如图13所示。然后,“ErrorHandler”80终止进程(2)。后续的工作同在图12中一样。
处理通信错误—丢失的消息如果“Call”或“Reply”型消息丢失,就会被正要释放的原始调用部分的时间管理程序检测出来。就“Call-Reply”而言,调用端口控制着时间管理程序,并且,当释放时间管理程序时,会将相关的错误代码作为一种应答返回给调用“Call”。后续工作与前述参照图12和图13对中断的系统调用所作的说明完全相同。
如果丢失的消息是“Cast”,那么,调用的应用程序本身会控制时间管理程序。当释放时间管理程序时,调用部分处于和先前参照图11所述相同的情况。
参照图14,也可以用顺序计数来检测丢失的消息。对诸如“Call”、“Cast”和“Reply”来说,会顺序出现。在双向链路的情况下,对发送在该链路上的所有消息顺序计数,因此,接收方可检测计数中的空缺。会出现以下情况。调用部分发送一顺序计数的消息,该消息在途中丢失(1)。调用部分发送下一个消息(2),消息的序数加一(2)。接收端口76检测上述计数中的空缺并用有关遗漏数的信息向“ReturnMessage”(3)型调用部分78发送消息。端口78首先调用“ErrorHandler”82(4),然后用错误代码“LostMessage”调用“PortExceptionHandler”(5),之后,“PortExceptionHandler”作某种形式的恢复。
—寻址错误消息。参照图15。
在“MainGate”98中会出现消息130(1),此消息因某种原因包括一错误的目的地址(未声明的端口名、旧的端口基准地址或类似的地址)。“MainGate”向发送方的端口78发送一“ReturnedMessage”型消息(2)。端口78首先调用“ErrorHandler”82(3),然后用错误代码“PortNotAvailable”调用“PortExceptionHandler”92(4)。此后进行以上所说的步骤。
—中断的联系。
如果与其它计算机的联系74中断,那么,可以用两种方式来检测这种中断1)参照图16。发出的消息将不会到达。相反,该消息会出现在它已到达的计算机的“MainGate”98中(1)。同前述情况一样,“MainGate”会向发送方端口78发送“ReturnedMessage”(2),此后,用另一种错误代码即“ComputerNotAvailable”进行如参照图15所述的步骤。
2)发送方端口的链路管理程序检测到不再可能到达所说的目的地并用“reprotError”调用“ExceptionHandler”(未显示)。以后的情况与步骤(1)相同。
其它进程中的错误—主或辅计算机内的失效进程。参见图17。
当进程66失效(即被“ErrorHandler”所终止)但执行该进程的计算机仍保持不变时,该计算机的所有链接端口如76等会在链路上发出“ConnectionAbort”(1)。这就会导致用错误代码(2)先调用“ErrorHandler”,再调用接收方进程70中的“PortExceptionHandler”92,从而进行缺省或专门的恢复工作。
—主子网内失效的计算机。参照图18。
如果主子网内的计算机失效,那么,就会很迅速用“StateChange”将其通知给“COECC”102(1)。然后,“COECC”会找出带有涉及到该计算机的链路的端口并用“ComputerNotAvailable”调用这些端口。然后,每个端口都用“ComputerNotAvailable”调用“ErrorHandler”以及自己的“PortExceptionHandler”。此后,以与同样类型的其它错误相类似的方式继续进行事件的过程。
—其它子网内失效的计算机。参照图19。
如果其它子网内的计算机失效,不会通知“COECC”。可通过没有消息到达或操作系统的链路管理程序来检测到所述计算机的失踪。所以,在实践中这种情况与先前参照图16所述的情况相同并且是以同样方式加以检测和处理的。
—其它进程中的循环用两种方式检测程序的死循环1)“Kernel”检测所说的循环并如参照图10所示的那样释放相同的事件链。
2)释放调用进程中的时间管理程序。然后进入上述情况“Lostmessage”,参见图14。
图20概括了特别参照图11-19所述的错误实例。该表包括缩写IPC(进程间通信),其涉及到操作系统的通信机构。
在以上参照附图对不同类型错误实例的说明中,未详细说明所要使用的软件和硬件以及在实践中如何执行所说的函数及进程,这是因为,已经假定在上述说明及附图的指导下,本技术的技术人员知道如何实施本发明。本发明也可用于已知的操作系统并且不以任何特定的硬件为先决条件。
权利要求
1.一种在分布式操作系统中用于卸下已连接的进程链的方法,其中进程是指操作系统中的资源,应用程序可在该资源内执行,并且,作业必须使用该资源以便在所述进程中执行程序代码,作业是一种事件,该事件涉及到所说的进程,因此能执行进程所拥有的对象的方法,一项作业也必须能创建涉及到其它进程或自身进程的新作业;而且所说的进程为作业提供了资源并通过每次只执行一项作业而协调多项作业;所说的方法包括下列步骤在上述进程之间提供双向通信链路并用所述操作系统来跟踪带有链路的进程,并且,如果带有链路的进程中止,那么,就使用该链路;检测进程中的错误并终止该进程;经由所说的链路传递有关进程或计算机失效的信息,并且将这一信息传遍整个的链接进程链;以及将上述信息报告给在链接进程内执行的应用程序,以使得这些应用程序能执行特定的恢复工作。
2.如权利要求1所述的方法,其特征在于,它还包括这样一个步骤使用在链接进程链中从一项作业发送给另一项作业的错误跟踪属性。
3.如权利要求2所述的方法,其特征在于,它包括在执行作业链期间,任何时候都允许所说的属性值发生改变。
4.如权利要求2或3所述的方法,其特征在于,它包括为所说的跟踪属性提供跟踪缓冲区,此缓冲区可存储信息,该信息与系统内由上述跟踪属性所跟踪的事件有关;利用所说的信息创建上述事件的记录。
5.如前述任何一项权利要求所述的方法,其特征在于,它包括在所说的系统内提供系统更新功能;提供系统更新的信息属性,此属性能将内部信息传递给所说的更新功能,而所述内部信息则与在系统内所执行的业务类型有关;在作业链中传递上述信息属性,以便能在执行时确定所执行的特定程序的版本。
6.一种在分布式操作系统中用于卸下链接进程链的系统,其中进程是指操作系统中的资源,应用程序可在该资源内执行,并且,作业必须使用该资源以便在所述进程中执行程序代码;作业是一种事件,该事件涉及到所说的进程,因此能执行进程所拥有的对象的方法,一项作业也必须能创建涉及到其它进程或自身进程的新作业;而且所说的进程为作业提供了资源并通过每次只能执行一项作业而协调多项作业;所说的系统包括编码装置,该编码装置包括第一装置,此装置用于在进程之间提供双向信息链路;第二装置,此装置用于使所说的操作系统能跟踪带有链路的过程,并且,如果有进程中止,就使用所说的链路;第三装置,此装置用于使所说的操作系统或在某些情况下使进程本身去检测进程中的错误并中止该进程;第四装置,此装置用于使所说的操作系统经由上述链路传递有关进程或计算机失效的信息,并将这一失效信息传遍整个的链接进程链;以及第五装置,此装置用于使所说的操作系统将上述失效信息报告给在前述链接进程中执行的应用程序,以便使这些应用程序执行特定的恢复工作。
7.如权利要求6所说的系统,其特征在于,它包括通信机构;包括在上述第一装置内的进程端口,经由这些端口可以进行进程间的通信;不与进程相连的通信端口,这些端口用于处理必须由操作系统的通信机构来处理的特定错误;所说的进程端口具有与错误处理有关的任务,该任务是接收涉及自身进程的“delete”(删除)指令,并且,在执行这一指令的同时将一链路断连消息发送给任何与该端口相链接的端口;从其它进程端口以及任何通信端口中接收错误指示并调用上述通信机构中的代码,以便将与前述错误指示中的错误有关的信息传递给该通信机构。
8.如权利要求7所述的系统,其特征在于,所说的第二装置包括进程端口。
9.如权利要求7或8所述的系统,其特征在于,所说的第三装置包括前述操作系统和进程。
10.如权利要求7至9中任何一个所述的系统,其特征在于,所说的代码是包括在上述四个装置内的例处处理代码,并且总是在向其报告了错误的进程中执行,所说的代码具有下列功能在有链路中断或通信错误时被调用;中止有错误的进程;以及将错误报告给一错误处理代码。
11.如权利要求7至9中任何一个所述的系统,其特征在于,它包括错误跟踪属性,该属性在链接进程链中从一项作业发送给另一项作业。
12.如权利要求11所述的系统,其特征在于,它包括用于在执行作业链期间允许上述跟踪属性在任何时候都可发生改变的装置。
13.如权利要求10或11所述的系统,其特征在于,所说的跟踪属性与跟踪缓冲区相联,该缓冲区用于存储上述系统被跟踪属性所跟踪时有关系统内事件的信息,并且,所说的系统包括用于根据前述信息创建所说事件之作业记录的装置。
14.如权利要求6至13中任何一个所述的系统,它包括系统更新功能;系统更新的信息属性,此属性用于将内部信息传递给所说的更新功能,而所述内部信息则与系统内所执行的业务类型有关;用于在作业链中传递上述信息属性以便能在执行时确定所执行的特定程序之版本的装置。
全文摘要
为了能在分布式操作系统中的进程之间建立双向链路,给进程提供了端口,通过这些端口可以进行进程间的通信。进程和端能使操作系统检查带有链路的进程,如果有进程中止就使用其链路,同时使操作系统发现进程中的错误并中止该进程。为了能使操作系统经由链路传递信息并将信息传遍整个的链接进程链同时将这种信息报告给应用程序以使它们执行特定的工作,使用了一种代码,这种代码在链路中继和通信错误时被调用。
文档编号G06F11/22GK1117766SQ9419114
公开日1996年2月28日 申请日期1994年2月2日 优先权日1993年2月10日
发明者J·P·马罗伊 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1