專利名稱:通過操作系統進行通信的方法
技術領域:
本發明涉及通過一個操作系統進行通信的方法,并且尤其涉及通過使用多個進程和布置在一個或多個處理器內的多個存儲器源的操作系統進行通信的方法。
背景技術:
數據處理和分配在大量的不同制造和商業相關應用中被使用,事實上,這些制造和商業相關應用涉及完成各種不受限制的任務或進程的操作。被執行以完成這些任務的系統利用不同的設計結構并且一般地以網絡方式被組織。網絡可以用諸如總線或線性拓撲、星形拓撲、環形拓撲等等之類的各種結構來安排。在網絡內一般有多個節點和互連每個節點的多條通信鏈路。這些節點可以是計算機、終端、工作站、執行元件、數據收集器、傳感器等等。這些節點一般有處理器、存儲器源和各種其它的硬件和軟件元件。這些節點在網絡內的通信鏈路上相互通信以獲得和發送信息。
相關技術系統中的一個主要缺陷在于節點與其它節點通信的方法。第一節點通常會發送一個請求信息的信號到第二節點。由于第二節點已經在處理信息,因此第一節點必須等候響應。第二節點過一段時間會識別出第一節點的請求并且訪問所期望的信息。第二節點然后發送一個帶有連接信息的響應信號到第一節點。第二節點保存它自身進程可能需要的一份復制信息。第二節點還可發送一個驗證以確保信息數據被第一節點接收。
這類通信可能在大量應用程序中是可接受的,其中,第一和第二節點之間通信所損失的時間是可接受的。然而,在許多諸如在車輛測試中的實時編譯數據之類的應用中,延遲時間是不能接受的。更進一步,在第二和第一節點中都存儲相同的數據的冗余浪費了存儲空間并延遲了處理時間。最終,第一和第二節點之間的雙向通信引起了附加延遲和潛在的數據沖突。
因此,提供一個能克服相關技術缺陷的操作系統應該是有利的。特別地,一個操作系統被期望,該操作系統消除第一和第二節點之間的通信延遲并且能夠優化存儲器源的利用和減少處理時間。
發明內容
提供通過一個操作系統進行通信的方法,該操作系統使用多個進程和布置在一個或多個處理器內的多個存儲器源。所述方法包括以下步驟在系統內檢測一個事件;響應于檢測到事件,從其中一個存儲器源提取初始進程地址以確定初始進程的存儲單元;響應于檢測到事件,從其中一個存儲器源提取初始數據地址以確定初始進程要使用的初始數據的存儲單元。執行位于初始進程地址的初始進程的可執行碼;以及從其中一個存儲器源提取第二進程地址以確定在初始進程的可執行碼的執行完成之前執行的第二進程的存儲單元。
本發明提供通過一個操作系統進行通信的方法,該方法實際地消除了不同節點上的不同進程之間的任何通信延遲。此外,通過在完成正在執行的進程之前知道下一個進程的存儲單元從而減少處理時間的同時,本發明優化了存儲器源的使用。
通過參考結合附圖的下列詳細說明,本發明的其它優點將被容易理解并且變得更加清楚,其中圖1是利用互連到單個集線器的六個節點的操作系統的示意圖;圖2A是圖1操作系統的示意圖,其說明來自一個節點的輸入傳輸;圖2B是圖2A操作系統的示意圖,其從集線器廣播到所有的節點;圖3是傳遞初始進程和響應于檢測事件的第二進程之間的通信的操作系統的示意圖;
圖4是利用具有相同進程的不同數據的操作系統的示意圖;圖5是用戶對象的電路示意圖,其表示操作系統的執行次序;圖6是顯示給用戶的執行次序的示意圖;圖7是圖6執行次序的示意圖,其中,一個條件被測量然后響應于當前條件改變執行次序;圖8A是具有第一、第二和第三進程的執行次序的示意圖;圖8B是在第二進程中測量到一個條件的圖8A的執行次序示意圖;圖8C是通過響應于存在條件的第二進程而正在被修改的圖8A執行次序的示意圖;和圖9是執行其它原語設定的定序器的示意圖。
具體實施例方式
參考附圖,其中,相同數字指出遍及幾個視圖的相同或對應部分,通過使用多個進程和布置在一個或多個處理器內的多個存儲器源的操作系統30進行通信的方法被公開。在圖1中大略地示出能執行本方法的操作系統30。
操作系統30包括通過中央信號路由集線器32互連來優選地建立星形拓撲結構的多個模塊或節點1-6。如圖所示,六個節點1-6被連接到集線器32,每個節點用一個特殊的節點地址索引。數字指示符1到6說明的是節點地址的例子。可以理解,任何適當的字母/數字指示符可被用來區別一個節點和另一個節點。顯示為一個八邊形的集線器32的形狀、結構和定位僅是說明性的并且可以被改變來滿足任何需求。
節點1-6可以是工作站的一部分或工作站本身。為了說明節點1-6的多面性,節點6是主機34的一部分,節點1、2、4和5被連接到執行元件36,而節點3沒有被連接。應當理解,節點1-6能夠被連接到包括多個計算機、執行元件、手持設備等等的任何類型的外部設備或裝置。例如,示出的節點6還連接到一個手持設備35。換言之,節點1-6中沒有一個能被連接到會建立完全虛擬系統的外部設備。外部設備可以是計算機技術中已知的任何適當的設備,比如監視器、打印機、鍵盤、鼠標等等。
每個節點1-6至少包括具有至少一個存儲器源的處理器。進程能夠對進程位于其中的存儲器源進行讀寫。進程只寫入到其它存儲器源。通信方法是通過發送信號或寫數據。信號可以是類似于模擬信號的不同步的虛擬信號。信號可以只包含信號的瞬時值并且可以按需被任何進程采樣。信號可以從一個進程被發送到節點1-6中的任何其中一個存儲器源。例如,進程可以在相同節點或一個遠程節點中運行。信號可以被在接收該信號的節點中執行的另一個進程采樣。因此,進程能夠在本地或遠程節點上被執行,但是信號仍然被寫入。信號或數據在進程發送信號或數據的任何時刻及時被寫入到目的地地址。必須考慮到信號具有在發生采樣的任何時刻都有被另一個進程及時采樣的值。
對處理器的類型沒有限制。處理器可以是諸如微處理器之類的硬件,或軟件虛擬處理器或在本領域技術中已知的任何其它類型的處理器。處理器可以具有不同的容量和速度。例如,節點6可能具有1,500MFlops的處理器并且剩余節點可能具有300MFlops的處理器。處理器的容量和速度可以被改變以滿足眾多的設計標準。處理器一般只具有支持與節點1-6相關的進程的容量和速度。處理器還可以是識別不同計算機格式和語言的不同類型的處理器。
一個平臺互連操作系統30的節點1-6。另外,該平臺可以支持一個或多個操作系統30。該平臺路由進程和節點之間的通信流。平臺被顯示為互連處理器和節點1-6的通信鏈路。在圖1中,通信鏈路68、70從節點1和節點2向集線器32寫入數據。數據的寫入對于操作系統30來說是透明的并且互連方法可以是能實現本發明結果的任何類型的連接。
每個處理器包含存儲在與進程相關的存儲器源內的數據。數據可以包括將被執行的其它進程的地址、將被使用的其它數據的地址和在進程執行過程中使用的數據集。進程可以被存儲在其中一個處理器中并且可以利用存儲在不同的處理器上的數據。
上述操作系統30能夠執行本發明的方法。轉到圖3,所述方法包括在操作系統30內檢測事件38的步驟。事件38可以發生在所指定的狀態變化出現的任何時刻。事件38優選地是同步信號的檢測,從而確保所有的進程在明確定義的時刻及時地同時開始。事件38能夠按需從具有進程的節點1-6在本地產生。可以被檢測的事件38的一個類型是諸如按下鍵盤上的一個鍵之類的硬件中斷。處理器檢測硬件中斷并且硬件中斷告訴處理器一個鍵已經被壓下。應當理解,存在許多除了硬件中斷以外的可以被檢測的事件類型。
接下來,操作系統30從其中一個存儲器源提取初始進程地址40以確定響應于檢測事件38的初始進程42的存儲單元。初始進程地址40或下一個進程的初始指針(PNP)是能夠被存儲在任何一個存儲器源上的數據。該數據可以包括用于處理其它數據的可執行碼的多個線路。初始的PNP 40給系統指出將被執行的可執行碼的存儲單元,例如,告訴系統可執行碼位于何處。
響應于檢測事件38,操作系統30從其中一個存儲器源提取初始數據地址44以確定將被用于初始進程42的初始數據46的存儲單元。初始數據地址44或下一個數據的初始指針(PND)也是能夠被存儲在任何一個存儲器源上的數據。初始PND 44指向包含用于執行進程的數據的其中一個存儲器源中的存儲單元。位于初始PND 44存儲單元的數據包括第二進程地址48或第二PNP 48,和第二數據地址50或第二PND 50。位于初始PND 44的數據還可以包括一個初始數據集58。應當理解,PNP、PND和數據地址是指針或地址。進程、數據等等用術語″初始″和″第二″來區分僅是為了說明性的目的并且不以任何方式來限制本發明。本發明的方法可被用來在很短的時間周期內執行數以千計的進程,其中,每個進程可以用在此說明的方法來執行。
檢測事件38的步驟還被定義為從其中一個存儲器源檢索初始參數塊54。初始參數塊54包括初始PNP 40和初始PND 44。初始參數塊54也可以包括初始數據集58,然而優選實施例只包括初始PNP 40和初始PND 44。
一旦操作系統30知道該執行和使用哪個進程和數據,則操作系統30就執行位于初始進程地址40的初始進程42的可執行碼。接下來,從其中一個存儲器源提取第二進程地址48或第二PNP 48以確定在初始進程42的可執行碼的執行完成之前執行的第二進程52的存儲單元。從其中一個存儲器源提取第二PNP 48的步驟還被定義為在初始數據地址44從初始數據46提取第二PNP 48。因此,第二PNP 48被儲存為位于初始數據地址44的初始數據46的一部分。
操作系統30還從其中一個存儲器源提取第二數據地址50或第二PND 50以確定在初始進程42的可執行碼的執行完成之前用于第二進程52的第二數據63的存儲單元。從其中一個存儲器源提取第二PND50的步驟還被定義為在初始數據地址44從初始數據46提取第二PND50。
第二PNP 48和第二PND 50的提取還被定義為提取位于初始PND44的第一參數塊56。第一參數塊56優選地包括用于初始進程42的初始數據集58。操作系統30從位于初始數據地址44的初始數據46或第一參數塊56檢索用于初始進程42的執行過程中的操作的初始數據集58。所述方法還包括在可執行碼的執行過程中處理初始數據集58以定義初始處理的數據集的步驟。從其中一個存儲器源提取的初始處理的數據地址60也被存儲在第一參數塊56中,并且初始處理的數據集被寫入到初始處理的數據地址。初始數據集58或其它數據集可以包括在進程執行過程中使用的參數或值。這類參數可以包括諸如Pi=3.141592之類的常數或被其它進程寫入到第一參數塊56的其它值。
操作系統30完成初始進程42的執行并且傳遞通信到位于第二PNP 48的第二進程52。然后,位于第二PNP 48的第二進程52的可執行碼用位于第二PND 50的第二數據63來執行。包含第二數據集65的第二參數塊62位于第二PND 50。第二數據集65從位于第二數據地址50的第二數據63被檢索并且在可執行碼的執行過程中被處理以定義第二處理的數據集。然后第二處理的數據地址67從其中一個存儲器源被提取并且第二處理的數據集被寫入到第二處理的數據地址67。第二處理的數據地址67可以把第二處理的數據集發送到節點1-6中的任何一個或者在其它執行的進程中被使用。
總的來說,檢測事件38并且檢索初始PNP 40和PND。操作系統30執行初始進程42、取出數據集和數據集地址、處理數據集、和把處理的數據集寫入到處理的數據集地址。接下來,取出第二PND 50,因此第二進程52知道第二數據的存儲單元,然后取出第二PNP 48并且執行被傳遞到第二PNP 48指定的進程地址。因為操作系統30知道在進程執行完成之前應該進行到什么地方,所以該操作系統是一個快速和靈活的實時系統。因為PNP和PND是在使用它們的進程之前由進程建立的,所以操作系統30能夠實現一些非常強大的機制。
包括初始進程42和第二進程52的可執行碼是包含在其中一個存儲器源中的數據,并且用于每個進程的數據也是包含在其中一個存儲器源中的數據。因此,進程能夠按需寫入彼此的數據和可執行碼。由進程執行的寫入能夠修改存儲在用于任何進程的關聯參數塊中的數據集。
在第二進程52的執行過程中,從其中一個存儲器源提取最后的PNP 64以確定最后執行的進程的存儲單元。一旦位于最后進程地址64的最后進程的可執行碼被執行,則操作系統30就停止通過操作系統30的通信,直到系統檢測到另一個事件38為止。操作系統30可以執行與所期望的一樣多的進程,直至到達最后進程。另外,最后進程可以被合并到第二進程52的可執行碼。最后進程被描述為在第二進程52之后執行,然而應當理解,任意數目進程都可以先于最后進程。還應當理解,沒有這種最后進程,操作系統30也可以被配置運行。
參考圖2A和2B,本發明的方法的另一個特征是一個進程將處理的數據寫入到多個進程的能力。該進程提取多個處理的數據地址和把第二處理的數據集寫入到多個處理的數據地址。這通常相當于廣播數據。另一方面,集線器32可以不需要多次指定地址而為所有節點1-6寫入數據。換言之,集線器32在每當沒有必要知道系統范圍時寫入數據。集線器32也可以響應于數據的產生而在節點1-6的每一個中產生一個事件。圖2A說明了一個正在一個節點被產生和被發送給集線器32的信號。在圖2B中,集線器32將該信號廣播到多個地址。該廣播能夠執行一個進程,該進程會在所有其它的節點和進程中產生事件38。作為另一個特征,操作系統30能夠用這種方式傳送來源于集線器32或者其中一個節點的數據。存儲在節點的其中一個處理器中的進程把數據寫入到多個處理的數據地址,從而將數據發送到所有其它的節點。對于不一定必須知道操作系統30的范圍并且沒有發送多個信號的消耗時間,而通過整個操作系統30發送全局消息、命令或請求,廣播是有用的。
參考圖4,為清楚起見,可執行碼和參數塊已經被分開。應當理解,可執行碼和數據可以在任何存儲器源中被混合。第一進程被執行不同的三次并且每次使用具有不同數據的不同參數塊。因此,只需要復制存儲在任何一個存儲器源中的第一進程的可執行碼。
本發明的另一個特征是用于進程的可執行碼能夠用位于多個不同數據地址的多個不同數據來執行。用不同數據集來執行相同的可執行碼被稱為一個實例。因此僅需要把可執行碼在存儲器源中存儲一次,從而允許更好地利用存儲器源的容量。圖4示出被執行兩次的第一進程,其中每次使用第一參數塊的不同實例。然后,第二進程被舉例,然后是第一進程的其它兩個實例。最后,第二進程再次被舉例。第一進程的第一實例用第一實例的第一參數塊來使用第一可執行碼。來自第一實例的第一參數塊的PND指向第二實例的第一參數塊以在第一進程的第二實例的過程中使用初始可執行碼。來自第二實例的第一參數塊的PND指向第一實例的第二參數塊,下一個PND指向第三實例的第一參數塊,下一個PND指向第四實例的第一參數塊,并且下一個PND最終指向第二實例的第二參數塊。進程實例之間的箭頭說明PNP并且參數塊之間的箭頭說明PND。可執行碼和參數塊之間的箭頭鏈接使用可執行碼的數據實例,并且進程和可執行碼之間的箭頭說明在進程中被執行的碼。
所述方法還包括在執行次序中定位初始進程42和第二進程52的步驟。執行次序是進程將被執行的次序。執行次序可以包括在執行次序中定位的多個進程。本發明的方法還包括提取多個初始進程地址和多個初始數據地址的步驟以定義多個執行次序和同時執行多個執行次序。在執行次序被設置之后,PNP和PND對于多個進程中的每一個而被建立。例如,初始進程42在第二進程52之前被定位,因此通信從初始進程42傳遞到第二進程52。為了傳遞通信,位于初始PND 44的數據必須包括第二進程52的PNP和PND。
執行次序能夠被處理以使得正在被執行的進程次序被修改。一旦執行次序被修改,則PNP和PND必須對于被處理進程中的每一個而被重建。處理執行次序的一個例子是在初始進程42之前定位第二進程52。為了重建執行次序,初始PNP 40和初始PND 44在初始參數塊54中將被替換為第二PNP48和第二PND 50。當第二進程52完成的時候,第二參數塊62將接收初始PNP 40和初始PND 44以執行初始進程42。操作系統30于是將檢測事件38,從初始參數塊54檢索第二PNP 48和第二PND50,執行第二進程52,從第二參數塊62檢索初始PNP 40和初始PND 44,并執行初始進程42。
可執行碼如下所述包括功能或模塊,其能夠被永久地存儲在節點1-6的其中一個,也可以被寫入到節點1-6以反映所需的結構。可執行碼與節點1-6中的處理器是二進制兼容的,其中,可執行碼將被執行。可執行碼能夠駐留在任意一個存儲器源中并且能夠按需被重新安置到不同的存儲器源。功能包括不可分的軟件功能,例如,諸如乘法之類的單個數學功能。
模塊是一個對象中的功能的方便集合。該對象能夠執行不同的功能組合。一個庫被存儲在至少一個存儲器源上,由此該庫包括一個適于特定應用的模塊和功能的集合,例如″數學庫″或″信號處理庫″。操作系統30還包括對象,該對象是一個或多個功能和/或模塊加上它們的相關參數塊和/或一些連通性,它們共同提供一個良好定義的功能集合。對象可以包含一個或多個其它對象。
如圖5-7所示,將進程顯示給一個用戶以使得該用戶能夠修改進程的位置。參考圖5,該進程被顯示為一個電路示意圖,其示出對象之間的互連,因此該對象形成進程。在優選實施例中,將一個顯示器連接到操作系統30以顯示執行次序。如在本領域技術中已知的,用戶能夠通過點擊和拖拽來在顯示器上移動進程。當用戶移動進程時,PNP和PND基于用戶定位進程的次序而被重建。圖5說明具有三個對象的進程的例子,對象A 72、對象B 74和對象C 76。每個對象是進程內的一個不同的子進程。對象A 72包括三個功能功能1 78、功能2 80、和功能3 82,每一個都用于處理數據。用戶能夠通過在顯示器上移動對象來修改這些進程的存儲單元。
本發明的另一個特征允許通過將初始進程地址40和第二進程地址48中的至少一個修改到不同的進程地址而修改執行次序以定義初始和第二進程的不同的執行次序。這可以在操作系統30正在執行事件檢測或之前被完成。
一旦將執行次序顯示給用戶,則用戶就能夠修改位于與被顯示進程相關的數據地址的數據。用戶能夠修改進程的數據集,例如改變上述的參數和值。用戶能夠修改在對象B 74中示出的參數84或值86。然而,存在存儲在其中一個存儲器源中的固定進程,其中,即使固定進程被顯示給用戶,與固定進程相關的數據也保持不變。固定進程的一個例子是圖5中的功能1-3即78、80和82。固定進程包括布爾和數學運算符。其它的固定進程包括上述的二進制功能和塊。每個單獨的二進制可以被封裝在一個對象中,該對象也可以包括進程的可執行碼以及數據結構所需的諸如變量、存儲量和類型之類的參數。封裝可執行碼的對象是不可分的而且不能由用戶修改。一個這種不可分的對象是點原語88,其分配信號給多個目的地。點原語88具有一個來自先前進程的輸入和一個寫入信號的目的地址的列表。
用戶能夠修改的對象是用戶對象。用戶對象允許一個或多個對象和另一個對象內部的連通性被嵌入其它用戶對象內。用戶能夠通過按需添加輸入和輸出連接以及建立內部功能來創建用戶對象。用戶可以把原始和現有用戶對象兩者合并成用戶對象。
用戶能夠根據需要命名用戶對象。另外,用戶能夠選擇用戶對象上可見的屬性。用戶對象,對象A 72顯示其它對象的細節和對象的連通性。為了能夠顯示執行次序,系統必須在所期望的間隔采取一個執行次序連通性的全局″急射(snap-shot)″。每個節點1-6的本地代理進程被分配用于采集諸如響應于廣播的PNP和PND之類的特定數據。代理進程把采集數據寫回到操作系統30。因此操作系統30能夠實時地顯示執行次序。如上所述,通過代理進程來采集特定數據是一個不可分的進程。
圖6說明把處理器和相關存儲器源顯示給用戶的另一個實施例。被顯示的存儲器源示出為進程和相關參數塊(未示出)分配的存儲空間。用戶能夠修改哪個處理器執行由操作系統30自動分配的哪個進程或存儲器。操作系統30可以基于不同的處理器當中的進程優化結構來自動地定位進程。另一方面,用戶能夠基于每個處理器的存儲器源的容量來處理進程的位置。這允許用戶把進程從可能滿負載運行的處理器移到低于負載容量運行的另一個處理器。因為進程可以被寫入到其它處理器,所以存儲器源中顯示的進程不能說明操作系統30的執行次序。圖6還說明了每個處理器的進程資源的分配或處理器時間。當進程被添加給處理器時,一個指示符顯示處理器資源已經被消耗的值。例如,四個進程使用了20.11%的處理器資源。
此外,執行次序可以保持相同,但是進程執行過程中使用的數據可以響應于測量到預定條件而被修改。當條件被測量到時,至少初始PND 44和第二PND 50中的一個在后續進程的執行過程中被修改以檢索不同的數據地址。
修改執行次序的另一個實施例包括在進程的子執行次序可以在不中斷操作系統30的執行次序的條件下被修改時建立進程子執行次序。在子執行次序被建立之后,通過改變位于初始PND 44的第二PNP48和第二PND 50以及把改變的子執行次序的PNP和PND寫入到初始數據地址44中,子執行次序被處理到執行次序中。子執行次序或進程被執行,一旦子執行次序的每個進程都被執行,然后就回到執行次序。為了回到執行次序,第二PNP 48和第二PND 50被寫入其中一個子執行數據地址中。優選地,在把子執行PNP和PND寫入初始參數塊54之前,第二PNP 48和第二PND 50將寫入子執行。一旦子執行PNP和PND被寫入,操作系統30就通過觸發新的事件并且從執行次序的請求開始。新的事件的觸發確保進程不停止執行。當進程在執行次序中在不同存儲單元之間被修改時,處理器不能取得同步并且要求操作系統30從頭開始執行次序,從而處理新的執行次序。
執行次序的修改可以響應于在第二進程52的執行過程中測量預定條件和響應于修改初始進程地址40和第二進程地址48中的至少一個,其被修改以在后續進程的執行過程中檢索不同的進程地址。一個實時定序器(RTS)可以被合并到執行次序以測量預定條件。RTS是非常快速的并且幾乎不耗費執行時間。RTS能夠按需被用來保證操作系統30的整個測試。RTS可以被顯示給具有多個輸入的用戶以便用戶啟動定序器的開始和停止。這類輸入可以包括標準播放、暫停和停止按鈕。RTS能夠開動附著于其中一個節點的設備、執行測試、收集數據、按照用戶配置來適當地對被檢測事件起作用、完成建立測試和關閉該設備。應當理解,在任何進程中條件都能夠被測量,只是為了清楚起見而描述在第二進程52中出現。
在條件被檢測之后,RTS可以通過從其中一個存儲器源提取不同的PNP來修改初始PNP 40和第二PNP 48中的至少一個,由此在不同的PNP執行進程。換言之,不同的PNP在執行次序中指向一個較高的進程。另一方面,RTS可以通過從其中一個存儲器源提取不同的進程地址來修改初始PNP 40和第二PNP 48中的至少一個,由此在不同的進程地址執行進程,例如執行次序中較低的進程。
參考圖7,執行次數由利用是否(if)原語的比率分配器94來測量。如果執行次數低于預定計數,則執行次序被修改。通過每次執行次序被執行就給計數加1,計數器原語保存一個計數。計數器原語的輸出被是否原語使用來建立一個期望的結果。一旦計數器原語計算預定計數,是否原語就將被安排繞過它自己和計數器進程。響應于測量其中一個進程的執行次數和修改存儲在與進程相關的數據地址中的進程地址以使得不同的進程在測量到預定次數的執行時執行,執行次序還可以被修改。比率分配器94每當被執行就更新進程計數,每次都把執行傳遞到下一個PNP直到這個計數達到一個特定數目,但是當計數等于所述數目時,它重新設置計數并且把執行傳遞到一個不同的PNP。因此不同PNP被執行的次數是小于比率分配器94功能被執行的次數的該數目倍數。如圖7中所示,執行次序流經進程2和3并且只在比率分配器94計數被重置時被執行,細分被進程2和3看見的事件38的次數。
參考圖8A,執行次序被示出具有進程1-3并且以所述次序執行。進程#1包含PNP#1,進程#2包含PNP#2,以及進程#3包含PNP#3。為清楚起見,PNP在進程中被示出,但是應當理解,PNP被優選地存儲在相關參數塊中。在進程#1執行之后,信號被傳遞到進程#2。進程#2測量到一個條件,并且如果該條件為假或不存在,則信號根據PNP#2傳遞到進程#3。如果進程#2測量到條件為真,例如在圖8B中所示的,進程#2把PNP#2寫入進程#1。現在,圖8C中的進程#1還有PNP#2。進程#2然后傳遞信號到進程#3。下一次執行次序被執行時,進程#1繞過進程#2而執行進程#3。
為了使RTS完成繞過進程,RTS必須執行專門的進程。該專門的進程包括原語對象設置原語、等候原語和是否原語。設置原語在任何參數塊中設置或修改任意數目的屬性。設置原語能夠同時執行所有所請求的修改,例如在相同的瞬時。等候原語執行次序并且等候一個或多個條件被檢測。多種條件可以被諸如AND、OR,AND NOT、ORNOT、XOR、NOT XOR等等之類的布爾運算符分開。條件可以包含屬性和諸如>、>=、=、<=、<之類的運算符。具有布爾運算符的實例為節點4信號8>節點2信號2 AND節點1輸入9<=節點1平均值。一旦給定時間已經消逝,等候原語就可以把任何的狀態變化顯示給用戶。例如,在10秒之后,進程可以把執行狀況顯示給用戶。當等候原語正在等候時,執行次序通過傳遞等候原語來繼續被執行。是否原語能夠被用來在等候時繼續執行。是否原語允許操作系統30繼續執行,從而在進程正在等候時消除任何延遲。
參考圖9,等候原語90和是否原語92被當作RTS的一部分被說明。信號進入等候原語90并且等候原語90等候將出現的條件或傳遞時間周期。如果條件存在,則是否原語92發送信號給進程B。如果條件不存在,而時間已經過去,則信號被傳遞到進程A。這允許操作系統30在等候原語90等候條件出現時繼續執行。
本發明已經用說明性的方式被描述,并且應當理解,所使用的術語為具有說明性質而不是限制性質的詞匯。明顯地,根據上述教導,本發明的許多修改和變化是可能的。因此,應當理解本發明可以在附加權利要求的范圍內被實踐而不限于特定的描述。
權利要求
1.通過一個操作系統進行通信的方法,所述操作系統使用多個進程和布置在一個或多個處理器內的多個存儲器源,所述方法包括以下步驟在系統內檢測一個事件;響應于檢測到事件,從其中一個存儲器源提取初始進程地址以確定初始進程的存儲單元;響應于檢測到事件,從其中一個存儲器源提取初始數據地址以確定所述初始進程中要使用的初始數據的存儲單元;執行位于初始進程地址的初始進程的可執行碼;和從其中一個存儲器源提取第二進程地址以確定在初始進程的可執行碼的執行完成之前執行的第二進程的存儲單元。
2.權利要求1的方法,還包括從其中一個存儲器源提取第二數據地址以確定在初始進程的可執行碼的執行完成之前用在第二進程中的第二數據的存儲單元的步驟。
3.權利要求2的方法,其中,從其中一個存儲器源提取第二進程地址的步驟還被定義為在初始數據地址從初始數據提取第二進程地址。
4.權利要求3的方法,其中,從其中一個存儲器源提取第二數據地址的步驟還被定義為在初始數據地址從初始數據提取第二數據地址。
5.權利要求4的方法,還包括為初始進程的執行過程中的處理而在初始數據地址從初始數據檢索初始數據集的步驟。
6.權利要求5的方法,其中,檢測事件的步驟還被定義為檢索初始參數塊,該初始參數塊包括初始進程地址和初始數據地址。
7.權利要求6的方法,還包括使用位于第二數據地址的第二數據執行位于第二進程地址的第二進程的可執行碼的步驟。
8.權利要求7的方法,還包括在執行次序中定位初始進程和第二進程的步驟。
9.權利要求8的方法,還包括從其中一個存儲器源提取最后進程地址以確定最后執行進程的存儲單元的步驟,以及還包括執行位于最后進程地址的最后進程的可執行碼以停止通過操作系統進行的通信直到系統檢測到另一個事件的步驟。
10.權利要求8的方法,還包括在第二進程的執行過程中測量預定條件的步驟,和在后續進程的執行過程中修改初始數據地址和第二數據地址中的至少一個以檢索不同數據地址的步驟。
11.權利要求10的方法,還包括測量其中一個進程的執行次數的步驟和修改存儲在與該進程相關的數據地址中的進程地址以使得在測量到預定數目的執行時執行一個不同的進程的步驟。
12.權利要求7的方法,還包括的在執行次序中定位多個進程的步驟和為多個進程中的每個進程建立進程地址和數據地址的步驟。
13.權利要求12的方法,還包括處理進程位置以使得執行次序被修改的步驟和為每個被處理的進程重建進程地址和數據地址的步驟。
14.權利要求13的方法,還包括把執行次序顯示給用戶以使得用戶能夠修改進程位置的步驟。
15.權利要求14的方法,還包括把每個處理器的存儲器源顯示給用戶以使得用戶能夠基于每個處理器來處理進程的位置的步驟。
16.權利要求15的方法,還包括把進程顯示給用戶以使得用戶能夠修改位于與被顯示進程相關的數據地址的數據的步驟。
17.權利要求16的方法,還包括在其中一個存儲器源中存儲固定進程的步驟,其中,與固定進程相關的數據保持不變。
18.權利要求8的方法,還包括將初始進程地址和第二進程地址中的至少一個修改到不同的進程地址以定義初始和第二進程的不同執行次序的步驟。
19.權利要求8的方法,還包括在第二進程的執行過程中測量預定條件的步驟,和在后續進程的執行過程中修改初始進程地址和第二進程地址中的至少一個以檢索不同進程地址的步驟。
20.權利要求19的方法,其中,修改初始進程地址和第二進程地址中的至少一個的步驟還被定義為通過從其中一個存儲器源提取不同的進程地址來修改初始進程地址和第二進程地址中的至少一個,由此執行在不同的進程地址的進程。
21.權利要求19的方法,其中,修改初始進程地址和第二進程地址中的任意一個的步驟還被定義為通過從其中一個存儲器源提取不同的進程地址來修改初始進程地址和第二進程地址中的至少一個,由此不同的進程地址的進程將要被執行。
22.權利要求12的方法,還包括當進程的子執行次序可以在不中斷操作系統的執行次序的條件下被修改時,建立進程的子執行次序的步驟。
23.權利要求22的方法,還包括通過改變位于初始數據地址的第二進程地址和第二數據地址來執行子執行次序的步驟,和把子執行次序的被改變的進程地址和被改變的數據地址寫入初始數據地址的步驟。
24.權利要求23的方法,還包括執行子執行次序的進程的步驟和一旦子執行次序的每個進程都被執行就回到執行次序的步驟。
25.權利要求24的方法,其中,回到執行次序的步驟還被定義為把第二進程地址和第二數據地址寫入其中一個子執行數據地址。
26.權利要求25的方法,還包括響應于檢測到新事件而在執行次序開始時啟動操作系統和執行子執行次序到執行次序中的步驟。
27.權利要求1的方法,還包括提取多個初始進程地址和多個初始數據地址以定義多個執行次序的步驟和同時執行多個執行次序的步驟。
28.權利要求2的方法,其中,提取初始數據地址和提取第二數據地址的步驟還被定義為提取多個初始數據地址和提取多個第二數據地址。
29.權利要求2的方法,還包括使用位于多個數據地址的多個數據來執行一個進程的可執行碼的步驟。
30.權利要求5的方法,還包括在可執行碼的執行過程中處理初始數據集以定義初始處理的數據集的步驟。
31.權利要求30的方法,還包括從其中一個存儲器源提取初始處理的數據地址的步驟和把初始處理的數據集寫入初始處理的數據地址的步驟。
32.權利要求31的方法,還包括從位于第二數據地址的第二數據檢索第二數據集的步驟和在可執行碼的執行過程中處理第二數據集以定義第二處理的數據集的步驟。
33.權利要求32的方法,還包括從其中一個存儲器源提取第二處理的數據地址的步驟和把第二處理的數據集寫入第二處理的數據地址的步驟。
34.權利要求33的方法,其中,提取第二處理的數據地址的步驟還被定義為提取多個處理的數據地址和把第二處理的數據集寫入多個處理的數據地址。
35.通過一個操作系統進行通信的方法,所述操作系統使用多個進程和布置在一個或多個處理器內的多個存儲器源,所述方法包括以下步驟在系統內檢測一個事件;響應于檢測到事件,從其中一個存儲器源提取初始進程地址以確定初始進程的存儲單元;響應于檢測到事件,從其中一個存儲器源提取初始數據地址以確定要在初始進程中使用的初始數據的存儲單元;執行初始進程的可執行碼;在初始數據地址檢索來自其中一個存儲器源的初始數據;使用檢索到的初始數據繼續執行初始進程的可執行碼以定義初始處理的數據集;從其中一個存儲器源提取初始處理的數據地址;把初始處理的數據集寫入初始處理的數據地址;從其中一個存儲器源提取第二進程地址以確定將要執行的第二進程的存儲單元;從其中一個存儲器源提取第二數據地址以確定用在第二進程中的第二數據的存儲單元;執行第二進程的可執行碼;在第二數據地址檢索來自其中一個存儲器源的第二數據;使用檢索到的第二數據繼續執行第二進程的可執行碼以定義第二處理的數據集;從其中一個存儲器源提取第二處理的數據地址;把第二處理的數據集寫入第二處理的數據地址;從其中一個存儲器源提取最后進程地址以確定最后執行的進程的存儲單元;執行最后進程的可執行碼以停止系統通信直到系統檢測到事件為止。
全文摘要
本發明涉及通過使用多個進程(42、52)和布置在一個或多個處理器內的多個存儲器源的操作系統進行通信的方法。該方法包括檢測該系統內的事件(38)和從其中一個存儲器源中提取初始進程地址(60)和初始數據地址以確定初始進程(42)和初始數據的存儲單元的步驟。一旦操作系統知道將被執行和使用進程和數據,則操作系統就執行位于初始進程地址的初始進程(42)的可執行碼。其次,從其中一個存儲器源中提取第二進程地址(67)和第二數據地址(50)以確定第二數據的存儲單元,第二數據用于在初始進程(42)的可執行碼的執行完成之前的第二進程(52)。
文檔編號H04L29/12GK1559032SQ01823799
公開日2004年12月29日 申請日期2001年10月18日 優先權日2001年10月17日
發明者安德魯·R.·奧斯本, 安德魯 R. 奧斯本 申請人:Bep技術公司