專利名稱:在計(jì)算機(jī)網(wǎng)絡(luò)中進(jìn)行分布式處理的一種方法
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò),特別涉及分布式和并行處理網(wǎng)絡(luò)中各個(gè)計(jì)算機(jī)之間的計(jì)算機(jī)資源共享。
為了在計(jì)算機(jī)網(wǎng)絡(luò)中提供分布式處理,迄今已付出巨大努力。分布式處理由于平衡了計(jì)算機(jī)之間忙閒不均的現(xiàn)象而提高了網(wǎng)絡(luò)中的效率。例如用戶可以把文本格式化或浮點(diǎn)數(shù)運(yùn)算這些特別耗時(shí)的任務(wù),從自己的家庭計(jì)算機(jī)上卸下而轉(zhuǎn)移到專門適于這些任務(wù)的計(jì)算機(jī)上。
若干系統(tǒng)當(dāng)前在它們的計(jì)算機(jī)之間提供了進(jìn)程共享。G.帕派克(G,Popek)等在《一個(gè)對(duì)網(wǎng)絡(luò)透明的高度可靠的分布式系統(tǒng)》(ACMSIGOPS第八次操作系統(tǒng)原理討論會(huì)會(huì)報(bào),1981年12月,169-177頁(yè))一文中所描述的LOCUS系統(tǒng)設(shè)定了一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)模擬單一虛擬計(jì)算機(jī)的條件。其中,要求在網(wǎng)絡(luò)中任何一臺(tái)計(jì)算機(jī)上的所有文件都必須具有唯一的網(wǎng)絡(luò)名。實(shí)現(xiàn)這一技術(shù)時(shí)在許多情況下犧牲了單個(gè)網(wǎng)絡(luò)計(jì)算機(jī)的獨(dú)立性,而這是不能令人滿意的。
C.安特耐利(C,Atonelli)等人在《SDS/NET-一個(gè)交互式分布式操作系統(tǒng)》(IEEE COMP-CON,1980年9月,487-493頁(yè))一文中,描述了另一計(jì)算機(jī)共享布局。貝克萊加利福尼亞大學(xué)提供了一種遠(yuǎn)程計(jì)算機(jī)軟件共享的方式,它被稱作貝克萊軟件分布4.2。P.開瓦勒(P.Karaler)與A.格林斯潘(A Greenspan)在《將UNIX擴(kuò)充到局部地區(qū)網(wǎng)絡(luò)》(mini-Micros系統(tǒng),1983年9月)一文中描述了一個(gè)稱作Altos-net的系統(tǒng)。D.那維茨(D.Nowitz)與.萊斯克(M.Lesk)在《一個(gè)UIVix系統(tǒng)撥號(hào)網(wǎng)絡(luò)的實(shí)現(xiàn)》(IEEE COMPCON,1980年9月,483-486頁(yè))一文中描述了稱作Uux的系統(tǒng)。但是這些系統(tǒng)的特性是每一網(wǎng)絡(luò)計(jì)算機(jī)只能見到自己文件,因而不能令人滿意。這意味著在不同的計(jì)算機(jī)上執(zhí)行同一進(jìn)程可能產(chǎn)生不同的結(jié)果。就是說,一個(gè)登錄在一臺(tái)本地計(jì)算機(jī)上的用戶所執(zhí)行的進(jìn)程產(chǎn)生的答案可能與在另一臺(tái)網(wǎng)絡(luò)計(jì)算機(jī)上所產(chǎn)生的答案不同。
按照本發(fā)明應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)行遠(yuǎn)程進(jìn)程執(zhí)行的方法,可解決先有技術(shù)所存在的問題。包含一個(gè)將被執(zhí)行的進(jìn)程的標(biāo)識(shí)的一個(gè)遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求,從提出請(qǐng)求的一臺(tái)計(jì)算機(jī)被傳送到提供服務(wù)的一臺(tái)計(jì)算機(jī)。在請(qǐng)求計(jì)算機(jī)與服務(wù)計(jì)算機(jī)上同時(shí)建立起一個(gè)文件尋址結(jié)構(gòu)因此在服務(wù)計(jì)算機(jī)上的遠(yuǎn)程進(jìn)程的一次文件引用指向在請(qǐng)求計(jì)算機(jī)上的文件。遠(yuǎn)程進(jìn)程響應(yīng)遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求而在服務(wù)計(jì)算機(jī)上激活,響應(yīng)于遠(yuǎn)程進(jìn)程的一次文件引用,該文件按照尋址結(jié)構(gòu)自動(dòng)在請(qǐng)求計(jì)算機(jī)上被檢索。
通過在請(qǐng)求計(jì)算機(jī)上為服務(wù)計(jì)算機(jī)的文件訪問建立了一個(gè)或多個(gè)通信信道,而且在遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求中包含了可以由服務(wù)計(jì)算機(jī)對(duì)通信信道進(jìn)行訪問的報(bào)文信息,從而在提出的公開實(shí)施方案中部分地達(dá)到了這一結(jié)果。
由這樣建立起的通信信道中有一條完成信道,報(bào)告遠(yuǎn)程進(jìn)程完成的信號(hào)通過它傳遞到請(qǐng)求計(jì)算機(jī)上的用戶進(jìn)程;還有一條從用戶進(jìn)程的當(dāng)前目錄中訪問文件的信道;數(shù)條訪問任何特定文件的信道,這些文件是用戶進(jìn)程在發(fā)出遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文前打開的。
遠(yuǎn)程執(zhí)行請(qǐng)求是響應(yīng)指定該進(jìn)程為將由遠(yuǎn)程執(zhí)行的用戶命令而生成的。遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文包括存儲(chǔ)在請(qǐng)求計(jì)算機(jī)上的描述用戶進(jìn)程的操作環(huán)境的信息。服務(wù)計(jì)算機(jī)為響應(yīng)遠(yuǎn)程執(zhí)行請(qǐng)求而建立一個(gè)遠(yuǎn)程進(jìn)程。最初,遠(yuǎn)程進(jìn)程利用遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文中的操作環(huán)境信息,為本身建立起一個(gè)操作環(huán)境。
在提出的最佳實(shí)施方案中,網(wǎng)絡(luò)計(jì)算機(jī)的文件系統(tǒng)是分層地安排在目錄的一個(gè)樹形結(jié)構(gòu)中,這一結(jié)構(gòu)從一個(gè)包含在所有目錄中的文件的根目錄開始。按照本發(fā)明的一個(gè)方面,每一計(jì)算機(jī)進(jìn)程與一個(gè)省缺根目錄指針和一個(gè)替補(bǔ)根目錄指針相關(guān)聯(lián)。在服務(wù)計(jì)算機(jī)上,與遠(yuǎn)程進(jìn)程相關(guān)聯(lián)的省缺根目錄指針的狀態(tài)設(shè)置為指向請(qǐng)求計(jì)算機(jī)上的根目錄,而替補(bǔ)根目錄指針的狀態(tài)則設(shè)置為指向服務(wù)計(jì)算機(jī)的根目錄。
在響應(yīng)遠(yuǎn)程進(jìn)程的一次文件引用時(shí),來自請(qǐng)求計(jì)算機(jī)的包含在遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文中的文件信息控制是用省缺還是替補(bǔ)根文件目錄指針來查找所引用的文件。
按照本發(fā)明的另一方面,每臺(tái)計(jì)算機(jī)具有一個(gè)本地DISALLOWED變量,這一變量可包含文件查找信息并受系統(tǒng)管理員調(diào)整。例如,列出不允許遠(yuǎn)程進(jìn)程訪問的一些在服務(wù)計(jì)算機(jī)上的文件。響應(yīng)于遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文,將請(qǐng)求中的文件信息與DISALLOWED變量中信息相對(duì)照,并根據(jù)DISALLOWED變量的內(nèi)容,刪除請(qǐng)求報(bào)文中的某些文件查找信息。
公開的最佳實(shí)施方案在UNiX(AT&T的注冊(cè)商標(biāo))操作系統(tǒng)的一個(gè)版本中進(jìn)行操作。
圖1是表示UNIX操作系統(tǒng)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)化方框圖;
圖2與圖3表示圖1中數(shù)據(jù)結(jié)構(gòu)部分的細(xì)節(jié)。分別稱為進(jìn)程表(包括系統(tǒng)中每一進(jìn)程的數(shù)據(jù))與用戶區(qū)(U.area)表,它包含用戶的特定數(shù)據(jù);
圖4,展示了本發(fā)明所用的某些系統(tǒng)(計(jì)算機(jī))變量;
圖5,概念地展示了本發(fā)明所使用的邏輯計(jì)算機(jī)與物理計(jì)算機(jī)之間的區(qū)別,輯輯計(jì)算機(jī)的引入是為了使服務(wù)者計(jì)算機(jī)(EAGLE)在遠(yuǎn)程進(jìn)程的執(zhí)行中能夠訪問屬于客戶計(jì)算機(jī)(REVEN)的文件;
圖6概念地展示出在每一網(wǎng)絡(luò)計(jì)算機(jī)上如何維護(hù)兩個(gè)文件系統(tǒng)指針,以使服務(wù)者計(jì)算機(jī)在遠(yuǎn)程進(jìn)程執(zhí)行中能夠訪問屬于客戶計(jì)算機(jī)的文件;
圖7至圖9是按照本發(fā)明為實(shí)現(xiàn)遠(yuǎn)程進(jìn)程執(zhí)行而在用戶和服務(wù)者計(jì)算機(jī)上運(yùn)行的程序的流程示意圖;
圖10展示了在請(qǐng)求與服務(wù)計(jì)算機(jī)上的數(shù)據(jù)結(jié)構(gòu)設(shè)置,這一設(shè)置使請(qǐng)求計(jì)算機(jī)響應(yīng)遠(yuǎn)程進(jìn)程的一次文件訪問而進(jìn)行自動(dòng)文件訪問;
圖11至14表示了對(duì)請(qǐng)求計(jì)算機(jī)上的客戶進(jìn)程與對(duì)應(yīng)的遠(yuǎn)程進(jìn)程之間的信號(hào)(如用戶掛起電話)進(jìn)行處理的程序流示意圖;
圖15展示了按照本發(fā)明對(duì)標(biāo)準(zhǔn)的UNIX系統(tǒng)函數(shù)nami的修改,該函數(shù)響應(yīng)于文件訪問調(diào)用而生成文件地址。這一修改允許根據(jù)需要生成一個(gè)地址,并訪問服務(wù)者或客戶計(jì)算機(jī)上的文件。
系統(tǒng)的首要作用是為任務(wù)分派提供一個(gè)計(jì)算機(jī)控制的環(huán)境和一個(gè)文件系統(tǒng)。UNIX系統(tǒng)中有三類文件普通文件,目錄與特殊文件。每一文件有一文件名,一個(gè)普通文件包含用戶放入的任何信息,例如文本或可執(zhí)行程序。目錄提供了文件名與文件自身之間的映射。每一用戶有他或她自己的文件的一個(gè)本家目錄;一個(gè)用戶也可建立連接到本家目錄的其它目錄,在這些目錄中包含了方便地集中在一起的文件組合。系統(tǒng)維護(hù)了若干為自身用的目錄,其中之一是根目錄,系統(tǒng)中的所有文件都可由跟蹤一條路徑找到,這一路徑通過一條列出的目錄鏈直達(dá)要查找的文件。這種查找的起點(diǎn)通常是根目錄,盡管也可以由任一目錄開始。其它系統(tǒng)目錄包含供公用的程序。系統(tǒng)命令實(shí)際上是程序,它是以這種方式提供的。當(dāng)向系統(tǒng)指定一個(gè)文件的名字時(shí),它可以是以路徑名的方式,這是以“/”分隔的一個(gè)目錄名序列并以文件名結(jié)尾。如果序列以“/”起始,查找便從根目錄開始。否則從用戶的當(dāng)前目錄開始文件名/alpha/beta/gamma促使系統(tǒng)在根中查找目錄alpha,然后在alpha中查找目錄beta,最后在beta中找文件gamma.Gamma可以是普通文件也可以是特殊文件。文件名alpha/beta指定用戶當(dāng)前目錄的子目錄alpha中名為beta的文件。最簡(jiǎn)單類型的文件名alpha所指的是在當(dāng)前目錄中找到的一個(gè)文件alpha。
系統(tǒng)支持的每一I/O設(shè)備至少與一個(gè)特殊文件相關(guān)聯(lián)。特殊文件象普通文件一樣被讀寫,但讀、寫請(qǐng)求導(dǎo)致相關(guān)設(shè)備的激活。對(duì)每一條通信線路,每一個(gè)磁盤,每一個(gè)磁帶機(jī)和物理主存儲(chǔ)器,都存在特殊文件。系統(tǒng)的每一用戶都被賦予一個(gè)唯一的用戶標(biāo)識(shí)號(hào)。在文件建立時(shí),標(biāo)記了所有者的用戶標(biāo)識(shí)號(hào)(ID)。對(duì)于新文件,給出的是表示文件所有者、用戶組中的其他成員、以及除此以外所有用戶對(duì)文件的讀、寫和執(zhí)行的不同許可的一組保護(hù)位。
在UNIX系統(tǒng)中的輸入和輸出(I/O)是用系統(tǒng)調(diào)用來完成的,為了說明I/O的主要操作,下面摘要列舉了一些基本調(diào)用,內(nèi)容并不涉及復(fù)雜的深層操作。在《UNIX系統(tǒng)V程序員參考手冊(cè)》中對(duì)系統(tǒng)調(diào)用有詳盡的說明,該書可以從AT&T技術(shù)公司獲得。
為了讀或?qū)懸粋€(gè)已存在的文件,首先必須打開它?!皁pen”這一系統(tǒng)調(diào)用返回一個(gè)稱作文件描述符的值,這是一個(gè)小的整數(shù),用來在以后的系統(tǒng)調(diào)用中標(biāo)識(shí)該文件。
為了建立一個(gè)新文件或徹底重寫一個(gè)老文件,使用“Create”系統(tǒng)調(diào)用、“Create”與“open”一樣返回一個(gè)文件描述符。一旦文件打開后,“read”與“Write”調(diào)用便可用以訪問該文件。
如前所述,一個(gè)目錄項(xiàng)只包含相關(guān)文件的文件名和指向該文件的一個(gè)指針。這一指針是一個(gè)稱作該文件的i數(shù)(索引號(hào))的整數(shù)。當(dāng)該文件受訪問時(shí),它的i數(shù)便作為進(jìn)入一個(gè)系統(tǒng)表(i表)的索引,這一系統(tǒng)表位于目錄所駐在的設(shè)備的一個(gè)已知位置上。根據(jù)i數(shù)找到的入口(文件的i節(jié)點(diǎn))包含了由以下內(nèi)容等組成的文件描述項(xiàng)文件所有者的用戶標(biāo)識(shí)號(hào),文件的物理地址,文件的大小,以及一個(gè)用于標(biāo)志該文件為目錄或普通文件或特殊文件的代碼。一個(gè)“open”或“Create”調(diào)用將用戶給出的路徑名通過查找指名的目錄轉(zhuǎn)換成一個(gè)i節(jié)點(diǎn)數(shù)。文件一旦被打開,它的i節(jié)點(diǎn)數(shù)便存入i節(jié)點(diǎn)表中(見圖1中114),在系統(tǒng)文件表中設(shè)置了一個(gè)指向i節(jié)點(diǎn)表(圖1-12)中該入口的指針而在與這一進(jìn)程相關(guān)聯(lián)的用戶區(qū)項(xiàng)(圖1-110)中放入了另一個(gè)指針,它指向文件系統(tǒng)表中這一入口。當(dāng)建立新文件時(shí),分配給該文件一個(gè)i節(jié)點(diǎn),并為之建立一個(gè)包含文件名與i節(jié)點(diǎn)數(shù)的目錄項(xiàng)。
以上討論只適用于普通文件。當(dāng)一次I/O請(qǐng)求是針對(duì)一個(gè)特殊文件的i節(jié)點(diǎn)時(shí),該i節(jié)點(diǎn)指明一個(gè)內(nèi)部設(shè)備名,而這一內(nèi)部設(shè)備名被解釋為一對(duì)數(shù),它們分別表示設(shè)備類型與子設(shè)備號(hào)。設(shè)備類型指出用什么系統(tǒng)例行程序?qū)υ撛O(shè)備進(jìn)行I/O;子設(shè)備號(hào)則選擇連接到一個(gè)特定控制器上的磁盤驅(qū)動(dòng)器或若干相同的終端接口中的一個(gè)特定接口。
一個(gè)執(zhí)行中的程序稱作進(jìn)程。通常,只能用“fork”系統(tǒng)調(diào)用建立新進(jìn)程。當(dāng)執(zhí)行“fork”時(shí),執(zhí)行中的進(jìn)程分裂為兩個(gè)獨(dú)立執(zhí)行的進(jìn)程。這兩個(gè)進(jìn)程各有一份原存儲(chǔ)器映象的獨(dú)立付本,并且共享所有打開的文件。這兩個(gè)進(jìn)程的唯一區(qū)別是一個(gè)被認(rèn)為是父母進(jìn)程,另一個(gè)是子女進(jìn)程。父母進(jìn)程和子女進(jìn)程都有自己唯一的進(jìn)程標(biāo)識(shí)(pid)。
相關(guān)進(jìn)程之間可以用讀寫調(diào)用進(jìn)行通信。這些調(diào)用和文件系統(tǒng)I/O調(diào)用相同。調(diào)用filep=pipe()返回文件描述符filep并建立一個(gè)稱作管道的進(jìn)程間信道。這一信道和其它打開的文件一樣,由派生調(diào)用在映象中從父母進(jìn)程傳給子女進(jìn)程。使用管道文件描述符的一次讀操作等待直到另一進(jìn)程使用同一管道的文件描述符進(jìn)行寫操作。此刻,數(shù)據(jù)便在兩個(gè)進(jìn)程的映象之間傳送。兩個(gè)進(jìn)程都無須知道這些操作是在管道中而不是在普通文件上進(jìn)行的。
用執(zhí)行系統(tǒng)調(diào)用“exec”可調(diào)用另一系統(tǒng)函數(shù),這一調(diào)用請(qǐng)求系統(tǒng)裝入并執(zhí)行一個(gè)指名的程序,并在這一調(diào)用中將自變量傳遞給它。調(diào)用“exec”的進(jìn)程中的所有代碼與數(shù)據(jù)都被執(zhí)行文件所取代,但打開的文件,當(dāng)前目錄和進(jìn)程間關(guān)系都保持不變。只有當(dāng)調(diào)用失敗時(shí),例如由于找不到執(zhí)行文件或執(zhí)行文件的執(zhí)行許可位沒有置位,才從執(zhí)行函數(shù)中返回。
如果一個(gè)程序,希望另一個(gè)程序復(fù)蓋掉自己,它只須簡(jiǎn)單地執(zhí)行后者,例如編譯程序的第一遍希望第二遍復(fù)蓋自己,只須這樣做即可。如果一個(gè)程序在執(zhí)行完另一程序后希望重新得到控制,它派生一個(gè)子女進(jìn)程。子女進(jìn)程執(zhí)行后一程序而原父母進(jìn)程則等待子女進(jìn)程。
進(jìn)程同步是碰到進(jìn)程等待事件時(shí)實(shí)行的。事件用任意的整數(shù)表示。事件由與之相關(guān)的表的地址選擇。例如,一個(gè)正等待它的子女之一結(jié)束的進(jìn)程將等待它自己的進(jìn)程表入口地址所表示的事件。當(dāng)一個(gè)進(jìn)程結(jié)束時(shí),它發(fā)出用它的父母進(jìn)程表入口表示的事件信號(hào)。同樣,發(fā)出許多進(jìn)程等待著的事件信號(hào)將喚醒它們?nèi)w。
另一系統(tǒng)函數(shù)“Wait”促使調(diào)用者掛起直到它的子女之一結(jié)束執(zhí)行。這時(shí)等待返回到結(jié)束進(jìn)程的Pid。
最后,函數(shù)調(diào)用“exit”(status)結(jié)束一個(gè)進(jìn)程,消除其映象并關(guān)閉它所打開的文件。其父母進(jìn)程通過等待函數(shù)接到通知并可獲得完成進(jìn)程的狀態(tài)。進(jìn)程也可能由于種種非法操作或用戶發(fā)出的信號(hào)而中止。下面要進(jìn)一步討論信號(hào),因?yàn)樵谶h(yuǎn)程進(jìn)程執(zhí)行環(huán)境中對(duì)信號(hào)進(jìn)行處理是本發(fā)明的一個(gè)方面。
除以上提到的之外,還有許多其它的系統(tǒng)調(diào)用,由于討論它們對(duì)理解本發(fā)明沒有必要,所以不予介紹。讀者可由上面提到的參考手冊(cè)中獲得詳細(xì)說明。
對(duì)于大多數(shù)用戶,與系統(tǒng)的通信是在一個(gè)稱作外殼的程序協(xié)助下實(shí)現(xiàn)的。外殼是一個(gè)命令行解釋程序;它讀取用戶鍵入的行并把它們解釋為執(zhí)行其他程序的請(qǐng)求。一個(gè)命令行包括一個(gè)命令名、后面跟著這一命令的參數(shù)。外殼把命令名和參數(shù)分解為分離的字符串。然后查找一個(gè)以命令名為名的文件;命令名可以是包含“/”字符以指定系統(tǒng)中任何文件的一條路徑名。如果找到了這一命令,便把它調(diào)入內(nèi)存加以執(zhí)行,命令可以使用外殼收集的參數(shù)。當(dāng)命令執(zhí)行完畢后,外殼恢復(fù)自己的執(zhí)行,并顯示一個(gè)提示符來通知用戶準(zhǔn)備就緒接受另一命令。外殼所執(zhí)行的程序是從三個(gè)打開的文件開始的,它們的描述符為0,1,2。當(dāng)這樣的一個(gè)程序開始執(zhí)行時(shí),文件1為寫而打開,最好把它理解為標(biāo)準(zhǔn)輸出文件,這一文件通常是用戶的終端。這樣,當(dāng)程序要寫出有意義的信息時(shí)常用文件描述符1。反之,標(biāo)準(zhǔn)輸入文件0是為讀而打開的(通常是用戶的鍵盤),程序要讀取用戶鍵入的信息時(shí)就讀這一文件。文件描述符2被保留作接收出錯(cuò)信息用。
外殼可以改變對(duì)用戶終端和鍵盤的這種文件描述符的標(biāo)準(zhǔn)分配,如果命令參數(shù)之一是用“>”作為前綴的話,在這一命令的執(zhí)行期間,文件描述符1將指向“>”符后面的指名的文件,這稱作文件重定向。
外殼在大部分時(shí)間內(nèi)是在等待用戶鍵入命令。當(dāng)表示結(jié)束一行的換行符鍵入時(shí),外殼從它的read系統(tǒng)調(diào)用返回。然后外殼對(duì)命令行進(jìn)行分析,將參數(shù)置成相應(yīng)的執(zhí)行調(diào)用的形式。這時(shí)調(diào)用“fork”。子女進(jìn)程便試圖以相應(yīng)的參數(shù)實(shí)現(xiàn)一次執(zhí)行,這些子女進(jìn)程的代碼仍是外殼的一部分。如果成功,這就是調(diào)入并開始執(zhí)行這一指定名字的程序,與此同時(shí),由于派生的結(jié)果,父母進(jìn)程等待子女進(jìn)程的完成和消失,當(dāng)出現(xiàn)這一情況時(shí),外殼知道命令已執(zhí)行完畢,它又一次顯示提示符并對(duì)文件描述符0進(jìn)行讀取以獲得另一命令。
這一機(jī)制與標(biāo)準(zhǔn)輸入輸出文件概念配合默契,當(dāng)一個(gè)進(jìn)程為fork(派生)函數(shù)所建立時(shí),它不但繼承了父母的內(nèi)存映象并且繼承了它父母當(dāng)時(shí)已打開的所有文件,包括文件描述符為0,1,與2的那些文件。外殼是用這些文件來讀入命令行和寫出提示符及出錯(cuò)信息的,在通常情況下,外殼的子女-那些命令程序-自動(dòng)繼承它們。
如圖1所示,進(jìn)程表包含為系統(tǒng)中的每一個(gè)進(jìn)程設(shè)立的一個(gè)表項(xiàng),如圖中的100。系統(tǒng)中的每一個(gè)進(jìn)程在內(nèi)存中有一個(gè)與之相關(guān)聯(lián)的用戶區(qū),圖1中的U.area 108。進(jìn)程表項(xiàng)100指向與該進(jìn)程相關(guān)聯(lián)的用戶區(qū)108,相反用戶區(qū)108則指向表項(xiàng)100。一個(gè)已由進(jìn)程所打開的每一文件用一個(gè)文件描述符數(shù)來標(biāo)識(shí),該數(shù)包含在用戶區(qū)108的文件描述符表110中。文件描述符數(shù)可以經(jīng)過系統(tǒng)文件表112和系統(tǒng)i節(jié)點(diǎn)表114得到翻譯,為訪問文件指明唯一的設(shè)備驅(qū)動(dòng)器。
在圖2中展示了進(jìn)程表的細(xì)節(jié),每一表項(xiàng)具有一個(gè)狀態(tài)變量,它包含若干個(gè)描述進(jìn)程當(dāng)前狀態(tài)的數(shù)值中的一個(gè)數(shù)值;進(jìn)程的標(biāo)識(shí)(pid);對(duì)于有父母進(jìn)程的進(jìn)程還有一個(gè)父母進(jìn)程的標(biāo)識(shí)(ppid);該進(jìn)程所隸屬的組的標(biāo)識(shí)(pgrp);執(zhí)行系統(tǒng)調(diào)用的信號(hào)處置信息以及一個(gè)進(jìn)程優(yōu)先值(在UNiX系統(tǒng)詞匯中稱作好值)。通常,一個(gè)進(jìn)進(jìn)程組包括一個(gè)特定用戶創(chuàng)建的所有進(jìn)程和它們的子女。信號(hào)是進(jìn)程外部信號(hào)源對(duì)進(jìn)程的激勵(lì)。中斷(從用戶終端生成的中斷信號(hào))與電話掛起都是信號(hào)的例子。
以上討論都是脫離我們的發(fā)明針對(duì)當(dāng)前存在的UNiX系統(tǒng)而作的。我們對(duì)上述討論中的某些項(xiàng)目按照本發(fā)明進(jìn)行了修改,例如,前面我們說明過一個(gè)標(biāo)準(zhǔn)的進(jìn)程標(biāo)識(shí)(pid)是在單一計(jì)算機(jī)中的一個(gè)唯一標(biāo)識(shí)。我們現(xiàn)在重新定義pid為在一個(gè)計(jì)算機(jī)的網(wǎng)絡(luò)中一個(gè)進(jìn)程的唯一標(biāo)識(shí)。pid的一個(gè)部分現(xiàn)在用于標(biāo)識(shí)正在執(zhí)行該進(jìn)程的那臺(tái)網(wǎng)絡(luò)計(jì)算機(jī)。第二部分等價(jià)于原來的UNiX系統(tǒng)pid。因此,pid便成為在整個(gè)網(wǎng)絡(luò)中的唯一進(jìn)程標(biāo)識(shí)符。其他標(biāo)識(shí)符如ppid與pgrp,在本公開的其余部分中也以同樣的網(wǎng)絡(luò)范圍特性來對(duì)待。
狀態(tài)變量的取值范圍一般與我們的發(fā)明無關(guān)。然而我們已經(jīng)為該變量定義了一種新狀態(tài)AGENT(代理者)。當(dāng)一個(gè)本地進(jìn)程請(qǐng)求遠(yuǎn)程進(jìn)程執(zhí)行時(shí),將該本地進(jìn)程的狀態(tài)變量設(shè)置為AGENT狀態(tài)。提出請(qǐng)求的本地AGENT進(jìn)程只是在用戶計(jì)算機(jī)上的一個(gè)留守進(jìn)程,它在遠(yuǎn)程進(jìn)程結(jié)束時(shí)接受執(zhí)行的結(jié)果,并可從遠(yuǎn)程進(jìn)程接受信號(hào)或向它發(fā)出信號(hào)。
在圖3中展示了用戶區(qū)的詳細(xì)內(nèi)容。在它的數(shù)據(jù)中,包括系統(tǒng)用于進(jìn)程調(diào)度和向用戶收款的記帳信息以及一個(gè)用戶登錄標(biāo)識(shí)符。對(duì)于一個(gè)給定的進(jìn)程,一組省缺的文件訪問許可標(biāo)識(shí)三類不同用戶對(duì)這一進(jìn)程建立的文件的讀,寫與執(zhí)行(如果該文件是一個(gè)程序)許可,這三類用戶是文件的所有者,文件所有者隸屬的組的成員,以及在這一計(jì)算機(jī)上具有登錄權(quán)的任何其它用戶。
此外,在用戶區(qū)中還包含下述項(xiàng)目省缺根目錄指針,替補(bǔ)文件系統(tǒng)根目錄指針。和用戶當(dāng)前目錄指針。這些項(xiàng)目部分地控制用戶計(jì)算機(jī)與服務(wù)計(jì)算機(jī)之間所必須的文件訪問,以維護(hù)服務(wù)者對(duì)文件系統(tǒng)的用戶視圖。
圖4公開了與理解本發(fā)明有關(guān)的某些系統(tǒng)(計(jì)算機(jī))變量。
SYSID變量包含與之相關(guān)聯(lián)的計(jì)算機(jī)的標(biāo)識(shí)符。DISALLOWED變量包含系統(tǒng)管理員設(shè)置的信息,例如允許系統(tǒng)管理員為了安全原因在本地計(jì)算機(jī)上建立不允許邏輯上屬于用戶計(jì)算機(jī)的進(jìn)程訪問的文件目錄。
我們的分布式計(jì)算網(wǎng)絡(luò)由獨(dú)立自主又互相合作的個(gè)人工作站和計(jì)算機(jī)組成。在公開的最佳實(shí)施方案中,每一臺(tái)網(wǎng)絡(luò)計(jì)算機(jī)受UNIX操作系統(tǒng)的一個(gè)版本的控制,但這并不是本發(fā)明的一種限制。網(wǎng)絡(luò)中的某些或所有計(jì)算機(jī)可以安排成一個(gè)計(jì)算服務(wù)者的池,該池可被工作站以對(duì)用戶透明的方式所利用,以補(bǔ)充它們的計(jì)算需要。所謂透明,是指在一臺(tái)計(jì)算機(jī)上登錄的用戶可以在系統(tǒng)中的不同的計(jì)算服務(wù)者(計(jì)算機(jī))上啟動(dòng)一個(gè)進(jìn)程的執(zhí)行而不需要對(duì)進(jìn)程軟件作任何修改,而且保證進(jìn)程的結(jié)果和在用戶登錄計(jì)算機(jī)上執(zhí)行的該進(jìn)程完全一樣。
在網(wǎng)絡(luò)中包括這樣的一種布局,它使每臺(tái)計(jì)算機(jī)都能各自宣布自己參加計(jì)算服務(wù)者的行列成為網(wǎng)絡(luò)中其他某些或全部計(jì)算機(jī)的計(jì)算服務(wù)者,并可各自退出計(jì)算服務(wù)者行列。
這一布局的一般討論說明進(jìn)程在保留它們的本地執(zhí)行環(huán)境的同時(shí)允許遠(yuǎn)程進(jìn)程執(zhí)行。公開的這一實(shí)施方案在與AI&T3B網(wǎng)互連的AT&T3B2計(jì)算機(jī)上運(yùn)行,AT&3B網(wǎng)是與以大網(wǎng)兼容的10兆位/秒局部地區(qū)網(wǎng)絡(luò)。每臺(tái)計(jì)算機(jī)運(yùn)行UNIX系統(tǒng)Ⅱ操作系統(tǒng)的一個(gè)修改版本。
一臺(tái)邏輯機(jī)器定義為屬于一臺(tái)物理機(jī)器的一組進(jìn)程(本地和遠(yuǎn)程的)。這一概念展示在圖5中。圖中有兩臺(tái)計(jì)算機(jī)RAVEN和EAGLE、RAVEN假定是用戶計(jì)算機(jī)而EAGLE則是服務(wù)者。假定RAVEN正在執(zhí)行一個(gè)本地進(jìn)程500。另一進(jìn)程502表示為一個(gè)代理進(jìn)程,即一個(gè)本地進(jìn)程的殘余部分,它正在等待在EAGLE上執(zhí)行的它的遠(yuǎn)程對(duì)應(yīng)進(jìn)程506的完成。框線512是RAVEN的邏輯計(jì)算機(jī)邊界其中包括遠(yuǎn)程進(jìn)程506。注意,每臺(tái)計(jì)算機(jī)都有兩個(gè)對(duì)應(yīng)文件A與B(分別為RAVEN中的508與510以及EAGLE中的514與516)。關(guān)于進(jìn)程502,文件508認(rèn)為是在RANEN的邏輯邊界內(nèi)的而文件510則不然。反之,在EAGLE上的文件516是作為RAVEN邏輯邊界內(nèi)的文件對(duì)待的,而文件514則不然。這是如以下所說明那樣實(shí)現(xiàn)的。
一臺(tái)計(jì)算機(jī)和它的文件系統(tǒng)是作為分離和獨(dú)立的資源對(duì)待的。這一安排是在一臺(tái)邏輯機(jī)器的邊界內(nèi)保留了計(jì)算機(jī)的全部功能。在服務(wù)者EAGLE上遠(yuǎn)程執(zhí)行的進(jìn)程506隨身帶去存在于用戶RAVEN上的文件系統(tǒng)的視圖。對(duì)于其中的文件,這一視圖可以有選擇地加以修改。一般情況下,由于文件A同時(shí)存在于兩臺(tái)計(jì)算機(jī)上并且遠(yuǎn)程進(jìn)程506引用文件A,所以進(jìn)程能利用的文件是RAVEN上的文件508而不是ENGLE上的文件514。按照本發(fā)明的一個(gè)方面,這一點(diǎn)是通過為計(jì)算機(jī)上的每一進(jìn)程定義兩個(gè)根目錄指針來實(shí)現(xiàn)的,這兩個(gè)指針分別是省缺根目錄指針和替補(bǔ)根目錄指針。如前所述,這兩個(gè)指針維護(hù)在進(jìn)程的用戶區(qū)中,當(dāng)進(jìn)程是在計(jì)算機(jī)上遠(yuǎn)程執(zhí)行時(shí),這兩個(gè)指針指向不同的文件系統(tǒng)根目錄,否則指向同一文件系統(tǒng)。換言之,省缺根目錄指針總是指向進(jìn)程邏輯上隸屬的計(jì)算機(jī)上的文件系統(tǒng)的根。圖6展示了這一布置。圖中假定計(jì)算機(jī)EAGLE代表計(jì)算機(jī)RAVEN上的一個(gè)代理進(jìn)程正在執(zhí)行一個(gè)遠(yuǎn)程進(jìn)程。因此在RAVEN上的用戶進(jìn)程的兩個(gè)指針都指向RAVEN的文件系統(tǒng)的根目錄。然而在服務(wù)者計(jì)算機(jī)EAGLE上,省缺根目錄指針同樣指向RAVEN的根節(jié)點(diǎn),而替補(bǔ)根節(jié)點(diǎn)目錄指針則指向它自己的文件系統(tǒng)。換言之,當(dāng)一個(gè)進(jìn)程是在一臺(tái)服務(wù)者計(jì)算上執(zhí)行時(shí),其替補(bǔ)根目錄指針是設(shè)置為指向服務(wù)者的文件系統(tǒng)的根的。
標(biāo)準(zhǔn)系統(tǒng)服務(wù)程序一般在每一臺(tái)計(jì)算機(jī)上有一份付本。這些文件是在執(zhí)行進(jìn)程的遠(yuǎn)程計(jì)算機(jī)上受訪問的,而不是跨過網(wǎng)絡(luò)在客戶計(jì)算機(jī)上受訪問的。同樣,在遠(yuǎn)程子女進(jìn)程執(zhí)行過程中所建立的臨時(shí)文件建立在服務(wù)者上效率更高。按照本發(fā)明的另一方面,這一問題是通過定義一個(gè)新的環(huán)境變量SWITCH(開關(guān))而得到解決的,這一變量包含了由本地訪問文件而不是由客戶計(jì)算機(jī)上訪問文件的文件路徑名的前綴。通常遠(yuǎn)程進(jìn)程使用省缺指針訪問文件,但當(dāng)它要訪問位于服務(wù)者上的文件時(shí),它就使用替補(bǔ)指針。這是應(yīng)用SWITCH變量來實(shí)現(xiàn)的,下面就要說明這一點(diǎn)。
一個(gè)遠(yuǎn)程進(jìn)程,例如506,能夠發(fā)送到達(dá)和接收來自一臺(tái)邏輯機(jī)邊界內(nèi)的任何進(jìn)程的所有標(biāo)準(zhǔn)的UNIX系統(tǒng)信號(hào)。UNIX系統(tǒng)提供了將進(jìn)程組合成進(jìn)程組的措施,這就能將信號(hào)送至進(jìn)程組的所有成員,進(jìn)程組存在于邏輯計(jì)算機(jī)的范圍之內(nèi)。
在UNIX系統(tǒng)中的進(jìn)程組織成為樹的形式。進(jìn)程間的父母-子女關(guān)系也存在于一臺(tái)邏輯機(jī)的邊界之內(nèi)。UNIX系統(tǒng)中的每一進(jìn)程有一臺(tái)與之相關(guān)聯(lián)的控制終端,通常是登錄終端。如已所述,一個(gè)進(jìn)程是用一個(gè)唯一的標(biāo)識(shí)符在網(wǎng)絡(luò)中唯一地標(biāo)識(shí)的,這一標(biāo)識(shí)符由建立進(jìn)程的計(jì)算機(jī)所生成(即標(biāo)準(zhǔn)UNIX系統(tǒng)pid)并前綴一個(gè)在網(wǎng)絡(luò)范圍內(nèi)唯一的該計(jì)算機(jī)標(biāo)識(shí)符。因此,在圖5中如果RAVEN的網(wǎng)絡(luò)標(biāo)識(shí)符是C,則代理進(jìn)程502的pid是CD,這里D是RAVEN中的一個(gè)本地進(jìn)程標(biāo)識(shí)符。遠(yuǎn)程進(jìn)程506的pid是EF,其中E是EAGLE的網(wǎng)絡(luò)標(biāo)識(shí)符,而F是EAGLE中的一個(gè)本地進(jìn)程標(biāo)識(shí)符。
一個(gè)進(jìn)程的執(zhí)行由一臺(tái)本地計(jì)算機(jī)響應(yīng)于自己所服務(wù)的一個(gè)終端用戶提出的遠(yuǎn)程執(zhí)行請(qǐng)求(rexec命令)而予啟動(dòng),例如圖5中的RAVEN。rexec(遠(yuǎn)程執(zhí)行)命令中包含遠(yuǎn)程計(jì)算機(jī)的網(wǎng)絡(luò)標(biāo)識(shí)。響應(yīng)用戶的請(qǐng)求報(bào)文首先建立一個(gè)本地進(jìn)程,它起初是按照傳統(tǒng)的UNIX系統(tǒng)方式進(jìn)行處理。它的pid標(biāo)識(shí)的是這一本地計(jì)算機(jī)和rexec命令所建立的本地進(jìn)程。然后執(zhí)行圖7中的程序。這一程序取代了原來的本地進(jìn)程而和這一本地進(jìn)程有相同的pid。步驟700首先確定請(qǐng)求是本地或遠(yuǎn)程執(zhí)行。如果是一個(gè)本地執(zhí)行請(qǐng)求,該請(qǐng)求便按傳統(tǒng)方式執(zhí)行,如圖中虛線框702所示意的。如果請(qǐng)求是遠(yuǎn)程執(zhí)行,步驟704查詢一個(gè)本地的服務(wù)者數(shù)據(jù)庫(kù)以確定所請(qǐng)求的服務(wù)者是否實(shí)際上可被本地計(jì)算機(jī)作為服務(wù)者使用。(該數(shù)據(jù)庫(kù)在與我們上面提到的未決名服務(wù)者專利申請(qǐng)中說明)如果請(qǐng)求的不是本地計(jì)算機(jī)能利用的服務(wù)者,則進(jìn)入步驟706向用戶發(fā)出出錯(cuò)報(bào)文并中止執(zhí)行。否則在步驟708中為向遠(yuǎn)程機(jī)器傳輸建立一個(gè)遠(yuǎn)程執(zhí)行請(qǐng)求(RER)報(bào)文,報(bào)文中可包含復(fù)合的操作如管道。標(biāo)準(zhǔn)輸入/輸出文件重定向,后臺(tái)執(zhí)行等,這方面的細(xì)節(jié)在圖8中表示。然而,復(fù)合操作并未加以說明,因?yàn)檫@一功能是作為標(biāo)準(zhǔn)UNIX系統(tǒng)功能的一部分而提供的。
步驟800與802檢索所有本地用戶環(huán)境變量和它們所定義的狀態(tài),并將這些變量和狀態(tài)加入用戶請(qǐng)求報(bào)文。步驟804從用戶區(qū)中取得記帳信息,用戶標(biāo)識(shí),以及在處理時(shí)刻,以本地方式打開的任何文件的訪問許可,并將它們加入RER。此外,步驟804還從進(jìn)程表的這一本地進(jìn)程的表項(xiàng)中取得本地進(jìn)程標(biāo)識(shí)(pid),父母進(jìn)程標(biāo)識(shí)(ppid),進(jìn)程組標(biāo)識(shí)(pgrp),信號(hào)處置信息,以及進(jìn)程優(yōu)先值(好值),并將這些信息加入RER。步驟806為迄今為止已由用戶進(jìn)程打開的每一本地文件建立一個(gè)本地接收通信信道。其中包括標(biāo)準(zhǔn)輸入,輸出與出錯(cuò)信息文件。這是以建立本地接收描述符來實(shí)現(xiàn)的。把信道信息在RER報(bào)文中送給服務(wù)者是為了使之能尋址每一本地用戶接收描述符,實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)之間的通信和文件訪問。為了實(shí)現(xiàn)這類通信,服務(wù)者利用RER報(bào)文中的尋址信息建立對(duì)應(yīng)的發(fā)送描述符。接收與發(fā)送描述符與所討論的文件描述符相似。這一安排使遠(yuǎn)程執(zhí)行的進(jìn)程通過這些通信信道用對(duì)用戶不可見的方法和傳統(tǒng)的UNIX系統(tǒng)功能訪問客戶計(jì)算機(jī)上的文件。類似地,在步驟808中建立了分別與本地計(jì)算機(jī)的根目錄和當(dāng)前目錄相關(guān)聯(lián)的本地通信信道。然后,在圖7步驟710中建立本地接收端通信信道,用于接收自服務(wù)者計(jì)算機(jī)送回的遠(yuǎn)程執(zhí)行完成信號(hào)。本地建立的所有通信信道的接收描述符都包括在RER中,所以服務(wù)者計(jì)算機(jī)能正確地與本地計(jì)算機(jī)進(jìn)行通信。這基本上完成了遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文的建立工作。步驟712將進(jìn)程表中這一進(jìn)程的狀態(tài)變量設(shè)置為AGENT狀態(tài)。在步驟714中將RER報(bào)文傳送給服務(wù)者計(jì)算機(jī)。步驟716中,這一本地進(jìn)程自我掛起,等待服務(wù)者計(jì)算機(jī)返回的執(zhí)行結(jié)果。結(jié)果到達(dá)后掛起的進(jìn)程立即重被喚醒來處置返回的結(jié)果。掛起和喚醒是用傳統(tǒng)的UNIX系統(tǒng)技術(shù)來實(shí)現(xiàn)的。
圖9公開了服務(wù)于來自其他計(jì)算機(jī)的遠(yuǎn)程執(zhí)行請(qǐng)求的一臺(tái)計(jì)算機(jī)的處理步驟。當(dāng)一則RER到達(dá)時(shí),在計(jì)算機(jī)的操作系統(tǒng)的控制下進(jìn)入RER入口點(diǎn)。步驟904建立一個(gè)為請(qǐng)求服務(wù)的子女進(jìn)程。這是以執(zhí)行“fork”命令實(shí)現(xiàn)的。子女進(jìn)程從步驟906開始執(zhí)行,首先保存RER報(bào)文供以后引用。RER報(bào)文是作為派生操作的付作用傳遞給子女進(jìn)程的。步驟908在這一計(jì)算機(jī)上建立與用戶的登錄計(jì)算機(jī)相似的用戶環(huán)境。這一工作主要是這樣實(shí)現(xiàn)的;即將這一子女進(jìn)程的本地環(huán)境變量設(shè)置成RER報(bào)文中反映它們?cè)诳蛻粲?jì)算機(jī)上的狀態(tài)的值。
按照本發(fā)明的一個(gè)方面,在步驟912中將在服務(wù)者上這一進(jìn)程的SWITCH變量也設(shè)置成RER報(bào)文中包含的狀態(tài)。這一狀態(tài)是定義受訪問文件地址的一個(gè)或多個(gè)目錄路徑名的序列,這些目錄路徑名指明了文件屬于服務(wù)者或客戶的文件系統(tǒng)。當(dāng)然在這以前,步驟910首先要用本地系統(tǒng)變量DISALLOWED對(duì)客戶計(jì)算機(jī)來的SWITCH變量中的元素進(jìn)行過濾。前面提到過,DISALLOWED允許本地系統(tǒng)管理員為了安全原因,在本地機(jī)器上建立不允許邏輯上屬于客戶計(jì)算機(jī)的進(jìn)程訪問的文件目錄。DISALLOWED可以包含由系統(tǒng)管理員定義的一個(gè)或多個(gè)路徑名無素。步驟910將RER報(bào)文中申請(qǐng)的SWITCH元素與DISALLOWED元素一一進(jìn)行比較。任何以DISA-LLOWED元素開頭的SWITCH元素都從申請(qǐng)表中刪除,在步驟912中,存儲(chǔ)在SWITCH中的就是這樣一個(gè)經(jīng)過過濾的路徑名表。此后,當(dāng)遠(yuǎn)程進(jìn)程引用一個(gè)文件時(shí),它將在客戶計(jì)算機(jī)上得到,除非在SWITCH中的一個(gè)路徑名元素是被引用的文件的路徑名的前綴,在這種情況下,文件是在服務(wù)者上訪問的。下面將詳細(xì)說明這一點(diǎn)。
步驟914將用戶區(qū)中的其余項(xiàng)目(例如省缺文件許可)用RER報(bào)文中的信息設(shè)置或適當(dāng)?shù)臓顟B(tài)。步驟916保存進(jìn)程組標(biāo)識(shí)(pgrp)、信號(hào)處置信息以及好值的狀態(tài),用RER報(bào)文中的值設(shè)置服務(wù)者進(jìn)程表中的對(duì)應(yīng)項(xiàng)。
最終,用RER報(bào)文中指定的一個(gè)程序來取代這一遠(yuǎn)程執(zhí)行服務(wù)者,從而執(zhí)行該遠(yuǎn)程請(qǐng)求。(準(zhǔn)備工作進(jìn)行到此,步驟914將在進(jìn)程表中的這一子女進(jìn)程標(biāo)識(shí)(pid)設(shè)置成從RER報(bào)文中送來的父母進(jìn)程標(biāo)識(shí)(ppid)。)同樣,在要建立的子女進(jìn)程表中的進(jìn)程組(pgrp)在步驟920中被置為客戶計(jì)算機(jī)上父母進(jìn)程pgrp。步驟922,924與926為下述文件建立對(duì)應(yīng)的發(fā)送描述符客戶計(jì)算機(jī)上每一個(gè)打開的文件;客戶計(jì)算機(jī)上的根與當(dāng)前目錄;用來向客戶計(jì)算機(jī)傳遞結(jié)果的應(yīng)答信道。這些發(fā)送描述符是使用標(biāo)準(zhǔn)UNIX服務(wù)程序,根據(jù)包含在RER報(bào)文中的客戶機(jī)接受描述符尋找信息建立的。
以上各步驟的執(zhí)行結(jié)果使目前建立的子女進(jìn)程與它在客戶計(jì)算機(jī)上有相同的執(zhí)行環(huán)境、進(jìn)程組以及其它特性。例如打開的文件,根與當(dāng)前目錄,信號(hào)處置,優(yōu)先數(shù)等等。步驟928通過執(zhí)行“execle”系統(tǒng)調(diào)用來啟動(dòng)遠(yuǎn)程進(jìn)程的執(zhí)行。這一系統(tǒng)調(diào)用是exec系統(tǒng)調(diào)用的變形,在UNiX系統(tǒng)參考手冊(cè)中有詳細(xì)說明。我們可將要求遠(yuǎn)程執(zhí)行的實(shí)際命令直接用“execle”系統(tǒng)調(diào)用執(zhí)行。然而這樣做要求圖9中的程序暫停執(zhí)行而“execle”該命令的每一組成部分。例如,如果命令中包括兩個(gè)進(jìn)程A與B之間的一條管道,RER的服務(wù)者必須將這兩個(gè)進(jìn)程都激活并建立他們之間的這一管道。如果命令中含有將進(jìn)程輸出重定向到另一文件,則服務(wù)者必須打開重定向文件并在新文件上建立重定向連接。UNIX系統(tǒng)的外殼自動(dòng)地完成這一切。因之,得益于所,我們將這一命令作為參數(shù)“execle”外殼?!癳xecle”系統(tǒng)調(diào)用的執(zhí)行結(jié)果是用外殼取代當(dāng)前的子女進(jìn)程。然后由外殼完成命令的執(zhí)行。如果是單個(gè)進(jìn)程命令,外殼用“fork”命令建立一個(gè)子女外殼。而子女外殼以要執(zhí)行的進(jìn)程復(fù)蓋自己。如果在A、B進(jìn)程之間有一條管道,則子女外殼“fork”一個(gè)孫外殼并在自己與孫之間建立這一管道。然后子女外殼用進(jìn)程A復(fù)蓋孫外殼,并用進(jìn)程B復(fù)蓋自己。新進(jìn)程的執(zhí)行是自動(dòng)啟動(dòng)的。當(dāng)進(jìn)程是以這一方式由系統(tǒng)調(diào)用“execle”所調(diào)用時(shí),在每一階段,子女進(jìn)程的屬性均被新進(jìn)程所繼承。由于遠(yuǎn)程執(zhí)行服務(wù)者將pid設(shè)置成為從RER接收來的ppid,因此子女的ppid便指向客戶計(jì)算機(jī)上代理進(jìn)程的父母。
假定RAVEN是客戶而EAGLE是服務(wù)者,則圖8與圖9的程序執(zhí)行結(jié)果在圖10中示出。對(duì)稱在RAVEN上的客戶進(jìn)程,用戶區(qū)中的省缺目錄指針指向i節(jié)點(diǎn)表中的表項(xiàng)1000。表項(xiàng)1000包含RAVEN的根目錄的i節(jié)點(diǎn),它可以翻譯成一個(gè)物理存儲(chǔ)器地址。用戶區(qū)中的替補(bǔ)根目錄同樣指向i節(jié)點(diǎn)1000,一個(gè)用于從EAGLE訪問文件的接收描述符1002也同樣指向i節(jié)點(diǎn)1000。用戶區(qū)中當(dāng)前根目錄指針指向?qū)?yīng)的i節(jié)點(diǎn)項(xiàng)1004,它標(biāo)識(shí)RAVEN上的當(dāng)前客戶進(jìn)程目錄,一個(gè)由遠(yuǎn)程進(jìn)程對(duì)當(dāng)前目錄文件進(jìn)行訪問的接收描述符1006也指向i節(jié)點(diǎn)項(xiàng)1004。
為了示例,假定客戶進(jìn)程在RAVEN上有一個(gè)打開的文件A、因此,用戶區(qū)中包含了文件A的項(xiàng),該項(xiàng)指向文件表中的表項(xiàng)1008。表項(xiàng)1008則指向一個(gè)對(duì)應(yīng)的i節(jié)點(diǎn)項(xiàng)1010。一個(gè)接收描述符1012指向文件表項(xiàng)1008供遠(yuǎn)程訪問文件A使用。
在EAGLE上,用戶區(qū)中的省缺目錄指針指向一個(gè)發(fā)送描述符1014,而1014則依次指向RAVEN上的接收描述符1002,用戶區(qū)中的替補(bǔ)根目錄指向一個(gè)i節(jié)點(diǎn)項(xiàng)1016,用于在適當(dāng)情況下自EAGLE訪問文件。用戶區(qū)中的當(dāng)前根目錄指針指向發(fā)送描述符1018供訪問RAVEN上的當(dāng)前目錄文件。同樣,EAGLE上用戶區(qū)中的文件A項(xiàng)指向一個(gè)發(fā)送描述符1020供訪問RAVEN上的文件A使用。為了完整地說明問題,我們假定遠(yuǎn)程進(jìn)程已打開了一個(gè)本地文件B。為此,用戶區(qū)中也包含了一個(gè)文件B項(xiàng),它通過文件表與i節(jié)點(diǎn)表指向EAGLE上文件B的物理地址。遠(yuǎn)程進(jìn)程也可以使用省缺或當(dāng)前目錄指針在RAVEN上打開新的文件。在服務(wù)者與客戶之間用上述相似的方式可以建立起一個(gè)通信結(jié)構(gòu)。讀者可參考論文《版本8網(wǎng)絡(luò)文件系統(tǒng)》,P.J。威因伯格(P.J.Weinberger),USENiX會(huì)議會(huì)報(bào),鹽湖城,Utah,1984年6月12日。
在上述布局中,除了從SWITCH的狀態(tài)檢測(cè)到其他的,否則任何文件引用都是按照客戶計(jì)算機(jī)的文件系統(tǒng)視圖解決的。我們應(yīng)當(dāng)注意到,在我們所建立的環(huán)境中,這一切都是自動(dòng)實(shí)現(xiàn)的。當(dāng)一個(gè)文件受到訪問時(shí),我們?cè)诜?wù)者和客戶上分別對(duì)應(yīng)建立的發(fā)送描述符與接受描述符,并按照標(biāo)準(zhǔn)UNIX系統(tǒng)性能相互連接,使受訪問的文件從客戶計(jì)算機(jī)自動(dòng)向下傳送,而不是訪問服務(wù)者的文件系統(tǒng)。
在進(jìn)程執(zhí)行中,文件系統(tǒng)的選擇是由一個(gè)稱作nami的標(biāo)準(zhǔn)UNIX操作系統(tǒng)函數(shù)控制的。當(dāng)進(jìn)程訪問文件時(shí)自動(dòng)調(diào)用nami。標(biāo)準(zhǔn)nami函數(shù)將一條路徑名翻譯成文件在UNIX操作系統(tǒng)中的實(shí)際地址。經(jīng)過修改的nami在確定文件的地址與區(qū)域時(shí)考慮到SWITCH與DISALLOWED變量的存在。這在圖15中示出。nami以引用文件的進(jìn)程所提出的文件路徑名為參數(shù)進(jìn)入。修改后的nami在步驟1500中確定路徑名是否從文件系統(tǒng)的根目錄開始。在UNIX系統(tǒng)中,以“/”開始的路徑名表示查找從根節(jié)點(diǎn)開始。否則,指定的路徑名在步驟1502送給標(biāo)準(zhǔn)nami,步驟1502用戶區(qū)中的當(dāng)前目錄指針生成文件的地址。需要注意的是,對(duì)于在這一計(jì)算機(jī)上執(zhí)行的遠(yuǎn)程進(jìn)程,這一當(dāng)前目錄指針是指向客戶計(jì)算機(jī)上的一個(gè)目錄的。修改后的nami所返回的是這一目錄中的文件地址。在步驟1500中。如果文件查找在一個(gè)根目錄處開始,步驟1504確定所指的是那一根目錄。如同已經(jīng)說明過的,這是通過判斷變量SWITCH的任一路徑名是否正好是被引用文件的路徑名前綴來確定的。如果是這樣,在步驟1506中將標(biāo)準(zhǔn)nami函數(shù)轉(zhuǎn)向遠(yuǎn)程計(jì)算機(jī)的根目錄。否則,步驟1508將標(biāo)準(zhǔn)nami函數(shù)轉(zhuǎn)向代理計(jì)算機(jī)的根目錄。舉例說明;假定SWITCH只含一個(gè)路徑名片段/dir1/dir2,當(dāng)一個(gè)遠(yuǎn)程進(jìn)程引用具有路徑名/dir1/dir2/dir3/filename的文件時(shí),則執(zhí)行步驟1506。反之如果引用的是文件/dir1/dir3/filename,則執(zhí)行步驟1508。
圖11至14的程序是關(guān)于信號(hào)處置的。信號(hào)是外部動(dòng)作引起對(duì)進(jìn)程的激勵(lì),例如在用戶終端上按刪除鍵引起的中斷信號(hào),因?yàn)榕c用戶終端失去連接而引起的退出信號(hào),或者來自系統(tǒng)動(dòng)作如由“kill”系統(tǒng)調(diào)用所生成的終止信號(hào)。一個(gè)代理進(jìn)程有可能接收到指定給它所代表的遠(yuǎn)程進(jìn)程的信號(hào)。例如,在圖5中,進(jìn)程P在派生進(jìn)程Q的時(shí)刻可能得到Q的Pid而且發(fā)送一個(gè)信號(hào)給Q,但它并不知道Q已經(jīng)執(zhí)行了一個(gè)遠(yuǎn)程操作而且已經(jīng)變成為一個(gè)代理進(jìn)程。標(biāo)準(zhǔn)UNIX發(fā)信號(hào)函數(shù)經(jīng)過修改,使之并不將信號(hào)送到代理進(jìn)程,而是向服務(wù)者發(fā)送一份包含代理進(jìn)程的父母進(jìn)程的標(biāo)識(shí)(ppid)的報(bào)文。發(fā)信號(hào)函數(shù)從圖2中的進(jìn)程表中得到服務(wù)者的標(biāo)識(shí)。服務(wù)者計(jì)算機(jī)查找具有與報(bào)文中所包含的ppid相同ppid的進(jìn)程,并將信號(hào)投遞到這一進(jìn)程。
UnIX系統(tǒng)信號(hào)公開在《UNIX系統(tǒng)V,發(fā)放2,《程序員參考手冊(cè)》第二節(jié)信號(hào)命令中。
一個(gè)信號(hào)可以被送給一個(gè)特定的進(jìn)程或整個(gè)進(jìn)程組。特別,圖11是關(guān)于對(duì)進(jìn)程組的信號(hào)處理的。圖12示出圖11中的程序所生成的一個(gè)進(jìn)程組信號(hào)報(bào)文的處理步驟。圖13示出對(duì)單個(gè)進(jìn)程的信號(hào)處理步驟。圖14示出對(duì)圖13中程序所生成的信號(hào)報(bào)文的相應(yīng)處理步驟。
詳細(xì)說明;在接受信號(hào)后從START進(jìn)入圖11中的程序,這個(gè)信號(hào)是執(zhí)行圖11中程序的計(jì)算機(jī)生成的而且指向一個(gè)進(jìn)程組。注意,信號(hào)可以由服務(wù)者或客戶生成。輸入?yún)?shù)是進(jìn)程組(pgrp)與一個(gè)信號(hào)標(biāo)識(shí)數(shù)。步驟1100在本地進(jìn)程表中查找定義為屬于這一進(jìn)程組的進(jìn)程。這是通過將pgrp參數(shù)與存在進(jìn)程表中每個(gè)進(jìn)程的pgrp相比較而確定的。對(duì)于網(wǎng)絡(luò)計(jì)算機(jī),有可能在進(jìn)程表中存在多個(gè)與輸入?yún)?shù)pgrp匹配的表項(xiàng)。由于這是一個(gè)與進(jìn)程組相關(guān)的信號(hào),已發(fā)送表的作用是保證只向一臺(tái)計(jì)算機(jī)發(fā)送一次信號(hào)報(bào)文。由于已發(fā)送表只是臨時(shí)性的,因此為了簡(jiǎn)化我們?cè)趫D中沒有表示。一旦找到了一個(gè)匹配的pgrp,步驟1104確定匹配的進(jìn)程是一個(gè)本地進(jìn)程還是一個(gè)遠(yuǎn)程執(zhí)行進(jìn)程的代理進(jìn)程。它是通過查詢進(jìn)程表中對(duì)應(yīng)表項(xiàng)的狀態(tài)變量而確定的。對(duì)于本地進(jìn)程,信號(hào)便象現(xiàn)在UNIX系統(tǒng)所做的那樣傳送給這一進(jìn)程。這一操作概念地表示在步驟1106的虛線框中,然后回到步驟1100繼續(xù)在進(jìn)程表中查找匹配的pgrp。當(dāng)步驟1104確定所找到的匹配進(jìn)程標(biāo)識(shí)為代理進(jìn)程時(shí),步驟1108從已發(fā)送表中確定是否對(duì)已與該進(jìn)程相關(guān)聯(lián)的網(wǎng)絡(luò)計(jì)算機(jī)發(fā)送過信號(hào)報(bào)文。如果已發(fā)送過,便回到步驟1100繼續(xù)查找。否則,在步驟1110中建立含有pgrp與信號(hào)編號(hào)的信號(hào)報(bào)文而在步驟1112中發(fā)送給這一計(jì)算機(jī)。在步驟1114中,將這一計(jì)算機(jī)加入已發(fā)送表中,此后回到步驟1100繼續(xù)查找進(jìn)程表的操作。
圖12中的流程圖示出當(dāng)一臺(tái)計(jì)算機(jī)收到另一臺(tái)計(jì)算機(jī)發(fā)來的進(jìn)程組信號(hào)報(bào)文后的處理步驟。信號(hào)報(bào)文在另一臺(tái)計(jì)算機(jī)上用圖11中的程序生成的。注意,信號(hào)可以在客戶也可以在服務(wù)者計(jì)算機(jī)上生成而且向另一方發(fā)送。如前所述,進(jìn)程組信號(hào)報(bào)文中包含上述的進(jìn)程組(pgrp)與要處理的信號(hào)。步驟1200開始對(duì)計(jì)算機(jī)的進(jìn)程表進(jìn)行查找,以便定位一個(gè)屬于這一指定的進(jìn)程組的進(jìn)程。如果查找不到這樣的進(jìn)程,程序結(jié)束。如果查找到一個(gè)匹配的進(jìn)程,步驟1202便把相關(guān)的信號(hào)傳送給這一進(jìn)程去處置,這和現(xiàn)行UNIX系統(tǒng)的操作一樣。然后繼續(xù)對(duì)進(jìn)程表進(jìn)行查找以定位屬于這一指定進(jìn)程組的其他進(jìn)程。
圖13展示了響應(yīng)本地生成的指向單一進(jìn)程而不是進(jìn)程組的信號(hào)所執(zhí)行的程序的流程圖。這一例行程序的輸入?yún)?shù)是pid。步驟1300從pid中導(dǎo)出進(jìn)程的計(jì)算機(jī)標(biāo)識(shí)(sysid)〔這一推導(dǎo)用術(shù)語“sysid(pid)”表示〕并確定該進(jìn)程所在的計(jì)算機(jī)是否是本地計(jì)算機(jī)。將信號(hào)傳輸給一個(gè)進(jìn)程有兩種方法用系統(tǒng)函數(shù),如用前面討論過的對(duì)進(jìn)程組發(fā)信號(hào),以及用戶發(fā)出的直接命令。無論用那一種方法,信號(hào)既可能是指向一個(gè)本地進(jìn)程也可能是指向一個(gè)遠(yuǎn)程進(jìn)程的。如果對(duì)步驟1300中的查詢的答復(fù)所指向的是遠(yuǎn)程進(jìn)程,則在步驟1302和1304中建立一個(gè)包含賦予的pid并把它傳輸給Sysid(pid)所標(biāo)識(shí)的遠(yuǎn)程計(jì)算機(jī)的信號(hào)報(bào)文。
如果在步驟1300中,sysid標(biāo)識(shí)符得到匹配,則進(jìn)程是本地的,然而,這一本地進(jìn)程可能是一個(gè)代理進(jìn)程,在這一情況下,該信號(hào)實(shí)際上是指向?qū)?yīng)的遠(yuǎn)程進(jìn)程的。1306查詢狀態(tài)變量以確定該本地進(jìn)程是否是代理進(jìn)程。如果不是,虛線框1308用標(biāo)準(zhǔn)UNiX系統(tǒng)的同樣方法處理信號(hào)。如果該進(jìn)程是一個(gè)代理進(jìn)程,步驟1302和1304建立并向遠(yuǎn)程計(jì)算機(jī)傳輸一則信號(hào)報(bào)文。
圖14示出當(dāng)一臺(tái)計(jì)算機(jī)收到圖13中的程序所生成的信號(hào)報(bào)文時(shí)。響應(yīng)這一報(bào)文所執(zhí)行的程序的流程圖。步驟1400在這一計(jì)算機(jī)上的進(jìn)程表中查找報(bào)文中所標(biāo)識(shí)的進(jìn)程。如果找到了這一進(jìn)程,則按傳統(tǒng)的UNIX系統(tǒng)方式將信號(hào)傳遞給它,并將控制返回主程序。
無需說明,上述布局只是對(duì)本發(fā)明的原理的應(yīng)用的示范,熟練這一技術(shù)的人可能在不脫離本發(fā)明的精神與范圍的情況下設(shè)計(jì)出其它的布局。
權(quán)利要求
1.在具有多個(gè)各自有獨(dú)立文件系統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)遠(yuǎn)程進(jìn)程執(zhí)行的一種方法,其特征在于包括以下步驟從計(jì)算機(jī)中的一臺(tái)請(qǐng)求計(jì)算機(jī)向計(jì)算機(jī)中的一臺(tái)服務(wù)計(jì)算機(jī)傳輸一個(gè)遠(yuǎn)程執(zhí)行請(qǐng)求,它包括要執(zhí)行的一個(gè)進(jìn)程的標(biāo)識(shí);在請(qǐng)求和服務(wù)計(jì)算機(jī)上建立一個(gè)文件尋址結(jié)構(gòu)使得在服務(wù)計(jì)算機(jī)上的遠(yuǎn)程進(jìn)程的一次文件引用指向位于請(qǐng)求計(jì)算機(jī)上的一個(gè)文件;響應(yīng)這一遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求,在服務(wù)計(jì)算機(jī)上激活這一被標(biāo)識(shí)的進(jìn)程;據(jù)此,響應(yīng)遠(yuǎn)程進(jìn)程的一次文件引用,按照這一尋址結(jié)構(gòu),從請(qǐng)求計(jì)算機(jī)上自動(dòng)地檢索文件。
2.權(quán)利要求
1的方法中的建立文件尋址結(jié)構(gòu)步驟的特征在于進(jìn)一步包括在請(qǐng)求計(jì)算機(jī)上建立一個(gè)或多個(gè)通信信道供服務(wù)計(jì)算機(jī)進(jìn)行文件訪問;在遠(yuǎn)程執(zhí)行請(qǐng)求中加入使服務(wù)計(jì)算機(jī)能尋址通信信道的報(bào)文信息。
3.權(quán)利要求
2的方法的特征在于進(jìn)一步包括下述步驟為了從服務(wù)計(jì)算機(jī)接收一個(gè)遠(yuǎn)程進(jìn)程完成信號(hào),在請(qǐng)求計(jì)算機(jī)上建立一個(gè)完成通信信道;在遠(yuǎn)程執(zhí)行請(qǐng)求中加入使服務(wù)計(jì)算機(jī)能尋址完成通信信道的報(bào)文信息。
4.權(quán)利要求
1的方法的特征在于進(jìn)一步包括下述步驟響應(yīng)用戶的登錄,在請(qǐng)求計(jì)算機(jī)上建立一個(gè)進(jìn)程;響應(yīng)用戶將進(jìn)程指定為遠(yuǎn)程執(zhí)行的命令,生成遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文文。
5.權(quán)利要求
4的方法的特征在于進(jìn)一步包括下述步驟在遠(yuǎn)程執(zhí)行請(qǐng)求中加入存儲(chǔ)在請(qǐng)求計(jì)算機(jī)上的描述用戶進(jìn)程操作環(huán)境的報(bào)文信息;響應(yīng)遠(yuǎn)程執(zhí)行請(qǐng)求,在服務(wù)者計(jì)算機(jī)上建立一個(gè)遠(yuǎn)程進(jìn)程為這一請(qǐng)求服務(wù);使用包含在遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文中的操作環(huán)境信息,為遠(yuǎn)程進(jìn)程建立一個(gè)操作環(huán)境。
6.權(quán)利要求
5的方法的特征在于其中的進(jìn)程操作環(huán)境包括一個(gè)或多個(gè)存儲(chǔ)的環(huán)境變量,該變量說明為進(jìn)程事先設(shè)定的操作條件,其中,加入操作環(huán)境信息的步驟進(jìn)一步包括下述步驟讀取環(huán)境變量的狀態(tài);將這些環(huán)境變量狀態(tài)加入遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文中。
7.權(quán)利要求
6的方法的特征在于其中為遠(yuǎn)程進(jìn)程建立一個(gè)操作環(huán)境步驟進(jìn)一步包括下述步驟將遠(yuǎn)程進(jìn)程請(qǐng)求報(bào)文中的環(huán)境變量狀態(tài)存入和該遠(yuǎn)程進(jìn)程相關(guān)聯(lián)的對(duì)應(yīng)環(huán)境變量中。
8.權(quán)利要求
7的方法其特征在于在每一臺(tái)計(jì)算機(jī)上活躍的每一個(gè)進(jìn)程在該計(jì)算機(jī)上都有一個(gè)獨(dú)立的狀態(tài)變量,而且這一變量包含了說明該進(jìn)程事先設(shè)定的狀態(tài)的信息,此方法進(jìn)一步包括下述步驟在請(qǐng)求計(jì)算機(jī)上,將用戶進(jìn)程的狀態(tài)變量設(shè)置為說明該進(jìn)程為遠(yuǎn)程進(jìn)程的代理進(jìn)程的狀態(tài);將代理進(jìn)程設(shè)置為不活躍狀態(tài)等待遠(yuǎn)程進(jìn)程的完成。
9.權(quán)利要求
8的方法的特征在于進(jìn)一步包括下述步驟在遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求報(bào)文中加入文件選擇信息,為遠(yuǎn)程進(jìn)程所能引用的每一文件指明是在請(qǐng)求計(jì)算機(jī)還是服務(wù)計(jì)算機(jī)上尋址該文件。
10.權(quán)利要求
2的方法其特征在于其中的請(qǐng)求與服務(wù)計(jì)算機(jī)上的文件系統(tǒng)各自層次地組織成包含文件的目錄的樹形結(jié)構(gòu),該樹形結(jié)構(gòu)從一個(gè)根目錄開始,其中的每一計(jì)算機(jī)進(jìn)程有與它相關(guān)聯(lián)的一個(gè)省缺根目錄指針和一個(gè)替補(bǔ)根目錄指針,其中的方法進(jìn)一步包括下述步驟在服務(wù)計(jì)算機(jī)上,響應(yīng)遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文,將與遠(yuǎn)程進(jìn)程相關(guān)聯(lián)的省缺根目錄指針的狀態(tài)設(shè)置成指向請(qǐng)求計(jì)算機(jī)的根目錄,并將替補(bǔ)根目錄指針的狀態(tài)設(shè)置成指向服務(wù)計(jì)算機(jī)上的根目錄。
11.權(quán)利要求
10的方法的特征在于進(jìn)一步包括下述步驟在服務(wù)計(jì)算機(jī)上,對(duì)遠(yuǎn)程進(jìn)程的一次文件引用根據(jù)來自請(qǐng)求計(jì)算機(jī)的文件信息,選擇省缺或替補(bǔ)根目錄指針查找該文件。
12.權(quán)利要求
11的方法的特征在于,其中的文件是用路徑名標(biāo)識(shí)的,路徑名包括在文件系統(tǒng)中被跟蹤的一個(gè)目錄序列和在最后一個(gè)指名的目錄中定位的一個(gè)文件名作為結(jié)尾。其中,來自請(qǐng)求計(jì)算機(jī)的文件信息進(jìn)一步包括一個(gè)或多個(gè)目錄路徑名,而且其中的選擇省缺或替補(bǔ)根目錄指針的步驟進(jìn)一步包括下述步驟將被引用文件的路徑名與來自請(qǐng)求計(jì)算機(jī)的一個(gè)或多個(gè)目錄路徑名進(jìn)行比較;如果來自請(qǐng)求計(jì)算機(jī)的文件信息中的一個(gè)或多個(gè)目錄路徑名中的任何一個(gè)是被引用文件的路徑名的前綴,則選擇替補(bǔ)根目錄指針查找該被引用文件,否則選擇省缺根目錄指針。
13.權(quán)利要求
12的方法的特征在于其中的每一臺(tái)計(jì)算機(jī)包括一個(gè)本地DISALLOWED變量,該變量可以包含一個(gè)或多個(gè)目錄路徑名,而且其中的方法進(jìn)一步包括下述步驟在服務(wù)計(jì)算機(jī)上,響應(yīng)遠(yuǎn)程執(zhí)行請(qǐng)求報(bào)文,將文件信息中的一個(gè)或多個(gè)目錄路徑名一一與DISALLOWED變量中的每一個(gè)路徑名進(jìn)行比較;將文件信息中以DISALLOWED變量中的目錄路徑名為前綴的所有目錄路徑名刪除。
14.權(quán)利要求
13的特征在于,其中的進(jìn)程環(huán)境變量之一標(biāo)識(shí)了該進(jìn)程的當(dāng)前目錄,其中的方法進(jìn)一步包括下述步驟在請(qǐng)求計(jì)算機(jī)上,建立一個(gè)完成通信信道用于接收來自服務(wù)計(jì)算機(jī)的遠(yuǎn)程進(jìn)程完成信號(hào);建立根目錄與當(dāng)前目錄通道信信道供服務(wù)計(jì)算機(jī)訪問客戶計(jì)算機(jī)的對(duì)應(yīng)根目錄與當(dāng)前目錄;將上述每一通信信道的尋址信息加入傳輸給服務(wù)計(jì)算機(jī)的遠(yuǎn)程執(zhí)行請(qǐng)求中。
15.在具有多個(gè)計(jì)算機(jī)的一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)遠(yuǎn)程進(jìn)程執(zhí)行的一種方法,其特征在于包括下述步驟從計(jì)算機(jī)中的一臺(tái)請(qǐng)求者傳輸一個(gè)遠(yuǎn)程進(jìn)程請(qǐng)求到計(jì)算機(jī)中的一臺(tái)服務(wù)者,該請(qǐng)求包括要求服務(wù)計(jì)算機(jī)執(zhí)行的進(jìn)程的標(biāo)識(shí),還進(jìn)一步包括文件位置信息,為遠(yuǎn)程進(jìn)程引用的本地文件在請(qǐng)求計(jì)算機(jī)或服務(wù)計(jì)算機(jī)上定位;響應(yīng)遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求,在服務(wù)計(jì)算機(jī)上激活被標(biāo)識(shí)的進(jìn)程;響應(yīng)遠(yuǎn)程進(jìn)程的一次文件引用,按照文件定位信息在服務(wù)或者請(qǐng)求計(jì)算機(jī)上檢索被引用的文件。
16.在具有多個(gè)計(jì)算機(jī)的一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)遠(yuǎn)程進(jìn)程執(zhí)行的一種方法,其特征在于每一臺(tái)計(jì)算機(jī)包括一個(gè)數(shù)據(jù)結(jié)構(gòu),包含一個(gè)指向它的文件系統(tǒng)的第一文件系統(tǒng)指針;一個(gè)第二文件系統(tǒng)指針,它可以設(shè)置成指向計(jì)算機(jī)中的另一臺(tái)計(jì)算機(jī)上的文件系統(tǒng);一個(gè)數(shù)據(jù)字,可選擇地設(shè)置成指明使用第一還是第二指針來定位被引用的文件,這一方法包括下述步驟從計(jì)算機(jī)中的一臺(tái)請(qǐng)求者傳輸一個(gè)遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求到計(jì)算機(jī)中的一臺(tái)服務(wù)者,該請(qǐng)求包括一個(gè)進(jìn)程標(biāo)識(shí)與設(shè)置數(shù)據(jù)字的數(shù)據(jù);響應(yīng)遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求,在服務(wù)計(jì)算機(jī)上設(shè)置數(shù)據(jù)字并激活被標(biāo)識(shí)的進(jìn)程;響應(yīng)進(jìn)程的一次文件引用,查詢數(shù)據(jù)字以確定在請(qǐng)求計(jì)算機(jī)上還是服務(wù)計(jì)算機(jī)上定位被引用的文件。
17.在具有多個(gè)計(jì)算機(jī)的一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)遠(yuǎn)程進(jìn)程執(zhí)行的一種方法,網(wǎng)絡(luò)中的每一臺(tái)計(jì)算機(jī)有一個(gè)層次地組織的文件結(jié)構(gòu),每一臺(tái)計(jì)算機(jī)的特征在于進(jìn)一步包括一個(gè)操作系統(tǒng),包括一個(gè)文件系統(tǒng)功能供執(zhí)行中的進(jìn)程引用文件時(shí)對(duì)該文件進(jìn)行訪問;一個(gè)數(shù)據(jù)結(jié)構(gòu),包括一個(gè)指向文件系統(tǒng)起始點(diǎn)的第一指針,一個(gè)可以設(shè)置成指向計(jì)算機(jī)中另一臺(tái)計(jì)算機(jī)上的文件系統(tǒng)的起始點(diǎn)的第二指針。一個(gè)數(shù)據(jù)字,可設(shè)置成指明使用第一還是第二指針來定位一個(gè)被引用的文件;一個(gè)遠(yuǎn)程執(zhí)行服務(wù)程序,這一方法包括下述步驟從計(jì)算機(jī)中的一臺(tái)請(qǐng)求者傳輸一個(gè)遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求到計(jì)算機(jī)中的一臺(tái)服務(wù)者上的遠(yuǎn)程執(zhí)行服務(wù)程序,該請(qǐng)求包含要求執(zhí)行的進(jìn)程的標(biāo)識(shí)、用于尋址傳輸請(qǐng)求的計(jì)算機(jī)上的文件系統(tǒng)的數(shù)據(jù)、以及用于設(shè)置數(shù)據(jù)字的數(shù)據(jù),設(shè)置數(shù)據(jù)字,設(shè)置第二指針為請(qǐng)求計(jì)算機(jī)文件系統(tǒng)的尋址數(shù)據(jù),響應(yīng)遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求,在服務(wù)計(jì)算機(jī)上激活被標(biāo)識(shí)的進(jìn)程,響應(yīng)進(jìn)程的一次文件引用,查詢數(shù)據(jù)字來確定查找請(qǐng)求計(jì)算機(jī)和服務(wù)計(jì)算機(jī)中何者來定位被引用的文件。
專利摘要
一種在計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)遠(yuǎn)程進(jìn)程執(zhí)行的方法。在計(jì)算機(jī)中的一臺(tái)請(qǐng)求者(客戶)計(jì)算機(jī)(601)傳輸一個(gè)包含要求執(zhí)行的進(jìn)程的標(biāo)識(shí)的遠(yuǎn)程執(zhí)行請(qǐng)求到一臺(tái)服務(wù)者計(jì)算機(jī)(602)。在601和602上都建立文件尋址結(jié)構(gòu),使得在602上的遠(yuǎn)程進(jìn)程的一次文件引用指向位于601上的一個(gè)文件。響應(yīng)遠(yuǎn)程進(jìn)程執(zhí)行請(qǐng)求,在602上激活遠(yuǎn)程進(jìn)程。響應(yīng)遠(yuǎn)程進(jìn)程的一次文件引用,按照尋址結(jié)構(gòu),自動(dòng)地從601上檢索文件。
文檔編號(hào)G06F17/30GK86107699SQ86107699
公開日1987年7月15日 申請(qǐng)日期1986年11月12日
發(fā)明者拉克施·阿格拉瓦爾, 阿麥德·卡馬爾·埃薩特 申請(qǐng)人:美國(guó)電話電報(bào)公司導(dǎo)出引文BiBTeX, EndNote, RefMan