首页 / 专利库 / 人工智能 / 树形结构 / 在计算机网络中进行分布式处理的一种方法

计算机网络中进行分布式处理的一种方法

阅读:655发布:2022-01-31

专利汇可以提供计算机网络中进行分布式处理的一种方法专利检索,专利查询,专利分析的服务。并且一种在 计算机网络 中实现远程 进程 执行的方法。在计算机中的一台 请求 者(客户)计算机(601)传输一个包含要求执行的进程的标识的远程执行请求到一台服务者计算机(602)。在601和602上都建立文件寻址结构,使得在602上的远程进程的一次文件引用指向位于601上的一个文件。响应远程进程执行请求,在602上激活远程进程。响应远程进程的一次文件引用,按照寻址结构,自动地从601上检索文件。,下面是计算机网络中进行分布式处理的一种方法专利的具体信息内容。

1、在具有多个各自有独立文件系统的计算机网络中实现远程进程执行的一种方法,其特征在于包括以下步骤:
从计算机中的一台请求计算机向计算机中的一台服务计算机传输一个远程执行请求,它包括要执行的一个进程的标识;
在请求和服务计算机上建立一个文件寻址结构使得在服务计算机上的远程进程的一次文件引用指向位于请求计算机上的一个文件;
响应这一远程进程执行请求,在服务计算机上激活这一被标识的进程;
据此,响应远程进程的一次文件引用,按照这一寻址结构,从请求计算机上自动地检索文件。
2、权利要求1的方法中的建立文件寻址结构步骤的特征在于进一步包括:
在请求计算机上建立一个或多个通信信道供服务计算机进行文件访问;
在远程执行请求中加入使服务计算机能寻址通信信道的报文信息。
3、权利要求2的方法的特征在于进一步包括下述步骤:
为了从服务计算机接收一个远程进程完成信号,在请求计算机上建立一个完成通信信道;
在远程执行请求中加入使服务计算机能寻址完成通信信道的报文信息。
4、权利要求1的方法的特征在于进一步包括下述步骤:
响应用户的登录,在请求计算机上建立一个进程;
响应用户将进程指定为远程执行的命令,生成远程执行请求报文文。
5、权利要求4的方法的特征在于进一步包括下述步骤:
在远程执行请求中加入存储在请求计算机上的描述用户进程操作环境的报文信息;
响应远程执行请求,在服务者计算机上建立一个远程进程为这一请求服务;
使用包含在远程执行请求报文中的操作环境信息,为远程进程建立一个操作环境。
6、权利要求5的方法的特征在于其中的进程操作环境包括一个或多个存储的环境变量,该变量说明为进程事先设定的操作条件,其中,加入操作环境信息的步骤进一步包括下述步骤:
读取环境变量的状态;
将这些环境变量状态加入远程执行请求报文中。
7、权利要求6的方法的特征在于其中为远程进程建立一个操作环境步骤进一步包括下述步骤:
将远程进程请求报文中的环境变量状态存入和该远程进程相关联的对应环境变量中。
8、权利要求7的方法其特征在于在每一台计算机上活跃的每一个进程在该计算机上都有一个独立的状态变量,而且这一变量包含了说明该进程事先设定的状态的信息,此方法进一步包括下述步骤:
在请求计算机上,将用户进程的状态变量设置为说明该进程为远程进程的代理进程的状态;
将代理进程设置为不活跃状态等待远程进程的完成。
9、权利要求8的方法的特征在于进一步包括下述步骤:
在远程进程执行请求报文中加入文件选择信息,为远程进程所能引用的每一文件指明是在请求计算机还是服务计算机上寻址该文件。
10、权利要求2的方法其特征在于其中的请求与服务计算机上的文件系统各自层次地组织成包含文件的目录的树形结构,该树形结构从一个根目录开始,其中的每一计算机进程有与它相关联的一个省缺根目录指针和一个替补根目录指针,其中的方法进一步包括下述步骤:
在服务计算机上,响应远程执行请求报文,将与远程进程相关联的省缺根目录指针的状态设置成指向请求计算机的根目录,并将替补根目录指针的状态设置成指向服务计算机上的根目录。
11、权利要求10的方法的特征在于进一步包括下述步骤:
在服务计算机上,对远程进程的一次文件引用根据来自请求计算机的文件信息,选择省缺或替补根目录指针查找该文件。
12、权利要求11的方法的特征在于,其中的文件是用路径名标识的,路径名包括在文件系统中被跟踪的一个目录序列和在最后一个指名的目录中定位的一个文件名作为结尾。其中,来自请求计算机的文件信息进一步包括一个或多个目录路径名,而且其中的选择省缺或替补根目录指针的步骤进一步包括下述步骤:
将被引用文件的路径名与来自请求计算机的一个或多个目录路径名进行比较;
如果来自请求计算机的文件信息中的一个或多个目录路径名中的任何一个是被引用文件的路径名的前缀,则选择替补根目录指针查找该被引用文件,否则选择省缺根目录指针。
13、权利要求12的方法的特征在于其中的每一台计算机包括一个本地DISALLOWED变量,该变量可以包含一个或多个目录路径名,而且其中的方法进一步包括下述步骤:
在服务计算机上,响应远程执行请求报文,将文件信息中的一个或多个目录路径名一一与DISALLOWED变量中的每一个路径名进行比较;
将文件信息中以DISALLOWED变量中的目录路径名为前缀的所有目录路径名删除。
14、权利要求13的特征在于,其中的进程环境变量之一标识了该进程的当前目录,其中的方法进一步包括下述步骤:
在请求计算机上,建立一个完成通信信道用于接收来自服务计算机的远程进程完成信号;
建立根目录与当前目录通道信信道供服务计算机访问客户计算机的对应根目录与当前目录;
将上述每一通信信道的寻址信息加入传输给服务计算机的远程执行请求中。
15、在具有多个计算机的一个计算机网络中实现远程进程执行的一种方法,其特征在于包括下述步骤:
从计算机中的一台请求者传输一个远程进程请求到计算机中的一台服务者,该请求包括要求服务计算机执行的进程的标识,还进一步包括文件位置信息,为远程进程引用的本地文件在请求计算机或服务计算机上定位;
响应远程进程执行请求,在服务计算机上激活被标识的进程;
响应远程进程的一次文件引用,按照文件定位信息在服务或者请求计算机上检索被引用的文件。
16、在具有多个计算机的一个计算机网络中实现远程进程执行的一种方法,其特征在于每一台计算机包括:
一个数据结构,包含一个指向它的文件系统的第一文件系统指针;
一个第二文件系统指针,它可以设置成指向计算机中的另一台计算机上的文件系统;
一个数据字,可选择地设置成指明使用第一还是第二指针来定位被引用的文件,这一方法包括下述步骤:
从计算机中的一台请求者传输一个远程进程执行请求到计算机中的一台服务者,该请求包括一个进程标识与设置数据字的数据;
响应远程进程执行请求,在服务计算机上设置数据字并激活被标识的进程;
响应进程的一次文件引用,查询数据字以确定在请求计算机上还是服务计算机上定位被引用的文件。
17、在具有多个计算机的一个计算机网络中实现远程进程执行的一种方法,网络中的每一台计算机有一个层次地组织的文件结构,每一台计算机的特征在于进一步包括:
一个操作系统,包括一个文件系统功能供执行中的进程引用文件时对该文件进行访问;
一个数据结构,包括一个指向文件系统起始点的第一指针,一个可以设置成指向计算机中另一台计算机上的文件系统的起始点的第二指针。
一个数据字,可设置成指明使用第一还是第二指针来定位一个被引用的文件;
一个远程执行服务程序,这一方法包括下述步骤:
从计算机中的一台请求者传输一个远程进程执行请求到计算机中的一台服务者上的远程执行服务程序,该请求包含要求执行的进程的标识、用于寻址传输请求的计算机上的文件系统的数据、以及用于设置数据字的数据,
设置数据字,
设置第二指针为请求计算机文件系统的寻址数据,
响应远程进程执行请求,在服务计算机上激活被标识的进程,
响应进程的一次文件引用,查询数据字来确定查找请求计算机和服务计算机中何者来定位被引用的文件。

说明书全文

发明涉及计算机网络,特别涉及分布式和并行处理网络中各个计算机之间的计算机资源共享。

为了在计算机网络中提供分布式处理,迄今已付出巨大努。分布式处理由于平衡了计算机之间忙閒不均的现象而提高了网络中的效率。例如用户可以把文本格式化或浮点数运算这些特别耗时的任务,从自己的家庭计算机上卸下而转移到专适于这些任务的计算机上。

若干系统当前在它们的计算机之间提供了进程共享。G.帕派克(G,Popek)等在《一个对网络透明的高度可靠的分布式系统》(ACMSIGOPS第八次操作系统原理讨论会会报,1981年12月,169-177页)一文中所描述的LOCUS系统设定了一个计算机网络模拟单一虚拟计算机的条件。其中,要求在网络中任何一台计算机上的所有文件都必须具有唯一的网络名。实现这一技术时在许多情况下牺牲了单个网络计算机的独立性,而这是不能令人满意的。

C.安特耐利(C,Atonelli)等人在《SDS/NET-一个交互式分布式操作系统》(IEEE    COMP-CON,1980年9月,487-493页)一文中,描述了另一计算机共享布局。贝克莱加利福尼亚大学提供了一种远程计算机软件共享的方式,它被称作贝克莱软件分布4.2。P.开瓦勒(P.Karaler)与A.格林斯潘(A    Greenspan)在《将UNIX扩充到局部地区网络》(mini-Micros系统,1983年9月)一文中描述了一个 称作Altos-net的系统。D.那维茨(D.Nowitz)与.莱斯克(M.Lesk)在《一个UIVix系统拨号网络的实现》(IEEE    COMPCON,1980年9月,483-486页)一文中描述了称作Uux的系统。但是这些系统的特性是每一网络计算机只能见到自己文件,因而不能令人满意。这意味着在不同的计算机上执行同一进程可能产生不同的结果。就是说,一个登录在一台本地计算机上的用户所执行的进程产生的答案可能与在另一台网络计算机上所产生的答案不同。

按照本发明应用于计算机网络中实行远程进程执行的方法,可解决先有技术所存在的问题。包含一个将被执行的进程的标识的一个远程进程执行请求,从提出请求的一台计算机被传送到提供服务的一台计算机。在请求计算机与服务计算机上同时建立起一个文件寻址结构因此在服务计算机上的远程进程的一次文件引用指向在请求计算机上的文件。远程进程响应远程进程执行请求而在服务计算机上激活,响应于远程进程的一次文件引用,该文件按照寻址结构自动在请求计算机上被检索。

通过在请求计算机上为服务计算机的文件访问建立了一个或多个通信信道,而且在远程进程执行请求中包含了可以由服务计算机对通信信道进行访问的报文信息,从而在提出的公开实施方案中部分地达到了这一结果。

由这样建立起的通信信道中有一条完成信道,报告远程进程完成的信号通过它传递到请求计算机上的用户进程;还有一条从用户进程的当前目录中访问文件的信道;数条访问任何特定文件的信道,这些文件是用户进程在发出远程执行请求报文前打开的。

远程执行请求是响应指定该进程为将由远程执行的用户命令而生 成的。远程执行请求报文包括存储在请求计算机上的描述用户进程的操作环境的信息。服务计算机为响应远程执行请求而建立一个远程进程。最初,远程进程利用远程执行请求报文中的操作环境信息,为本身建立起一个操作环境。

在提出的最佳实施方案中,网络计算机的文件系统是分层地安排在目录的一个树形结构中,这一结构从一个包含在所有目录中的文件的根目录开始。按照本发明的一个方面,每一计算机进程与一个省缺根目录指针和一个替补根目录指针相关联。在服务计算机上,与远程进程相关联的省缺根目录指针的状态设置为指向请求计算机上的根目录,而替补根目录指针的状态则设置为指向服务计算机的根目录。

在响应远程进程的一次文件引用时,来自请求计算机的包含在远程执行请求报文中的文件信息控制是用省缺还是替补根文件目录指针来查找所引用的文件。

按照本发明的另一方面,每台计算机具有一个本地DISALLOWED变量,这一变量可包含文件查找信息并受系统管理员调整。例如,列出不允许远程进程访问的一些在服务计算机上的文件。响应于远程执行请求报文,将请求中的文件信息与DISALLOWED变量中信息相对照,并根据DISALLOWED变量的内容,删除请求报文中的某些文件查找信息。

公开的最佳实施方案在UNiX(AT&T的注册商标)操作系统的一个版本中进行操作。

图1是表示UNIX操作系统的内部数据结构的简化方框图;

图2与图3表示图1中数据结构部分的细节。分别称为进程表(包括系统中每一进程的数据)与用户区(U.area)表,它包含用户的特定数据;

图4,展示了本发明所用的某些系统(计算机)变量;

图5,概念地展示了本发明所使用的逻辑计算机与物理计算机之间的区别,辑辑计算机的引入是为了使服务者计算机(EAGLE)在远程进程的执行中能够访问属于客户计算机(REVEN)的文件;

图6概念地展示出在每一网络计算机上如何维护两个文件系统指针,以使服务者计算机在远程进程执行中能够访问属于客户计算机的文件;

图7至图9是按照本发明为实现远程进程执行而在用户和服务者计算机上运行的程序的流程示意图;

图10展示了在请求与服务计算机上的数据结构设置,这一设置使请求计算机响应远程进程的一次文件访问而进行自动文件访问;

图11至14表示了对请求计算机上的客户进程与对应的远程进程之间的信号(如用户挂起电话)进行处理的程序流示意图;

图15展示了按照本发明对标准的UNIX系统函数nami的修改,该函数响应于文件访问调用而生成文件地址。这一修改允许根据需要生成一个地址,并访问服务者或客户计算机上的文件。

系统的首要作用是为任务分派提供一个计算机控制的环境和一个文件系统。UNIX系统中有三类文件:普通文件,目录与特殊文件。每一文件有一文件名,一个普通文件包含用户放入的任何信息,例如文本或可执行程序。目录提供了文件名与文件自身之间的映射。每一用户有他或她自己的文件的一个本家目录;一个用户也可建立连接到本家目录的其它目录,在这些目录中包含了方便地集中在一起的文件组合。系统维护了若干为自身用的目录,其中之一是根目录,系统中的所有文件都可由跟踪一条路径找到,这一路径通过一条列出的目录链直达要查找的文件。这种查找的起点通常是根目录,尽管也可 以由任一目录开始。其它系统目录包含供公用的程序。系统命令实际上是程序,它是以这种方式提供的。当向系统指定一个文件的名字时,它可以是以路径名的方式,这是以“/”分隔的一个目录名序列并以文件名结尾。如果序列以“/”起始,查找便从根目录开始。否则从用户的当前目录开始文件名/alpha/beta/gamma促使系统在根中查找目录alpha,然后在alpha中查找目录beta,最后在beta中找文件gamma.Gamma可以是普通文件也可以是特殊文件。文件名alpha/beta指定用户当前目录的子目录alpha中名为beta的文件。最简单类型的文件名alpha所指的是在当前目录中找到的一个文件alpha。

系统支持的每一I/O设备至少与一个特殊文件相关联。特殊文件象普通文件一样被读写,但读、写请求导致相关设备的激活。对每一条通信线路,每一个磁盘,每一个磁带机和物理主存储器,都存在特殊文件。系统的每一用户都被赋予一个唯一的用户标识号。在文件建立时,标记了所有者的用户标识号(ID)。对于新文件,给出的是表示文件所有者、用户组中的其他成员、以及除此以外所有用户对文件的读、写和执行的不同许可的一组保护位。

在UNIX系统中的输入和输出(I/O)是用系统调用来完成的,为了说明I/O的主要操作,下面摘要列举了一些基本调用,内容并不涉及复杂的深层操作。在《UNIX系统V程序员参考手册》中对系统调用有详尽的说明,该书可以从AT&T技术公司获得。

为了读或写一个已存在的文件,首先必须打开它。“open”这一系统调用返回一个称作文件描述符的值,这是一个小的整数,用来在以后的系统调用中标识该文件。

为了建立一个新文件或彻底重写一个老文件,使用“Create” 系统调用、“Create”与“open”一样返回一个文件描述符。一旦文件打开后,“read”与“Write”调用便可用以访问该文件。

如前所述,一个目录项只包含相关文件的文件名和指向该文件的一个指针。这一指针是一个称作该文件的i数(索引号)的整数。当该文件受访问时,它的i数便作为进入一个系统表(i表)的索引,这一系统表位于目录所驻在的设备的一个已知位置上。根据i数找到的入口(文件的i节点)包含了由以下内容等组成的文件描述项:文件所有者的用户标识号,文件的物理地址,文件的大小,以及一个用于标志该文件为目录或普通文件或特殊文件的代码。一个“open”或“Create”调用将用户给出的路径名通过查找指名的目录转换成一个i节点数。文件一旦被打开,它的i节点数便存入i节点表中(见图1中114),在系统文件表中设置了一个指向i节点表(图1-12)中该入口的指针而在与这一进程相关联的用户区项(图1-110)中放入了另一个指针,它指向文件系统表中这一入口。当建立新文件时,分配给该文件一个i节点,并为之建立一个包含文件名与i节点数的目录项。

以上讨论只适用于普通文件。当一次I/O请求是针对一个特殊文件的i节点时,该i节点指明一个内部设备名,而这一内部设备名被解释为一对数,它们分别表示设备类型与子设备号。设备类型指出用什么系统例行程序对该设备进行I/O;子设备号则选择连接到一个特定控制器上的磁盘驱动器或若干相同的终端接口中的一个特定接口。

一个执行中的程序称作进程。通常,只能用“fork”系统调用建立新进程。当执行“fork”时,执行中的进程分裂为两个独立执行的进程。这两个进程各有一份原存储器映象的独立付本,并且共享所 有打开的文件。这两个进程的唯一区别是一个被认为是父母进程,另一个是子女进程。父母进程和子女进程都有自己唯一的进程标识(pid)。

相关进程之间可以用读写调用进行通信。这些调用和文件系统I/O调用相同。调用:filep=pipe()返回文件描述符filep并建立一个称作管道的进程间信道。这一信道和其它打开的文件一样,由派生调用在映象中从父母进程传给子女进程。使用管道文件描述符的一次读操作等待直到另一进程使用同一管道的文件描述符进行写操作。此刻,数据便在两个进程的映象之间传送。两个进程都无须知道这些操作是在管道中而不是在普通文件上进行的。

用执行系统调用“exec”可调用另一系统函数,这一调用请求系统装入并执行一个指名的程序,并在这一调用中将自变量传递给它。调用“exec”的进程中的所有代码与数据都被执行文件所取代,但打开的文件,当前目录和进程间关系都保持不变。只有当调用失败时,例如由于找不到执行文件或执行文件的执行许可位没有置位,才从执行函数中返回。

如果一个程序,希望另一个程序复盖掉自己,它只须简单地执行后者,例如编译程序的第一遍希望第二遍复盖自己,只须这样做即可。如果一个程序在执行完另一程序后希望重新得到控制,它派生一个子女进程。子女进程执行后一程序而原父母进程则等待子女进程。

进程同步是碰到进程等待事件时实行的。事件用任意的整数表示。事件由与之相关的表的地址选择。例如,一个正等待它的子女之一结束的进程将等待它自己的进程表入口地址所表示的事件。当一个进程结束时,它发出用它的父母进程表入口表示的事件信号。同样,发出许多进程等待着的事件信号将唤醒它们全体。

另一系统函数“Wait”促使调用者挂起直到它的子女之一结束执行。这时等待返回到结束进程的Pid。

最后,函数调用“exit”(status)结束一个进程,消除其映象并关闭它所打开的文件。其父母进程通过等待函数接到通知并可获得完成进程的状态。进程也可能由于种种非法操作或用户发出的信号而中止。下面要进一步讨论信号,因为在远程进程执行环境中对信号进行处理是本发明的一个方面。

除以上提到的之外,还有许多其它的系统调用,由于讨论它们对理解本发明没有必要,所以不予介绍。读者可由上面提到的参考手册中获得详细说明。

对于大多数用户,与系统的通信是在一个称作外壳的程序协助下实现的。外壳是一个命令行解释程序;它读取用户键入的行并把它们解释为执行其他程序的请求。一个命令行包括一个命令名、后面跟着这一命令的参数。外壳把命令名和参数分解为分离的字符串。然后查找一个以命令名为名的文件;命令名可以是包含“/”字符以指定系统中任何文件的一条路径名。如果找到了这一命令,便把它调入内存加以执行,命令可以使用外壳收集的参数。当命令执行完毕后,外壳恢复自己的执行,并显示一个提示符来通知用户准备就绪接受另一命令。外壳所执行的程序是从三个打开的文件开始的,它们的描述符为0,1,2。当这样的一个程序开始执行时,文件1为写而打开,最好把它理解为标准输出文件,这一文件通常是用户的终端。这样,当程序要写出有意义的信息时常用文件描述符1。反之,标准输入文件0是为读而打开的(通常是用户的键盘),程序要读取用户键入的信息时就读这一文件。文件描述符2被保留作接收出错信息用。

外壳可以改变对用户终端和键盘的这种文件描述符的标准分配, 如果命令参数之一是用“>”作为前缀的话,在这一命令的执行期间,文件描述符1将指向“>”符后面的指名的文件,这称作文件重定向。

外壳在大部分时间内是在等待用户键入命令。当表示结束一行的换行符键入时,外壳从它的read系统调用返回。然后外壳对命令行进行分析,将参数置成相应的执行调用的形式。这时调用“fork”。子女进程便试图以相应的参数实现一次执行,这些子女进程的代码仍是外壳的一部分。如果成功,这就是调入并开始执行这一指定名字的程序,与此同时,由于派生的结果,父母进程等待子女进程的完成和消失,当出现这一情况时,外壳知道命令已执行完毕,它又一次显示提示符并对文件描述符0进行读取以获得另一命令。

这一机制与标准输入输出文件概念配合默契,当一个进程为fork(派生)函数所建立时,它不但继承了父母的内存映象并且继承了它父母当时已打开的所有文件,包括文件描述符为0,1,与2的那些文件。外壳是用这些文件来读入命令行和写出提示符及出错信息的,在通常情况下,外壳的子女-那些命令程序-自动继承它们。

如图1所示,进程表包含为系统中的每一个进程设立的一个表项,如图中的100。系统中的每一个进程在内存中有一个与之相关联的用户区,图1中的U.area    108。进程表项100指向与该进程相关联的用户区108,相反用户区108则指向表项100。一个已由进程所打开的每一文件用一个文件描述符数来标识,该数包含在用户区108的文件描述符表110中。文件描述符数可以经过系统文件表112和系统i节点表114得到翻译,为访问文件指明唯一的设备驱动器。

在图2中展示了进程表的细节,每一表项具有:一个状态变量, 它包含若干个描述进程当前状态的数值中的一个数值;进程的标识(pid);对于有父母进程的进程还有一个父母进程的标识(ppid);该进程所隶属的组的标识(pgrp);执行系统调用的信号处置信息以及一个进程优先值(在UNiX系统词汇中称作好值)。通常,一个进进程组包括一个特定用户创建的所有进程和它们的子女。信号是进程外部信号源对进程的激励。中断(从用户终端生成的中断信号)与电话挂起都是信号的例子。

以上讨论都是脱离我们的发明针对当前存在的UNiX系统而作的。我们对上述讨论中的某些项目按照本发明进行了修改,例如,前面我们说明过一个标准的进程标识(pid)是在单一计算机中的一个唯一标识。我们现在重新定义pid为在一个计算机的网络中一个进程的唯一标识。pid的一个部分现在用于标识正在执行该进程的那台网络计算机。第二部分等价于原来的UNiX系统pid。因此,pid便成为在整个网络中的唯一进程标识符。其他标识符如ppid与pgrp,在本公开的其余部分中也以同样的网络范围特性来对待。

状态变量的取值范围一般与我们的发明无关。然而我们已经为该变量定义了一种新状态AGENT(代理者)。当一个本地进程请求远程进程执行时,将该本地进程的状态变量设置为AGENT状态。提出请求的本地AGENT进程只是在用户计算机上的一个留守进程,它在远程进程结束时接受执行的结果,并可从远程进程接受信号或向它发出信号。

在图3中展示了用户区的详细内容。在它的数据中,包括系统用于进程调度和向用户收款的记帐信息以及一个用户登录标识符。对于一个给定的进程,一组省缺的文件访问许可标识三类不同用户对这一进程建立的文件的读,写与执行(如果该文件是一个程序)许可,这 三类用户是文件的所有者,文件所有者隶属的组的成员,以及在这一计算机上具有登录权的任何其它用户。

此外,在用户区中还包含下述项目:省缺根目录指针,替补文件系统根目录指针。和用户当前目录指针。这些项目部分地控制用户计算机与服务计算机之间所必须的文件访问,以维护服务者对文件系统的用户视图。

图4公开了与理解本发明有关的某些系统(计算机)变量。

SYSID变量包含与之相关联的计算机的标识符。DISALLOWED变量包含系统管理员设置的信息,例如允许系统管理员为了安全原因在本地计算机上建立不允许逻辑上属于用户计算机的进程访问的文件目录。

我们的分布式计算网络由独立自主又互相合作的个人工作站和计算机组成。在公开的最佳实施方案中,每一台网络计算机受UNIX操作系统的一个版本的控制,但这并不是本发明的一种限制。网络中的某些或所有计算机可以安排成一个计算服务者的池,该池可被工作站以对用户透明的方式所利用,以补充它们的计算需要。所谓透明,是指在一台计算机上登录的用户可以在系统中的不同的计算服务者(计算机)上启动一个进程的执行而不需要对进程软件作任何修改,而且保证进程的结果和在用户登录计算机上执行的该进程完全一样。

在网络中包括这样的一种布局,它使每台计算机都能各自宣布自己参加计算服务者的行列成为网络中其他某些或全部计算机的计算服务者,并可各自退出计算服务者行列。

这一布局的一般讨论说明进程在保留它们的本地执行环境的同时允许远程进程执行。公开的这一实施方案在与AI&T3B网互连的AT&T3B2计算机上运行,AT&3B网是与以大网兼容的10兆位/ 秒局部地区网络。每台计算机运行UNIX系统Ⅱ操作系统的一个修改版本。

一台逻辑机器定义为属于一台物理机器的一组进程(本地和远程的)。这一概念展示在图5中。图中有两台计算机RAVEN和EAGLE、RAVEN假定是用户计算机而EAGLE则是服务者。假定RAVEN正在执行一个本地进程500。另一进程502表示为一个代理进程,即一个本地进程的残余部分,它正在等待在EAGLE上执行的它的远程对应进程506的完成。框线512是RAVEN的逻辑计算机边界其中包括远程进程506。注意,每台计算机都有两个对应文件A与B(分别为RAVEN中的508与510以及EAGLE中的514与516)。关于进程502,文件508认为是在RANEN的逻辑边界内的而文件510则不然。反之,在EAGLE上的文件516是作为RAVEN逻辑边界内的文件对待的,而文件514则不然。这是如以下所说明那样实现的。

一台计算机和它的文件系统是作为分离和独立的资源对待的。这一安排是在一台逻辑机器的边界内保留了计算机的全部功能。在服务者EAGLE上远程执行的进程506随身带去存在于用户RAVEN上的文件系统的视图。对于其中的文件,这一视图可以有选择地加以修改。一般情况下,由于文件A同时存在于两台计算机上并且远程进程506引用文件A,所以进程能利用的文件是RAVEN上的文件508而不是ENGLE上的文件514。按照本发明的一个方面,这一点是通过为计算机上的每一进程定义两个根目录指针来实现的,这两个指针分别是省缺根目录指针和替补根目录指针。如前所述,这两个指针维护在进程的用户区中,当进程是在计算机上远程执行时,这两个指针指向不同的文件系统根目录,否则指向同一文件系统。换言之,省 缺根目录指针总是指向进程逻辑上隶属的计算机上的文件系统的根。图6展示了这一布置。图中假定计算机EAGLE代表计算机RAVEN上的一个代理进程正在执行一个远程进程。因此在RAVEN上的用户进程的两个指针都指向RAVEN的文件系统的根目录。然而在服务者计算机EAGLE上,省缺根目录指针同样指向RAVEN的根节点,而替补根节点目录指针则指向它自己的文件系统。换言之,当一个进程是在一台服务者计算上执行时,其替补根目录指针是设置为指向服务者的文件系统的根的。

标准系统服务程序一般在每一台计算机上有一份付本。这些文件是在执行进程的远程计算机上受访问的,而不是跨过网络在客户计算机上受访问的。同样,在远程子女进程执行过程中所建立的临时文件建立在服务者上效率更高。按照本发明的另一方面,这一问题是通过定义一个新的环境变量SWITCH(开关)而得到解决的,这一变量包含了由本地访问文件而不是由客户计算机上访问文件的文件路径名的前缀。通常远程进程使用省缺指针访问文件,但当它要访问位于服务者上的文件时,它就使用替补指针。这是应用SWITCH变量来实现的,下面就要说明这一点。

一个远程进程,例如506,能够发送到达和接收来自一台逻辑机边界内的任何进程的所有标准的UNIX系统信号。UNIX系统提供了将进程组合成进程组的措施,这就能将信号送至进程组的所有成员,进程组存在于逻辑计算机的范围之内。

在UNIX系统中的进程组织成为树的形式。进程间的父母-子女关系也存在于一台逻辑机的边界之内。UNIX系统中的每一进程有一台与之相关联的控制终端,通常是登录终端。如已所述,一个进程是用一个唯一的标识符在网络中唯一地标识的,这一标识符由建立进程 的计算机所生成(即标准UNIX系统pid)并前缀一个在网络范围内唯一的该计算机标识符。因此,在图5中如果RAVEN的网络标识符是C,则代理进程502的pid是CD,这里D是RAVEN中的一个本地进程标识符。远程进程506的pid是EF,其中E是EAGLE的网络标识符,而F是EAGLE中的一个本地进程标识符。

一个进程的执行由一台本地计算机响应于自己所服务的一个终端用户提出的远程执行请求(rexec命令)而予启动,例如图5中的RAVEN。rexec(远程执行)命令中包含远程计算机的网络标识。响应用户的请求报文首先建立一个本地进程,它起初是按照传统的UNIX系统方式进行处理。它的pid标识的是这一本地计算机和rexec命令所建立的本地进程。然后执行图7中的程序。这一程序取代了原来的本地进程而和这一本地进程有相同的pid。步骤700首先确定请求是本地或远程执行。如果是一个本地执行请求,该请求便按传统方式执行,如图中虚线框702所示意的。如果请求是远程执行,步骤704查询一个本地的服务者数据库以确定所请求的服务者是否实际上可被本地计算机作为服务者使用。(该数据库在与我们上面提到的未决名服务者专利申请中说明)如果请求的不是本地计算机能利用的服务者,则进入步骤706向用户发出出错报文并中止执行。否则在步骤708中为向远程机器传输建立一个远程执行请求(RER)报文,报文中可包含复合的操作如管道。标准输入/输出文件重定向,后台执行等,这方面的细节在图8中表示。然而,复合操作并未加以说明,因为这一功能是作为标准UNIX系统功能的一部分而提供的。

步骤800与802检索所有本地用户环境变量和它们所定义的状态,并将这些变量和状态加入用户请求报文。步骤804从用户区 中取得记帐信息,用户标识,以及在处理时刻,以本地方式打开的任何文件的访问许可,并将它们加入RER。此外,步骤804还从进程表的这一本地进程的表项中取得本地进程标识(pid),父母进程标识(ppid),进程组标识(pgrp),信号处置信息,以及进程优先值(好值),并将这些信息加入RER。步骤806为迄今为止已由用户进程打开的每一本地文件建立一个本地接收通信信道。其中包括标准输入,输出与出错信息文件。这是以建立本地接收描述符来实现的。把信道信息在RER报文中送给服务者是为了使之能寻址每一本地用户接收描述符,实现两台计算机之间的通信和文件访问。为了实现这类通信,服务者利用RER报文中的寻址信息建立对应的发送描述符。接收与发送描述符与所讨论的文件描述符相似。这一安排使远程执行的进程通过这些通信信道用对用户不可见的方法和传统的UNIX系统功能访问客户计算机上的文件。类似地,在步骤808中建立了分别与本地计算机的根目录和当前目录相关联的本地通信信道。然后,在图7步骤710中建立本地接收端通信信道,用于接收自服务者计算机送回的远程执行完成信号。本地建立的所有通信信道的接收描述符都包括在RER中,所以服务者计算机能正确地与本地计算机进行通信。这基本上完成了远程执行请求报文的建立工作。步骤712将进程表中这一进程的状态变量设置为AGENT状态。在步骤714中将RER报文传送给服务者计算机。步骤716中,这一本地进程自我挂起,等待服务者计算机返回的执行结果。结果到达后挂起的进程立即重被唤醒来处置返回的结果。挂起和唤醒是用传统的UNIX系统技术来实现的。

图9公开了服务于来自其他计算机的远程执行请求的一台计算机的处理步骤。当一则RER到达时,在计算机的操作系统的控制下进 入RER入口点。步骤904建立一个为请求服务的子女进程。这是以执行“fork”命令实现的。子女进程从步骤906开始执行,首先保存RER报文供以后引用。RER报文是作为派生操作的付作用传递给子女进程的。步骤908在这一计算机上建立与用户的登录计算机相似的用户环境。这一工作主要是这样实现的;即将这一子女进程的本地环境变量设置成RER报文中反映它们在客户计算机上的状态的值。

按照本发明的一个方面,在步骤912中将在服务者上这一进程的SWITCH变量也设置成RER报文中包含的状态。这一状态是定义受访问文件地址的一个或多个目录路径名的序列,这些目录路径名指明了文件属于服务者或客户的文件系统。当然在这以前,步骤910首先要用本地系统变量DISALLOWED对客户计算机来的SWITCH变量中的元素进行过滤。前面提到过,DISALLOWED允许本地系统管理员为了安全原因,在本地机器上建立不允许逻辑上属于客户计算机的进程访问的文件目录。DISALLOWED可以包含由系统管理员定义的一个或多个路径名无素。步骤910将RER报文中申请的SWITCH元素与DISALLOWED元素一一进行比较。任何以DISA-LLOWED元素开头的SWITCH元素都从申请表中删除,在步骤912中,存储在SWITCH中的就是这样一个经过过滤的路径名表。此后,当远程进程引用一个文件时,它将在客户计算机上得到,除非在SWITCH中的一个路径名元素是被引用的文件的路径名的前缀,在这种情况下,文件是在服务者上访问的。下面将详细说明这一点。

步骤914将用户区中的其余项目(例如省缺文件许可)用RER报文中的信息设置或适当的状态。步骤916保存进程组标识(pgrp)、信号处置信息以及好值的状态,用RER报文中的值设置服务者进程 表中的对应项。

最终,用RER报文中指定的一个程序来取代这一远程执行服务者,从而执行该远程请求。(准备工作进行到此,步骤914将在进程表中的这一子女进程标识(pid)设置成从RER报文中送来的父母进程标识(ppid)。)同样,在要建立的子女进程表中的进程组(pgrp)在步骤920中被置为客户计算机上父母进程pgrp。步骤922,924与926为下述文件建立对应的发送描述符:客户计算机上每一个打开的文件;客户计算机上的根与当前目录;用来向客户计算机传递结果的应答信道。这些发送描述符是使用标准UNIX服务程序,根据包含在RER报文中的客户机接受描述符寻找信息建立的。

以上各步骤的执行结果使目前建立的子女进程与它在客户计算机上有相同的执行环境、进程组以及其它特性。例如打开的文件,根与当前目录,信号处置,优先数等等。步骤928通过执行“execle”系统调用来启动远程进程的执行。这一系统调用是exec系统调用的变形,在UNiX系统参考手册中有详细说明。我们可将要求远程执行的实际命令直接用“execle”系统调用执行。然而这样做要求图9中的程序暂停执行而“execle”该命令的每一组成部分。例如,如果命令中包括两个进程A与B之间的一条管道,RER的服务者必须将这两个进程都激活并建立他们之间的这一管道。如果命令中含有将进程输出重定向到另一文件,则服务者必须打开重定向文件并在新文件上建立重定向连接。UNIX系统的外壳自动地完成这一切。因之,得益于所,我们将这一命令作为参数“execle”外壳。“execle”系统调用的执行结果是用外壳取代当前的子女进程。然后由外壳完成命令的执行。如果是单个进程命令,外壳用“fork”命令建立一个 子女外壳。而子女外壳以要执行的进程复盖自己。如果在A、B进程之间有一条管道,则子女外壳“fork”一个孙外壳并在自己与孙之间建立这一管道。然后子女外壳用进程A复盖孙外壳,并用进程B复盖自己。新进程的执行是自动启动的。当进程是以这一方式由系统调用“execle”所调用时,在每一阶段,子女进程的属性均被新进程所继承。由于远程执行服务者将pid设置成为从RER接收来的ppid,因此子女的ppid便指向客户计算机上代理进程的父母。

假定RAVEN是客户而EAGLE是服务者,则图8与图9的程序执行结果在图10中示出。对称在RAVEN上的客户进程,用户区中的省缺目录指针指向i节点表中的表项1000。表项1000包含RAVEN的根目录的i节点,它可以翻译成一个物理存储器地址。用户区中的替补根目录同样指向i节点1000,一个用于从EAGLE访问文件的接收描述符1002也同样指向i节点1000。用户区中当前根目录指针指向对应的i节点项1004,它标识RAVEN上的当前客户进程目录,一个由远程进程对当前目录文件进行访问的接收描述符1006也指向i节点项1004。

为了示例,假定客户进程在RAVEN上有一个打开的文件A、因此,用户区中包含了文件A的项,该项指向文件表中的表项1008。表项1008则指向一个对应的i节点项1010。一个接收描述符1012指向文件表项1008供远程访问文件A使用。

在EAGLE上,用户区中的省缺目录指针指向一个发送描述符1014,而1014则依次指向RAVEN上的接收描述符1002,用户区中的替补根目录指向一个i节点项1016,用于在适当情况下自EAGLE访问文件。用户区中的当前根目录指针指向发送描述符1018供访问RAVEN上的当前目录文件。同样,EAGLE上用户 区中的文件A项指向一个发送描述符1020供访问RAVEN上的文件A使用。为了完整地说明问题,我们假定远程进程已打开了一个本地文件B。为此,用户区中也包含了一个文件B项,它通过文件表与i节点表指向EAGLE上文件B的物理地址。远程进程也可以使用省缺或当前目录指针在RAVEN上打开新的文件。在服务者与客户之间用上述相似的方式可以建立起一个通信结构。读者可参考论文《版本8网络文件系统》,P.J。威因伯格(P.J.Weinberger),USENiX会议会报,盐湖城,Utah,1984年6月12日。

在上述布局中,除了从SWITCH的状态检测到其他的,否则任何文件引用都是按照客户计算机的文件系统视图解决的。我们应当注意到,在我们所建立的环境中,这一切都是自动实现的。当一个文件受到访问时,我们在服务者和客户上分别对应建立的发送描述符与接受描述符,并按照标准UNIX系统性能相互连接,使受访问的文件从客户计算机自动向下传送,而不是访问服务者的文件系统。

在进程执行中,文件系统的选择是由一个称作nami的标准UNIX操作系统函数控制的。当进程访问文件时自动调用nami。标准nami函数将一条路径名翻译成文件在UNIX操作系统中的实际地址。经过修改的nami在确定文件的地址与区域时考虑到SWITCH与DISALLOWED变量的存在。这在图15中示出。nami以引用文件的进程所提出的文件路径名为参数进入。修改后的nami在步骤1500中确定路径名是否从文件系统的根目录开始。在UNIX系统中,以“/”开始的路径名表示查找从根节点开始。否则,指定的路径名在步骤1502送给标准nami,步骤1502用户区中的当前目录指针生成文件的地址。需要注意的是,对于在这一计算机上执行的远程进程,这一当前目录指针是指向客户计算机上的一个目录的。 修改后的nami所返回的是这一目录中的文件地址。在步骤1500中。如果文件查找在一个根目录处开始,步骤1504确定所指的是那一根目录。如同已经说明过的,这是通过判断变量SWITCH的任一路径名是否正好是被引用文件的路径名前缀来确定的。如果是这样,在步骤1506中将标准nami函数转向远程计算机的根目录。否则,步骤1508将标准nami函数转向代理计算机的根目录。举例说明;假定SWITCH只含一个路径名片段/dir1/dir2,当一个远程进程引用具有路径名/dir1/dir2/dir3/filename的文件时,则执行步骤1506。反之如果引用的是文件/dir1/dir3/filename,则执行步骤1508。

图11至14的程序是关于信号处置的。信号是外部动作引起对进程的激励,例如在用户终端上按删除键引起的中断信号,因为与用户终端失去连接而引起的退出信号,或者来自系统动作如由“kill”系统调用所生成的终止信号。一个代理进程有可能接收到指定给它所代表的远程进程的信号。例如,在图5中,进程P在派生进程Q的时刻可能得到Q的Pid而且发送一个信号给Q,但它并不知道Q已经执行了一个远程操作而且已经变成为一个代理进程。标准UNIX发信号函数经过修改,使之并不将信号送到代理进程,而是向服务者发送一份包含代理进程的父母进程的标识(ppid)的报文。发信号函数从图2中的进程表中得到服务者的标识。服务者计算机查找具有与报文中所包含的ppid相同ppid的进程,并将信号投递到这一进程。

UnIX系统信号公开在《UNIX系统V,发放2,《程序员参考手册》第二节信号命令中。

一个信号可以被送给一个特定的进程或整个进程组。特别,图 11是关于对进程组的信号处理的。图12示出图11中的程序所生成的一个进程组信号报文的处理步骤。图13示出对单个进程的信号处理步骤。图14示出对图13中程序所生成的信号报文的相应处理步骤。

详细说明;在接受信号后从START进入图11中的程序,这个信号是执行图11中程序的计算机生成的而且指向一个进程组。注意,信号可以由服务者或客户生成。输入参数是进程组(pgrp)与一个信号标识数。步骤1100在本地进程表中查找定义为属于这一进程组的进程。这是通过将pgrp参数与存在进程表中每个进程的pgrp相比较而确定的。对于网络计算机,有可能在进程表中存在多个与输入参数pgrp匹配的表项。由于这是一个与进程组相关的信号,已发送表的作用是保证只向一台计算机发送一次信号报文。由于已发送表只是临时性的,因此为了简化我们在图中没有表示。一旦找到了一个匹配的pgrp,步骤1104确定匹配的进程是一个本地进程还是一个远程执行进程的代理进程。它是通过查询进程表中对应表项的状态变量而确定的。对于本地进程,信号便象现在UNIX系统所做的那样传送给这一进程。这一操作概念地表示在步骤1106的虚线框中,然后回到步骤1100继续在进程表中查找匹配的pgrp。当步骤1104确定所找到的匹配进程标识为代理进程时,步骤1108从已发送表中确定是否对已与该进程相关联的网络计算机发送过信号报文。如果已发送过,便回到步骤1100继续查找。否则,在步骤1110中建立含有pgrp与信号编号的信号报文而在步骤1112中发送给这一计算机。在步骤1114中,将这一计算机加入已发送表中,此后回到步骤1100继续查找进程表的操作。

图12中的流程图示出当一台计算机收到另一台计算机发来的进程组信号报文后的处理步骤。信号报文在另一台计算机上用图11中的程序生成的。注意,信号可以在客户也可以在服务者计算机上生成而且向另一方发送。如前所述,进程组信号报文中包含上述的进程组(pgrp)与要处理的信号。步骤1200开始对计算机的进程表进行查找,以便定位一个属于这一指定的进程组的进程。如果查找不到这样的进程,程序结束。如果查找到一个匹配的进程,步骤1202便把相关的信号传送给这一进程去处置,这和现行UNIX系统的操作一样。然后继续对进程表进行查找以定位属于这一指定进程组的其他进程。

图13展示了响应本地生成的指向单一进程而不是进程组的信号所执行的程序的流程图。这一例行程序的输入参数是pid。步骤1300从pid中导出进程的计算机标识(sysid)〔这一推导用术语“sysid(pid)”表示〕并确定该进程所在的计算机是否是本地计算机。将信号传输给一个进程有两种方法:用系统函数,如用前面讨论过的对进程组发信号,以及用户发出的直接命令。无论用那一种方法,信号既可能是指向一个本地进程也可能是指向一个远程进程的。如果对步骤1300中的查询的答复所指向的是远程进程,则在步骤1302和1304中建立一个包含赋予的pid并把它传输给Sysid(pid)所标识的远程计算机的信号报文。

如果在步骤1300中,sysid标识符得到匹配,则进程是本地的,然而,这一本地进程可能是一个代理进程,在这一情况下,该信号实际上是指向对应的远程进程的。1306查询状态变量以确定该本地进程是否是代理进程。如果不是,虚线框1308用标准UNiX系统的同样方法处理信号。如果该进程是一个代理进程,步 骤1302和1304建立并向远程计算机传输一则信号报文。

图14示出当一台计算机收到图13中的程序所生成的信号报文时。响应这一报文所执行的程序的流程图。步骤1400在这一计算机上的进程表中查找报文中所标识的进程。如果找到了这一进程,则按传统的UNIX系统方式将信号传递给它,并将控制返回主程序。

无需说明,上述布局只是对本发明的原理的应用的示范,熟练这一技术的人可能在不脱离本发明的精神与范围的情况下设计出其它的布局。

高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈