分布式处理系统中的内部进程通信的制作方法

文档序号:6619479阅读:157来源:国知局
专利名称:分布式处理系统中的内部进程通信的制作方法
技术领域
本发明涉及计算机系统,该系统包括两个或者多个处理单元(CPU),尤其是该系统中的内部进程通信,其中通过静态方式向可以独立操作的不同的CPUs分配不同的进程以及该系统中用于这样的内部进程通信的不包括公知的传统网络性能的操作系统(OS)来实现工作量共享。
技术问题在计算机系统中,需要满足效率和速度的需求,由于一个标准计算机系统的单一CPU每次仅仅能够实现一条信号指令。对于这个问题,通常的解决方法是采用包括两个或者多个现行的CPUs(或者计算机)增加计算机系统的容量。对于不止一个CPU的上述系统,多项任务,典型的是,作为进程给每个CPU分配唯一的符号处理标识符(PID),该标识符包括由CPUs操作的计算机进程,可以被分布在CPUs中用于共享工作量并且允许在同一时刻可以执行不止一个指令。典型地,在多数系统中,为了不同的目的,例如信息交换或者信号接收和发送,需要进行通信,并且当不同的进程被存储在不同的CPUs时,这样的系统还必须包括一些装置,通过这些装置,不同的进程之间可以相互交流而不需要限制内部进程通信就可以处理同一CPU的分配。可以发现,在这样的系统中OS或者任何中断例程也可以发送信号,但是只有进程可以接收信号。当这些系统的CPUs或者计算机独立操作并且它们的OS不包括用于在不同的CPUs或者计算机之间用于系统内“透明”内部进程信号交换的网络能力,需要提供用于在不同的CPUs或者计算机进程之间完成内部进程通信的其它方法。
现有技术以及相关的问题为了给内部进程通信提供方便,在上述提到类型的多处理器或者多个计算机系统中提到过的解决方法是公知的。其中一些解决方法建议使用普通存储器进行这样的通信,而其它的方法则建议在该系统的处理器之间附加其它类型的连接。
美国专利US5062040揭露了一种用于确保信号不丢失而不对复制信号进行处理的多处理装置,并且多处理系统被“透明”的用于现有进程中。一个信号处理码片(signal-handling code fragment)总是在本地处理器中运行从而扩展处理的用户部分。用户核心进程必须发送当前信号结果(也就是,一个信号是否已经被接收到了,而没有被忽略)到一个含有占位包的占位进程,以及任意修改信号结果必须被发送到一个有效的占位进程中,如果任意非忽略信号在占位进程响应之前随后被用户进程接收。则种情况被定义为伪信号状态。每个核心进程用于维护一个表格链接目录,该表格包括前向发送信号,并且一个系统进程运行在基本水平,可以从列表中删除信号并且通过连接到每个处理器的通信信道前向发送到正确的目的地。
发明目的因此,本发明的一个目的是通过一个分布式处理的多处理系统提供一种用于内部进程通信的方案,该方案可以维护处理器和OS的独立并且其中OS一般不需要控制元件或者信息。
发明简述本发明的上述目的是通过提供一个新的虚拟链接处理器(VLH)实现的,该处理器包括用于系统内的现行处理通信的映象进程(shadow process,SP)以及用于CPUs之间通信的驱动适配器(DA)。在本发明的一个方案中,因为需要与其它系统的CPUs或者计算机驻留进程进行通信,CPUs或者计算机的现行驻留处理的符号PIDs也被定义在其它的通信CPUs或者计算机中。因此,一个CPU或者计算机的驻留SP的符号PID与别的CPU或者计算机的驻留SP的符号PID相同。从而,一个特定CPU的驻留进程将被保存在CPU中,其中该进程驻留查找一个与“远程”目标进程的符号PID具有相同符号PID的“本地”SP,该驻留进程由它的PID所定义并且可以传送一个信号到具有另一个PID的“远程”CPU的“远程”驻留目标进程。为了信号交换,本地SP到一个本地通信现行进程的接口与连接现行“远程’’目标进程的接口相同。本地“SP”,然而,实际并没有对该信号起作用,但是却服务于到另一个CPU前向接收信号的操作,“远程”目标进程被分配给该CPU并且对它进行操作。在接收端CPU,通过一个类似的SP接收信号消息,该接收方法轮流将信号转发到现行目标进程。因此,本发明所述系统的CPUs或者计算机之间的信号传送无需具有任何关于VLH存在信息的现行进程就很容易通过新的VLH装置实现。从上述内容可以直接看出,该SP可以用于从一个进程接收一个信号并将该信号转发到另一个CPU或者计算机,也可以向一个进程发送一个信号并且该信号曾经从另一个CPU或者计算机转发。为了在CPUs之间实现信号传送,每个CPU的映象进程都具有到驱动适配器的接口,该驱动适配器轮流具有到驱动器的接口用于发送装置,该发送装置用于提供从一个CPU或者计算机到另一个之间传送信息的系统信道。
附图简述

图1是一个包括两个CPUs或者计算机的系统的问题概况的示意图,每个CPUs或者计算机包括一个需要相互通信的不同驻留进程。
图2是本发明用于解决图1所示问题的一个VLH解决方案范例示意图。
图3是本发明的DA进程的一个实施例的示意图。
图4是本发明的驱动适配器的一个过程的实施例的示意图。
图5是本发明的驱动适配器另一个过程的实施例的示意图。
图6是本发明的映象进程的是实例的示意图。
图7是本发明含有VLH解决方案的系统范例的示意图。
图8表示图7中所示系统范例的现行进程的PIDs之间关系,各个处理器的PIDs映象进程以及它们各自的位置。
图9a-c表示图7中所示系统范例的查询表格的发展。
图10表示在图7所示系统的一个方向传送一个信号。
图11表示在图7所示系统的另一个方向传送一个信号。
实施例的详细说明如下所述,通过实施例以及相关的附图,将对本发明作更详细的介绍。
图1表示一个具有两个处理器并且进程P1和P2在处理器A和B中驻留和运行的系统的典型问题情况,分别地,其中进程之间希望可以进行通信。每个处理器的操作系统(OS)可以对同一个处理器内驻留和运行的进程进行相互通信,但是不能给驻留和运行在不同处理器中的进程之间提供通信。因此,图1所示的典型情况,虽然处理器通过物理连接进行信号传送,但是进程P1和P2却不能相互通信。
图2表示一个类似图1所示情况的示意图,但是现在提供了两个新的P1’和P2’,本发明的驱动适配器,可以使进程之间进行信号传递。在本发明系统中已经实现并且其中利用了处理器的不同类型,系统设计者必须考虑多种处理器的格式,例如字节排序和填充。
参见图3,本发明所示的一个DA进程实现范例的符号表达如图所示。在开始并且初始化之后,进程位于空闲等待(idle)状态直到出现一个信号事件。在信号事件时刻,如果信号来自一个驱动器,那么进程通过下述分支标记(1)表示,或者,如果信号将要被发送到一个驱动器,那么进程通过分支标记(2)表示。
参见图4,本发明所示的一个DA实现的过程范例的符号表达如图所示。该过程用于发送一个信号到DA。
参见图5,本发明所示的一个DA实现的过程范例的符号表达如图所示。该过程用于根据信号的初始进程从DA发送一个信号到SP。该过程的映象进程PID(SPID)取决于参数发送端并且利用GetPID()函数转换到本地PID。SHADOW SIGNAL可以是唯一的信号ID,仅仅用于从DA发送到任意SP。
参见图6,本发明所示的一个(一般)SP执行中的符号表达如图所示。在开始并且初始化之后,进程位于空闲等待状态直到出现一个信号事件。在信号事件时刻,如果信号来自一个DA,进程过程通过下述分支标记(1)表示,对于所有其它信号,进程则通过下述分支标记(2)表示(1)当一个映象进程接收到一个SHADOW SIGNAL,从接收到的信号中提取信号ID和初始信号。然后从信号中提取预定的接收SPID并且利用GetPID( )函数转换到本地PID,并且信号被发送到预定的进程。随后,SP恢复到IDLE状态;
(2)一旦任意一个其它的信号被接收,该信号就被修改SP将接收端的SPID和发送端的SPID加到信号上。信号接收端的处理器地址决定信号发送到哪一个处理器上。然后信号被发送到驱动适配器。SP恢复到IDLE状态。
对于上述两段所描述的进程,下面适用于GetPID( )函数在本地处理器上查找一个基于SPID的PID。GetSPID( )函数在本地处理器上查找一个基于PID的SPID。GetAddress( )函数查找一个基于SPID的PID。处理器地址用于识别不同的处理器。
为了避免模糊或者不确定,在本发明的最佳实施例中系统中仅仅有唯一的一个SPID。另一个方案是使用含有CPU或者计算机的地址的SPID作为进程唯一的标识符。Receiver( )函数以及Sender( )函数是OS函数并且各自返回接收端和发送端的PID。
另一个系统范例如图7所示。假定系统需要已经被满足,那么所需要的范例的参数就不再通过一个含有可用信号处理器的系统来实现了。因此,为了使系统具有合适的可用空间以及处理功率,在所示的系统范例中总共含有7个现行进程,现行进程已经被分为两组(每一组用于一个处理器)。一组包括进程P1,P2和P3,另一组包括进程P4,P5,P6和P7,这两个组分别在处理器A和B中驻留和运行。
现在两个组被分为两个不同的处理器,这就需要对在进程之间曾经有的通信连接重新建立通信。如图8所示,这已经通过在每个处理器中引入和放置“映象进程”实现了,每个“映象进程”用于遗失的“现行”进程。映象进程包括新的VLH,该VLH使得系统中的进程信号交换变得更容易。如范例所示,需要在第一组的进程P1,P2,P3以及第二组的P4,P5,P6以及第二组的P7之间进行通信,然而不需要第一组的任何进程之间的信号交换。因此不必对P7采用映象进程。
在引入映象进程之后,在处理器内就建立了响应系统。通过这样的安排,第一组的现行进程可以查询一个地址用于通过响应于第二组现行进程的映象进程进行信号交换,反之亦然。
为了使不同CPUs之间的信息能够交流,两个处理器之间还需要有通信装置。这样的通信装置应该包括驱动器以及相关的物理连接。为了使映象进程可以使用这样的通信装置,还要有驱动适配器。这些设备如图7所示。
最后,还需要一个用于识别在处理器之间的进程的方法。在所示系统中,假定处理器不具备常规存储器。根据本发明,识别处理器的方法参见图8所示的表格范例,对应于图7的系统范例。
参见图8,可见范例中的进程P7在处理器A中并不包括映象进程PID或者相应的PID,而处理器P7也不需要与任何驻留在处理器A中进程进行信号交换。
在图9a-9c中揭示了表格的发展过程。假定系统不具有通常的存储器,并且图8的参考表格被分为两张表格,如图9所示,并且这两张表格分别放置在相应的处理器中。从图9b的表格中可以看到一旦在处理器A的进程和进程P7之间不再通信,就从表格中删除进程P7。现在我们具有一个参考表格,该表格可以指明信号来自哪个进程以及将被发送到哪个进程。
图7所示的系统范例是一个仅仅具有两个CPUs或者计算机的系统。因此,在本发明仅仅具有两个CPUs或者计算机的系统中,地址域几乎可以忽略不计,而上述表格可以被进一步分为如图9c的范例中所示的表格。这是因为一个从现行进程发送到SP的信号应该总是被发送到另一个“远程”CPU或者计算机,并且一个从DA发送到SP的信号应该被发送到一个现行“本地”进程。
参见图10,从处理器A的一个进程到处理器B的一个进程进行信号交换的范例如图所示。假定有一信号,S1,从现行进程P1发送到现行进程P5。由于)映象进程P5’与现行进程P5具有相同的符号PID,信号的第一接收者将成为响应P5,即P5’,的映象进程。P5’将查询发送者的本地PID,如果有必要,还查询它自己的PID。映象进程利用这些数据查询相应处理器的独立的PID,该PID被称作映象进程PID。所有这些数据都通过较低电平(level)发送,例如驱动适配器以及驱动器。在驱动级,含有一个ID的数据被发送到另一个处理器,从而通知另一个处理器中的驱动器这是一个“映象进程”信号。为了数据传输,可以采用重新传输以及/或者帧编码方法,这取决于本发明的解决方案。当信号到达另一个处理器的驱动适配器时,在表格中执行一个查询,查找响应于信号发送者的那个映象进程。信号S3(仍然带有发送者和接收者信息)接着被发送到该进程。该进程处于情况P1’。当信号到达P1’时,发送者和接收者的信息被删除,而初始信号被发送到预定的接收进程P5。
上文已经揭示了如何从P1向P5发送一个信号。如图11所示,范例的进程P5可以响应进程P1的信号,或者可以从P5向P1发送一个新的信号。上述两种情况的过程都类似于上文所述的过程,仅仅是信号流向相反。
可以发现信号S2和S5也可以是一个产生DA的函数调用,但是也可看作一个表示信息流的信号。
还可以发现,在本发明的解决方案中,上述的信号发送响应并不是强制性的。前面(P1到P5以及P5到P1)描述的两个信号顺序因此可以看作两个独立的信号顺序。
优点进程所采用的信号(有时候也称作消息)是为了向其它的进程提供一些情况。OS或者任何中断例程(没有阐释)也可能发送信号,但是只有进程可以接收信号。这也可以在微处理器中完成,分配系统中的每个处理器的OS并不提供不同进程之间的通信,以至于被驻留在在静态方式下并且运行于不同的处理器之间。
通过在静态方式下给不同的CPUs分配不同的进程来实现工作量分配,其中上述CPUs相互独立运行并且其操作系统(OS)不包括传统的网络功能以及相关的系统开销。
本发明的VLH既不需要修改为专用操作系统的处理器也不需要增加系统的开销和复杂程度就可以对驻留和运行在不同处理器之间的进程进行信号交换。
并且,利用识别映象进程,本发明可以维持系统的简单性。映象进程看似相同,然而却不同。
权利要求
1.在含有两个或多个CPUs或者计算机的系统中,用于内部处理器(CPU)或者内部计算机进程信号交换的一种方法,其中CPUs或者计算机包括独立的操作系统(OS),内部CPU或者计算机通信驱动器以及在CPUs或者计算机之间的相关的内部连接驱动器,其特征在于一个虚拟连接处理器(VLH)包括至少一个用于每个现行进程的映象进程(SP),该进程可以与至少一个驻留在另一个CPU或者计算机中的现行进程进行通信,并且具有多个驱动适配器(DA),每个都可以与至少一个SP和/或驱动适配器(DA)进行通信。
2.如权利要求1所述的方法,其特征在于系统中的有关CPU或计算机的映象进程通过一个进程标识符(PID)来鉴别,该进程标识符(PID)与系统的另一个CPU或者计算机的现行进程的PID相同。
3.如权利要求1或2所述的方法,其特征在于映象进程标识符(SPID)被分配到每个进程中。
4.如权利要求3所述的方法,其特征在于SPID本身是贯穿系统的唯一的进程标识符。
5.如权利要求3所述的方法,其特征在于结合处理器或者计算机地址的SPID是贯穿系统的唯一的进程标识符。
6.如上述权利要求之一所述的方法,其特征在于现行进程是静态的相关或者驻留在系统。
7.如上述权利要求之一所述的方法,其特征在于VLH维持一个系统内特定的CPUs或者计算机中的现行进程的联合的参考目录。
8.如权利要求7所述的方法,其特征在于位于系统的每个通信CPU或者计算机中的地址表由参考目录发展而来。
9.如上述权利要求之一所述的方法,其特征在于将一个CPU或者计算机中的一个进程传送到另一个CPU或者计算机中的另一个进程的信号临时被改为包括至少接收SP的PID。
10.如权利要求9所述的方法,其特征在于将一个CPU或者计算机中的一个进程传送到另一个CPU或者计算机中的另一个进程的信号临时被改为包括至少发送SP的PID。
11.如权利要求1所述的方法,其特征在于给一个CPU或者计算机的DA提供一个关于同一CPU或者计算机的SPs和/或OS的接口。
12.如权利要求1或者11所述的方法,其特征在于给一个CPU或者计算机的DA提供一个面对同一CPU或者计算机的连接CPU或者计算机的内部连接驱动器的接口。
13.在含有两个或多个CPUs或者计算机的系统中,用于内部处理器(CPU)或者内部计算机进程信号交换的一种方法,其中CPUs或者计算机包括独立的操作系统(OS),内部CPU或者内部计算机通信驱动器以及在CPUs或者计算机之间的相关的内部连接驱动器,其特征在于-将一个位于一个CPU或者计算机中的用于另一个CPU或者计算机中的另一个进程的预定信号,从一个初始进程发送到另一个进程的映象进程中,-通过映象进程装置和含有系统其它进程地址的表格来修正信号参数,-通过驱动适配器,驱动器以及相关的互联驱动将修正信号发送到另一个CPU或者计算机,-在另一个CPU或者计算机中通过映象进程接收信号初始进程的修正信号,-利用接收信号中的参数装置通过接收映象进程修正接收到的信号,并且-将修正的接收信号传送到另一个信号的预定进程中。
全文摘要
在由两个或者多个互联的CPUs或者计算机构成的分布式处理系统中,每个CPUs或者计算机具有一个操作系统,其中,在一个用于工作量分配的静态方式下,不同的进程用于特定的CPUs,一个新的虚拟链接处理器(VLH)包括映象进程并且驱动适配器可以使进程在一个CPU或者计算机内驻留并运行,从而实现该进程与驻留并运行在其它CPU或者计算机内的进程之间的信号交换。
文档编号G06F15/16GK1399741SQ00816272
公开日2003年2月26日 申请日期2000年11月24日 优先权日1999年11月25日
发明者P·约翰森, P·O·克罗卡 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1