專利名稱:在虛擬機(jī)或其他計(jì)算機(jī)實(shí)體之間傳送數(shù)據(jù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
一般地說(shuō),本發(fā)明涉及計(jì)算機(jī)系統(tǒng),更具體地說(shuō),本發(fā)明論及在虛擬機(jī)、邏輯分區(qū)或應(yīng)用程序之間傳送消息和數(shù)據(jù)的有效技術(shù)。
背景技術(shù):
在許多計(jì)算機(jī)環(huán)境中,兩個(gè)或更多個(gè)計(jì)算機(jī)實(shí)體需要交換消息或數(shù)據(jù)。這些計(jì)算機(jī)實(shí)體包括虛擬機(jī)、邏輯分區(qū)和在單一操作系統(tǒng)(如Unix或Windows NT)上運(yùn)行的應(yīng)用。
虛擬機(jī)操作系統(tǒng)在今天是眾所周知的,它包含一個(gè)公共基礎(chǔ)部分和若干單獨(dú)的用戶部分。在一個(gè)IBM z/VM操作系統(tǒng)中,該公共基礎(chǔ)部分稱作“控制程序”或“CP”,而每個(gè)用戶部分稱作“虛擬機(jī)”或“賓客(guest)”。在每個(gè)虛擬機(jī)上能運(yùn)行許多應(yīng)用。每個(gè)虛擬機(jī)有它自己的工作調(diào)度器(以及相關(guān)聯(lián)的工作隊(duì)列)而且是作為個(gè)人操作系統(tǒng)顯現(xiàn)給用戶及其應(yīng)用。每個(gè)虛擬機(jī)以它們所支持的應(yīng)用的名義執(zhí)行命令。不同的虛擬機(jī)能通過(guò)公共基礎(chǔ)部分彼此通信。不同虛擬機(jī)之間經(jīng)由CP進(jìn)行的通信是以消息的形式實(shí)現(xiàn)的,這些消息由虛擬化通信設(shè)備如Guest Lan或IBM專有協(xié)議(如IUCV)傳送。盡管這些通信是由多樣協(xié)議傳送的,但所有這些通信機(jī)制至少有四個(gè)共同性質(zhì)a)消息數(shù)據(jù)首先被寫(xiě)入發(fā)送方的虛擬地址空間。
b)在每個(gè)接收方虛擬機(jī)中為每個(gè)消息產(chǎn)生一個(gè)中斷。這調(diào)用每個(gè)接收方虛擬機(jī)中的中斷處理。
c)為實(shí)現(xiàn)通信,CP必須被調(diào)用。
d)CP把消息數(shù)據(jù)從發(fā)送方虛擬地址空間復(fù)制到所有接收方的虛擬地址空間。
采用上述通信方法,存在顯著的開(kāi)銷,此種開(kāi)銷是與調(diào)用CP、產(chǎn)生中斷、處理中斷和把消息數(shù)據(jù)從發(fā)送方虛擬地址空間復(fù)制到每個(gè)接收方的虛擬地址空間相關(guān)聯(lián)的。
下面是對(duì)IUCV的更詳細(xì)描述。IUCV是IBM專有的點(diǎn)到點(diǎn)協(xié)議。點(diǎn)對(duì)點(diǎn)協(xié)議從一個(gè)發(fā)送方向一個(gè)接收方傳送數(shù)據(jù)。為經(jīng)由IUCV進(jìn)行通信,發(fā)送方首先調(diào)用CP,指出通信的預(yù)期接收方的標(biāo)識(shí)。CP產(chǎn)生一個(gè)對(duì)該接收方的中斷,如果該接收方同意通信,則CP向該接收方提供一個(gè)通信路徑id(標(biāo)識(shí))。然后,CP還中斷該發(fā)送方并向該發(fā)送方提供該通信路徑id。為發(fā)送數(shù)據(jù),該發(fā)送方調(diào)用CP,指出先前得到的路徑id和要發(fā)送的數(shù)據(jù)。CP使用該路徑id去識(shí)別接收方并產(chǎn)生對(duì)該接收方的中斷。該接收方通過(guò)調(diào)用CP以接收該數(shù)據(jù)作為對(duì)中斷的響應(yīng)。于是CP從發(fā)送方的虛擬地址空間向接收方的虛擬地址空間復(fù)制數(shù)據(jù)并對(duì)發(fā)送方產(chǎn)生一個(gè)中斷,指出數(shù)據(jù)已被傳送。
下面是對(duì)Gest Lan的更詳細(xì)描述。Guest Lan是使用局域網(wǎng)(LAN)協(xié)議的一種虛擬化通信設(shè)備。Lan協(xié)議允許在一個(gè)發(fā)送方和多個(gè)接收方之間同時(shí)通信。為經(jīng)由Guest Lan通信,發(fā)送方和接收方都調(diào)用CP,指出它們希望加入Guest Lan。為發(fā)送數(shù)據(jù),發(fā)送方調(diào)用CP,指出要發(fā)送的數(shù)據(jù)和哪些接收方應(yīng)得到該數(shù)據(jù)。CP為每個(gè)所確定的接收方產(chǎn)生一個(gè)中斷。每個(gè)接收方通過(guò)調(diào)用CP以接收數(shù)據(jù)來(lái)響應(yīng)。于是CP把數(shù)據(jù)從發(fā)送方的虛擬地址空間復(fù)制到每個(gè)接收方的虛擬地址空間。一旦所有接收方已收到該數(shù)據(jù),CP對(duì)發(fā)送方產(chǎn)生一個(gè)中斷,指出該數(shù)據(jù)已傳送給所有接收方。
邏輯分區(qū)環(huán)境也是今天眾所周知的。邏輯分區(qū)是對(duì)單個(gè)計(jì)算機(jī)系統(tǒng)的資源的一種邏輯劃分,這種劃分是由軟件和微代碼完成的。每個(gè)邏輯分區(qū)各自是由一個(gè)或多個(gè)CPU、存儲(chǔ)器和外圍設(shè)備的配置規(guī)定的。在一個(gè)邏輯分區(qū)上運(yùn)行的操作系統(tǒng)看待它的邏輯分區(qū)幾乎與真實(shí)的計(jì)算機(jī)區(qū)分不開(kāi),當(dāng)然,邏輯分區(qū)可能提供某些附加的服務(wù),這些服務(wù)在真實(shí)計(jì)算機(jī)上是得不到的。所以,該操作系統(tǒng)基本上不知道它是運(yùn)行在一個(gè)邏輯分區(qū)上,而且它基本上不知道這同一真實(shí)計(jì)算機(jī)上的其他邏輯分區(qū)。每個(gè)分區(qū)也有它自己的調(diào)度器,并如在虛擬機(jī)環(huán)境中那樣使用中斷從一個(gè)邏輯分區(qū)到另一個(gè)邏輯分區(qū)傳送消息/數(shù)據(jù)。
有其他已知技術(shù)用于當(dāng)兩個(gè)應(yīng)用運(yùn)行在同一操作系統(tǒng)(如WindowsNT或Unix)上時(shí)一個(gè)應(yīng)用與另一個(gè)應(yīng)用間的通信。在這一環(huán)境中,操作系統(tǒng)對(duì)這兩個(gè)應(yīng)用使用同一個(gè)調(diào)度器。根據(jù)這些已知的通信技術(shù),當(dāng)應(yīng)用“A”要與應(yīng)用“B”通信時(shí),應(yīng)用A調(diào)用/通知該操作系統(tǒng)內(nèi)的管理程序(supervisor)。該調(diào)用包括可由應(yīng)用A訪問(wèn)的存儲(chǔ)器中該消息/數(shù)據(jù)的地址。作為響應(yīng),管理程序把該消息/數(shù)據(jù)復(fù)制到應(yīng)用B能訪問(wèn)的位置。接下來(lái),管理程序把一個(gè)工作單元(work element)放到調(diào)度隊(duì)列上。該工作單元把應(yīng)用B認(rèn)作接收方并包括一個(gè)取消息/數(shù)據(jù)命令。然后,調(diào)度器在與操作系統(tǒng)調(diào)度策略和工作單元相對(duì)優(yōu)先級(jí)相一致的時(shí)刻把該工作單元調(diào)度到應(yīng)用B。下面是一些可能的已知調(diào)度策略。如果應(yīng)用B當(dāng)前不忙,則當(dāng)處理器變?yōu)榭臻e和/或未被處理(任何應(yīng)用的)更高優(yōu)先級(jí)工作單元所占用時(shí),該消息/數(shù)據(jù)工作單元被調(diào)度到應(yīng)用B。如果應(yīng)用B當(dāng)前忙于另一個(gè)優(yōu)先級(jí)較低的工作項(xiàng)目,則調(diào)度器可能在該較低優(yōu)先級(jí)工作項(xiàng)目完成它的被分配的處理器時(shí)間片或?qū)Σ僮飨到y(tǒng)進(jìn)行一次調(diào)用時(shí)替入該消息/數(shù)據(jù)工作項(xiàng)目。但是,“中斷”該操作系統(tǒng)以向應(yīng)用B傳送消息/數(shù)據(jù)是不適當(dāng)?shù)?,因?yàn)檫@會(huì)導(dǎo)致開(kāi)銷。對(duì)調(diào)度器的共享使這種做法沒(méi)有必要。如上文指出的那樣,虛擬機(jī)、邏輯分區(qū)和其他環(huán)境沒(méi)有共同的調(diào)度器。
本發(fā)明的一個(gè)目的是提供一種有效的方法,用于在a)運(yùn)行在同一基礎(chǔ)操作系統(tǒng)上的兩個(gè)不同的虛擬機(jī)、b)同一計(jì)算機(jī)的兩個(gè)邏輯分區(qū)或c)運(yùn)行在同一計(jì)算機(jī)上但有不同調(diào)度器的兩個(gè)應(yīng)用之間的通信/數(shù)據(jù)傳送。
本發(fā)明的一個(gè)目的是提供一種有效的方法,用于a)全部運(yùn)行在同一基礎(chǔ)操作系統(tǒng)上的一個(gè)虛擬機(jī)到兩個(gè)或更多個(gè)其他虛擬機(jī)、b)同一計(jì)算機(jī)的一個(gè)邏輯分區(qū)到兩個(gè)或更多個(gè)其他邏輯分區(qū)或c)運(yùn)行在同一計(jì)算機(jī)上但有不同調(diào)度器的一個(gè)應(yīng)用到兩個(gè)或更多個(gè)其他應(yīng)用的通信/數(shù)據(jù)傳送。
發(fā)明內(nèi)容
本發(fā)明在于一種方法,用于有共享存儲(chǔ)器的第一和第二計(jì)算機(jī)程序之間的通信。第一計(jì)算機(jī)程序有第一工作調(diào)度器用于第一工作隊(duì)列。第二計(jì)算機(jī)程序有第二工作調(diào)度器用于第二工作隊(duì)列。一個(gè)消息或數(shù)據(jù)被從第一程序?qū)懭牍蚕泶鎯?chǔ)器供第二程序使用,以一個(gè)工作項(xiàng)目對(duì)第二工作隊(duì)列進(jìn)行更新,該工作項(xiàng)目指出用于第二程序的消息或數(shù)據(jù)。與更新步驟相關(guān)聯(lián)的是確定第二程序當(dāng)前是否忙。如果是,則第二程序不會(huì)因?yàn)樵撓⒒驍?shù)據(jù)而被中斷。當(dāng)其后第二程序變?yōu)椴幻r(shí),該第二程序便無(wú)需中斷而接收和執(zhí)行該工作項(xiàng)目去接收該消息或數(shù)據(jù)。如果第二程序當(dāng)前不忙,則第二程序被中斷以在它的工作隊(duì)列上處理該消息或數(shù)據(jù)。(這給第二程序以最小負(fù)擔(dān)。)根據(jù)本發(fā)明的另一特性,有一種方法用于具有共享存儲(chǔ)器和共同基礎(chǔ)操作系統(tǒng)的第一和第二虛擬機(jī)之間的通信。第一虛擬機(jī)有第一工作調(diào)度器用于第一工作隊(duì)列。第二虛擬機(jī)有第二工作調(diào)度器用于第二工作隊(duì)列。第一和第二工作隊(duì)列駐留在由第一和第二虛擬機(jī)二者共享的存儲(chǔ)器中。無(wú)需調(diào)用共同基礎(chǔ)操作系統(tǒng),一個(gè)消息或數(shù)據(jù)被從第一虛擬機(jī)寫(xiě)入共享存儲(chǔ)器供第二虛擬機(jī)使用,以一個(gè)工作項(xiàng)目對(duì)第二工作隊(duì)列進(jìn)行更新,該工作項(xiàng)目指出用于第二虛擬機(jī)的消息或數(shù)據(jù)。其后,第二虛擬機(jī)程序從共享存儲(chǔ)器中讀取該消息或數(shù)據(jù)。
圖1是根據(jù)本發(fā)明的虛擬機(jī)操作系統(tǒng)方框圖。
圖2是顯示根據(jù)本發(fā)明由圖1的虛擬機(jī)實(shí)現(xiàn)的接收來(lái)自另一虛擬機(jī)的消息或數(shù)據(jù)的過(guò)程的流程圖。
圖3是顯示根據(jù)本發(fā)明由圖1的虛擬機(jī)實(shí)現(xiàn)的向另一虛擬機(jī)發(fā)送消息或數(shù)據(jù)的過(guò)程的流程圖。
圖4是根據(jù)本發(fā)明的邏輯上分區(qū)的計(jì)算機(jī)系統(tǒng)的方框圖。
圖5是顯示根據(jù)本發(fā)明由圖4的計(jì)算機(jī)系統(tǒng)的一個(gè)邏輯分區(qū)實(shí)現(xiàn)的接收來(lái)自另一邏輯分區(qū)的消息或數(shù)據(jù)的過(guò)程的流程圖。
圖6是顯示根據(jù)本發(fā)明由圖4的一個(gè)邏輯分區(qū)實(shí)現(xiàn)的向另一邏輯分區(qū)發(fā)送消息或數(shù)據(jù)的過(guò)程的流程圖。
具體實(shí)施例方式
現(xiàn)在詳細(xì)地參考附圖,各圖中相同的標(biāo)號(hào)始終表示相同的部件。圖1顯示根據(jù)本發(fā)明的虛擬機(jī)操作系統(tǒng),一般以10表示。作為舉例,虛擬機(jī)操作系統(tǒng)10可以是IBM z/VM版本4.2.0或4.3.0操作系統(tǒng),當(dāng)然本發(fā)明也能被納入其他虛擬機(jī)或非虛擬機(jī)操作系統(tǒng)。z/VM 4.2.0操作系統(tǒng)的詳情在IBM出版物“z/VM 4.2.0一般信息”(z/VM 4.20 General Information)(文檔號(hào)GC24-5991-03)中被公開(kāi),它可從國(guó)際商業(yè)機(jī)器公司(PO Box29570,IBM Publications,Raleigh,North Corolina 27626-0570)或在萬(wàn)維網(wǎng)上得到,網(wǎng)址為WWW.IBM.com/shop/publications/order。該出版物在這里被納入作為本公開(kāi)內(nèi)容的一部分供參考。操作系統(tǒng)10在物理計(jì)算機(jī)11如IBM zSeries(z系列)大型機(jī)中執(zhí)行,當(dāng)然本發(fā)明也能在其他服務(wù)器計(jì)算機(jī)或個(gè)人計(jì)算機(jī)中實(shí)現(xiàn)。操作系統(tǒng)10包含用戶部分12、14、16...(在z/VM操作系統(tǒng)中稱作“虛擬機(jī)”或“賓客虛擬機(jī)”)和公共基礎(chǔ)部分20(在z/VM操作系統(tǒng)中稱作“CP”)。每個(gè)用戶部分12、14和16提供標(biāo)準(zhǔn)的操作系統(tǒng)功能,如I/O、通信等。每個(gè)用戶部分12、14和16能并發(fā)執(zhí)行若干不同的應(yīng)用,如圖中所示應(yīng)用32、34和36。作為舉例,應(yīng)用32、34和36可以是TELNET、FTP和PING(并使用本發(fā)明代替先有技術(shù)的通信機(jī)制)。在z/VM 4.2.0和4.3.0操作系統(tǒng)中,Linux(Linus Torvalds的商標(biāo))操作系統(tǒng)也能在每個(gè)虛擬機(jī)12、14和16上運(yùn)行,當(dāng)然,Linux操作系統(tǒng)不需要虛擬機(jī)12、14和16的某些操作系統(tǒng)功能,因?yàn)樗鼈兦耙延蒐inux操作系統(tǒng)提供了。盡管未畫(huà)出,通常還有許多其他虛擬機(jī)及相關(guān)的操作系統(tǒng),它們也共享公共基礎(chǔ)部分20。同樣,在每個(gè)虛擬機(jī)上可以有多個(gè)應(yīng)用在執(zhí)行?;A(chǔ)部分20包括已知的功能,如虛擬化的存儲(chǔ)器、虛擬化的諸設(shè)備以及虛擬化的諸CPU。
計(jì)算機(jī)11還包括存儲(chǔ)器區(qū)21,它由全部虛擬機(jī)12、14、16等共享。作為“被共享的”存儲(chǔ)器區(qū),每個(gè)虛擬機(jī)能直接尋址和訪問(wèn)該共享存儲(chǔ)器區(qū)21以從中讀取數(shù)據(jù)和向其中寫(xiě)入數(shù)據(jù)。對(duì)于由應(yīng)用請(qǐng)求的或由應(yīng)用產(chǎn)生的數(shù)據(jù),該應(yīng)用向它運(yùn)行所在的相應(yīng)虛擬機(jī)發(fā)出讀或?qū)懻?qǐng)求。這個(gè)相應(yīng)的虛擬機(jī)代表該應(yīng)用訪問(wèn)共享存儲(chǔ)器,如下文中參考圖2和圖3解釋的那樣。在本發(fā)明的(多個(gè)實(shí)施例中的)一個(gè)實(shí)施例中,共享存儲(chǔ)器21是基礎(chǔ)部分20的非連續(xù)保存段(Discontiguous Saved Segment,DCSS)部分的一部分。DCSS是共享存儲(chǔ)器的一種特殊形式,它能被動(dòng)態(tài)加載和卸載。在虛擬機(jī)終止甚至CP終止時(shí)它仍能存在,并能包含可執(zhí)行代碼。然而,除了共享存儲(chǔ)器外,DCSS內(nèi)的其他功能不是本發(fā)明所需的,因此本發(fā)明不局限于涉及DCSS或其等效物的那些實(shí)現(xiàn)。
每個(gè)虛擬機(jī)12、14和16包括各自的讀功能32a、32b和32c,各自的寫(xiě)功能42a、42b和42c以及各自的調(diào)度器22a、22b和22c。當(dāng)虛擬機(jī)在它執(zhí)行的應(yīng)用中遇到寫(xiě)命令時(shí)便調(diào)用寫(xiě)功能。該寫(xiě)功能是處于待用狀態(tài)的,所以對(duì)寫(xiě)功能任務(wù)無(wú)需排隊(duì)。寫(xiě)功能把數(shù)據(jù)從虛擬機(jī)寫(xiě)入共享存儲(chǔ)器。寫(xiě)操作不調(diào)用CP。當(dāng)虛擬機(jī)在它執(zhí)行的應(yīng)用中遇到讀命令時(shí)便調(diào)用讀功能。該讀功能是處于待用狀態(tài)的,所以對(duì)讀功能任務(wù)無(wú)需排隊(duì)。讀功能從共享存儲(chǔ)器中讀數(shù)據(jù)。這樣,數(shù)據(jù)不是從寫(xiě)方虛擬地址空間復(fù)制到讀方虛擬地址空間。還有,不調(diào)用CP去讀共享存儲(chǔ)器,而這減少了開(kāi)銷。每個(gè)虛擬機(jī)當(dāng)完成一個(gè)工作項(xiàng)目并因此需要另一個(gè)工作項(xiàng)目(如果有的話)時(shí)便調(diào)用(call/invoke)它的調(diào)度器。響應(yīng)這一調(diào)用,該調(diào)度器檢驗(yàn)共享存儲(chǔ)器21內(nèi)其相應(yīng)隊(duì)列26a、26b和26c上的工作項(xiàng)目。
在共享存儲(chǔ)器21中還存儲(chǔ)表24。該表指出每個(gè)虛擬機(jī)12、14、16的狀態(tài)。每個(gè)虛擬機(jī)12、14和16還包括各自的工作隊(duì)列管理功能(WorkQueue Management Function,“WQMF”)81a、81b或81c,該WQMF當(dāng)出現(xiàn)工作項(xiàng)目時(shí)便把它們加到工作隊(duì)列中,并把每個(gè)虛擬機(jī)的狀態(tài)更新為“閑”或“不閑”,如下文描述的那樣。表24包括每個(gè)虛擬機(jī)的標(biāo)識(shí)和指出各自虛擬機(jī)是否空閑的一個(gè)指示。表24還包括用于每個(gè)虛擬機(jī)的指針,指向各自工作隊(duì)列26a、26b或26c。當(dāng)狀態(tài)變化時(shí)表24也變化。在圖1所示例子中,當(dāng)前虛擬機(jī)12不空閑,即它當(dāng)前正在執(zhí)行另一個(gè)工作項(xiàng)目/任務(wù)。然而,虛擬機(jī)12在完成它的當(dāng)前工作項(xiàng)目之后在它的工作隊(duì)列26a中沒(méi)有任何事情要做。虛擬機(jī)14當(dāng)前是空閑的,但在其隊(duì)列26b中有一個(gè)工作項(xiàng)目。在隊(duì)列26b中的工作項(xiàng)目是讀共享存儲(chǔ)器的內(nèi)容,從位置24D00開(kāi)始并延伸給定的長(zhǎng)度。(在工作項(xiàng)目之后的詞“null(空)”表明該隊(duì)列中再?zèng)]有工作項(xiàng)目。)虛擬機(jī)16當(dāng)前不空閑,并在其隊(duì)列26c中有一個(gè)工作項(xiàng)目。在隊(duì)列26c中的工作項(xiàng)目是讀共享存儲(chǔ)器中的內(nèi)容,從位置24D00開(kāi)始并延伸給定的長(zhǎng)度。
圖2是流程圖,顯示每個(gè)調(diào)度器的操作,即每個(gè)調(diào)度器與其他調(diào)度器分離地實(shí)現(xiàn)圖2的步驟。在一個(gè)虛擬機(jī)完成每個(gè)工作項(xiàng)目/任務(wù)之后,它調(diào)用它的調(diào)度器去尋找要完成的新的工作項(xiàng)目(決策48)。在該虛擬機(jī)內(nèi)的調(diào)度器響應(yīng)這一調(diào)用,檢驗(yàn)相應(yīng)的工作隊(duì)列(對(duì)調(diào)度器22a是工作隊(duì)列26a,對(duì)調(diào)度器22b是工作隊(duì)列26b,對(duì)調(diào)度器22c是工作隊(duì)列26c)以查找工作項(xiàng)目(步驟50)。如果在該隊(duì)列中存在一個(gè)工作項(xiàng)目(決策52),則調(diào)度器對(duì)該工作項(xiàng)目進(jìn)行分析(parse),以確定它的性質(zhì)并確定調(diào)用哪個(gè)功能來(lái)完成該工作項(xiàng)目。在讀請(qǐng)求的情況中,調(diào)度器調(diào)用讀功能,在由該工作項(xiàng)目指出的位置讀消息/數(shù)據(jù)。這樣,能在不產(chǎn)生中斷和不調(diào)用中斷處理的情況下完成這個(gè)讀操作。然后,調(diào)度器循環(huán)回到?jīng)Q策52,以再次檢驗(yàn)工作隊(duì)列。如果在決策52的任何循環(huán)期間,在工作隊(duì)列中沒(méi)有工作項(xiàng)目,則該調(diào)度器在表24中為相應(yīng)的虛擬機(jī)設(shè)置狀態(tài)字段為“閑”(步驟60)。然后,調(diào)度器通知該虛擬機(jī)進(jìn)入等待狀態(tài)(步驟62)。在這一等待狀態(tài),該虛擬機(jī)是處于“睡眠”或“閑”方式,這時(shí)它不為應(yīng)用也不為它本身執(zhí)行任何工作項(xiàng)目。該虛擬機(jī)將保持在這一等待狀態(tài),直至收到一個(gè)中斷指出在其工作隊(duì)列中有了新的工作項(xiàng)目(決策66)。當(dāng)收到這一中斷時(shí),該虛擬機(jī)的WQMF在表24中為相應(yīng)的虛擬機(jī)設(shè)置狀態(tài)字段為“不閑”(步驟68)。接下來(lái),該調(diào)度器循環(huán)回到?jīng)Q策52以檢驗(yàn)該工作隊(duì)列去尋找工作項(xiàng)目。在這時(shí),在該工作隊(duì)列中應(yīng)該有一個(gè)工作項(xiàng)目。
圖3顯示虛擬機(jī)之一(例如虛擬機(jī)12)當(dāng)它想要向另一虛擬機(jī)(如虛擬機(jī)14)發(fā)送一個(gè)消息/數(shù)據(jù)時(shí)的操作。在步驟80,虛擬機(jī)12調(diào)用它的寫(xiě)功能32a以把數(shù)據(jù)寫(xiě)入共享存儲(chǔ)器21。如前文解釋的那樣,每個(gè)虛擬機(jī)通過(guò)提供適當(dāng)?shù)牡刂纺苤苯釉L問(wèn)共享存儲(chǔ)器。于是,虛擬機(jī)12的寫(xiě)功能32a通過(guò)給定要寫(xiě)入的地址和提供要寫(xiě)的數(shù)據(jù)把該數(shù)據(jù)寫(xiě)入共享存儲(chǔ)器。接下來(lái),在虛擬機(jī)12內(nèi)的工作隊(duì)列管理功能(“WQMF”)81a通過(guò)把一工作項(xiàng)目寫(xiě)入虛擬機(jī)14的工作隊(duì)列26b使得對(duì)工作隊(duì)列26b添加了一個(gè)工作項(xiàng)目(步驟82)。因?yàn)樵摴ぷ麝?duì)列是在共享存儲(chǔ)器中,所以這不需要調(diào)用CP。接下來(lái),WQMF 81a通過(guò)檢驗(yàn)表24確定虛擬機(jī)14當(dāng)前是否空閑(決策84)。如果不空閑,則虛擬機(jī)12不再做任何事情去完成這一通信,而且在這一通信過(guò)程的任何一點(diǎn)CP都不被調(diào)用(終止步驟86)。根據(jù)本發(fā)明,虛擬機(jī)12不去中斷虛擬機(jī)14,這是因?yàn)樵谥袛嗵摂M機(jī)過(guò)程中涉及的開(kāi)銷。如上文參考圖2解釋的那樣,當(dāng)虛擬機(jī)14完成它的當(dāng)前工作項(xiàng)目時(shí),它將自動(dòng)調(diào)用(invoke/call)它的調(diào)度器去檢驗(yàn)其工作隊(duì)列以尋找另一個(gè)工作項(xiàng)目(決策48和步驟50)。在那時(shí)它將看到來(lái)自虛擬機(jī)12的這個(gè)工作項(xiàng)目。再次參考決策84,如果虛擬機(jī)14空閑,則根據(jù)本發(fā)明,虛擬機(jī)12向虛擬機(jī)14發(fā)出“喚醒”型中斷(步驟88)。這需要調(diào)用CP。這個(gè)喚醒型中斷告警/調(diào)用虛擬機(jī)14,告知它在其隊(duì)列26b中有一個(gè)工作項(xiàng)目。虛擬機(jī)12以發(fā)出這一中斷完成數(shù)據(jù)通信的它的那一部分。該“喚醒”中斷自動(dòng)地使虛擬機(jī)14啟動(dòng)其調(diào)度器22b(圖2的決策48)以檢驗(yàn)其工作隊(duì)列尋找工作項(xiàng)目。然后調(diào)度器22b實(shí)現(xiàn)圖2中所示步驟以檢驗(yàn)它的工作隊(duì)列26b(步驟50和決策52),然后讀數(shù)據(jù)(步驟54)。
圖3還顯示虛擬機(jī)之一(例如虛擬機(jī)12)當(dāng)它想要與兩個(gè)或更多個(gè)其他虛擬機(jī)(例如虛擬機(jī)14和16)進(jìn)行通信時(shí)的操作。在步驟80,虛擬機(jī)12調(diào)用它的寫(xiě)功能32a以把數(shù)據(jù)寫(xiě)入共享存儲(chǔ)器21。于是,虛擬機(jī)12通過(guò)給定要寫(xiě)入的地址和提供要寫(xiě)的數(shù)據(jù)把該數(shù)據(jù)寫(xiě)入共享存儲(chǔ)器。在圖1中所示例子中,數(shù)據(jù)被寫(xiě)入以地址24D00開(kāi)始的共享存儲(chǔ)器位置。接下來(lái),虛擬機(jī)12內(nèi)的WQMF 81a通過(guò)把工作項(xiàng)目、數(shù)據(jù)地址和數(shù)據(jù)長(zhǎng)度寫(xiě)到工作隊(duì)列上,對(duì)虛擬機(jī)14和16的工作隊(duì)列26b和26c添加了一個(gè)工作項(xiàng)目(步驟82)。然后,虛擬機(jī)12內(nèi)的WQMF 81a通過(guò)檢驗(yàn)表24確定虛擬機(jī)14和16當(dāng)前是否空閑(決策84)。在圖1所示例子中,虛擬機(jī)14是空閑的,但虛擬機(jī)16是忙的。于是,對(duì)于忙的虛擬機(jī)16,虛擬機(jī)12不再做任何事情去完成這一通信(終止步驟86)。根據(jù)本發(fā)明,虛擬機(jī)12不去中斷忙的虛擬機(jī)16,這是因?yàn)樵谥袛嗵摂M機(jī)過(guò)程中涉及的開(kāi)鎖。如上文參考圖2解釋的那樣,當(dāng)忙的虛擬機(jī)16完成它的當(dāng)前工作項(xiàng)目時(shí),它將自動(dòng)檢驗(yàn)它的工作隊(duì)列以尋找另一工作項(xiàng)目(決策48和步驟50)。在那時(shí)它將看到來(lái)自虛擬機(jī)12的這個(gè)工作項(xiàng)目,于是通信將被完成,而無(wú)需調(diào)用CP。再次參考決策84,因?yàn)樘摂M機(jī)14是空閑的,于是根據(jù)本發(fā)明,虛擬機(jī)12向空閑的虛擬機(jī)14發(fā)出“喚醒”型中斷(步驟88)。這個(gè)喚醒型中斷告警/調(diào)用空閑虛擬機(jī)14,告知它在其隊(duì)列中有一個(gè)工作項(xiàng)目。虛擬機(jī)12以發(fā)出這一中斷完成數(shù)據(jù)通信的它的那一部分。該“喚醒”中斷自動(dòng)地使虛擬機(jī)14調(diào)用(invoke/call)它的調(diào)度器22b以檢驗(yàn)其工作隊(duì)列尋找工作項(xiàng)目。然后調(diào)度器22b實(shí)現(xiàn)圖2中所示步驟以檢驗(yàn)它的工作隊(duì)列26b(決策52),然后讀數(shù)據(jù)(步驟54)。
圖4顯示根據(jù)本發(fā)明的邏輯分區(qū)的計(jì)算機(jī)系統(tǒng),總體上以110表示。系統(tǒng)110是一個(gè)物理計(jì)算機(jī)111的一個(gè)邏輯分區(qū),該物理計(jì)算機(jī)可以是例如IBM zSeries大型機(jī),當(dāng)然本發(fā)明也能在其他服務(wù)器計(jì)算機(jī)或個(gè)人計(jì)算機(jī)中實(shí)現(xiàn)。系統(tǒng)110包含邏輯分區(qū)112、114、116。每個(gè)邏輯分區(qū)112、114和116向其應(yīng)用提供標(biāo)準(zhǔn)的操作系統(tǒng)功能,如I/O、通信等。每個(gè)邏輯分區(qū)112、114和116能并發(fā)執(zhí)行若干不同的應(yīng)用,如圖中所示應(yīng)用132、134和136。作為舉例,應(yīng)用132、134和136能是Telnet,F(xiàn)TP以及Ping(并使用本發(fā)明代替先有技術(shù)的通信機(jī)制)?;A(chǔ)部分120參與計(jì)算機(jī)111及其資源的實(shí)際邏輯分區(qū),即對(duì)一個(gè)或多個(gè)CPU分區(qū),對(duì)存儲(chǔ)器分區(qū),對(duì)I/O分區(qū)等。不同于本發(fā)明的基礎(chǔ)部分120和邏輯分區(qū)112、114及116的一個(gè)實(shí)例的諸功能在題為“企業(yè)系統(tǒng)/9000 9221處理器操作您的系統(tǒng)—卷2(邏輯分區(qū)方式)”(Enterprise System/9000 9221 ProcessorsOperating Your System-Volume 2(Logically Partitioning Mode))的文檔中描述,出版號(hào)為SA24-4351-02,它可從國(guó)際商業(yè)機(jī)器公司(PO Box 29570,IBM Publications,Raleigh,North Carolina 27626-0570)或在萬(wàn)維網(wǎng)上得到,網(wǎng)址為WWW.IBM.com/shop/publications/order。
計(jì)算機(jī)111還包括存儲(chǔ)器區(qū)121,它由全部球邏輯分區(qū)112、114、116等共享。作為“被共享的”存儲(chǔ)器區(qū),每個(gè)邏輯分區(qū)能直接尋址和訪問(wèn)該共享存儲(chǔ)器區(qū)121以從中讀取數(shù)據(jù)和向其寫(xiě)入數(shù)據(jù)。對(duì)于由應(yīng)用請(qǐng)求的數(shù)據(jù)或由應(yīng)用產(chǎn)生的數(shù)據(jù),該應(yīng)用向它運(yùn)行所在的邏輯分區(qū)發(fā)出讀或?qū)懻?qǐng)求。這個(gè)相應(yīng)的邏輯分區(qū)代表該應(yīng)用訪問(wèn)該共享存儲(chǔ)器,如下文中參考圖5和圖6解釋的那樣。
每個(gè)邏輯分區(qū)112、114和116包括各自的讀功能132a、132b和132c,各自的寫(xiě)功能142a、142b和142c以及各自的調(diào)度器122a、122b和122c。當(dāng)邏輯分區(qū)在它執(zhí)行的應(yīng)用中遇到寫(xiě)命令時(shí)便調(diào)用寫(xiě)功能。該寫(xiě)功能是處于等待狀態(tài)的,所以對(duì)寫(xiě)功能任務(wù)無(wú)需排隊(duì)。寫(xiě)功能把數(shù)據(jù)從邏輯分區(qū)寫(xiě)入共享存儲(chǔ)器,所以不調(diào)用基礎(chǔ)部分120。當(dāng)邏輯分區(qū)在它執(zhí)行的應(yīng)用中遇到讀命令時(shí)便調(diào)用讀功能。該讀功能是處于待用狀態(tài)的,所以對(duì)讀功能任務(wù)無(wú)需排隊(duì)。讀功能從共享存儲(chǔ)器中讀數(shù)據(jù)。所以不調(diào)用基礎(chǔ)部分120。還有,數(shù)據(jù)不是從寫(xiě)方的虛擬地址空間復(fù)制到讀方的虛擬地址空間。每個(gè)邏輯分區(qū)當(dāng)完成一個(gè)工作項(xiàng)目并因此需要另一個(gè)工作項(xiàng)目(如果有的話)時(shí)便調(diào)用(call/invoke)它的調(diào)度器。響應(yīng)這一調(diào)用,調(diào)度器檢驗(yàn)共享存儲(chǔ)器121內(nèi)其相應(yīng)隊(duì)列126a、126b或126c上的工作項(xiàng)目。
在共享存儲(chǔ)器121中還存儲(chǔ)表124。該表指出每個(gè)邏輯分區(qū)112、114和116的狀態(tài)。每個(gè)邏輯分區(qū)112、114和116還包括各自的WQMF 181a、181b或181c,該WQMF當(dāng)出現(xiàn)工作項(xiàng)目時(shí)便把它們加到工作隊(duì)列中,并把每個(gè)邏輯分區(qū)的狀態(tài)更新為“閑”或“不閑”,如下文描述的那樣。表124包括每個(gè)邏輯分區(qū)的標(biāo)識(shí)和指出各邏輯分區(qū)是否空閑的一個(gè)指示。表124還包括用于每個(gè)邏輯分區(qū)的指針,指向各自工作隊(duì)列126a、126b或126c。當(dāng)狀態(tài)變化時(shí)表124也變化。在圖4所示例子中,當(dāng)前邏輯分區(qū)112不空閑,即它當(dāng)前還在執(zhí)行另一個(gè)工作項(xiàng)目/任務(wù)。然而,邏輯分區(qū)112在完成它的當(dāng)前工作項(xiàng)目之后在它的工作隊(duì)列126a中沒(méi)有任何事情要做。邏輯分區(qū)114當(dāng)前是空閑的,但在其隊(duì)列126b中有一個(gè)工作項(xiàng)目。在隊(duì)列126b中的工作項(xiàng)目是讀共享存儲(chǔ)器的內(nèi)容,從位置24D00開(kāi)始并延伸給定的長(zhǎng)度。(在工作項(xiàng)目之后的詞“null(空)”表明該隊(duì)列中再?zèng)]有工作項(xiàng)目。)邏輯分區(qū)116當(dāng)前不空閑,并在其隊(duì)列126c中有一個(gè)工作項(xiàng)目。在隊(duì)列126c中的工作項(xiàng)目是讀共享存儲(chǔ)器中的內(nèi)容,從位置24D00開(kāi)始并延伸給定的長(zhǎng)度。
圖5是流程圖,顯示每個(gè)調(diào)度器的操作,即每個(gè)調(diào)度器與其他調(diào)度器分離地實(shí)現(xiàn)圖5的步驟。在一個(gè)邏輯分區(qū)完成每個(gè)工作項(xiàng)目/任務(wù)之后,它調(diào)用它的調(diào)度器去尋找要完成的新的工作項(xiàng)目(決策148)。在該邏輯分區(qū)內(nèi)的調(diào)度器響應(yīng)這一調(diào)用,檢驗(yàn)相應(yīng)的工作隊(duì)列(對(duì)調(diào)度器122a是工作隊(duì)列126a,對(duì)調(diào)度器122b是工作隊(duì)列126b,對(duì)調(diào)度器122c是工作隊(duì)列126c)以查找工作項(xiàng)目(步驟150)。如果在該隊(duì)列中存在一個(gè)工作項(xiàng)目(決策152),則調(diào)度器對(duì)該工作項(xiàng)目進(jìn)行分析(parse),以確定它的性質(zhì)并確定調(diào)用哪個(gè)功能來(lái)完成該工作項(xiàng)目。在讀請(qǐng)求的情況中,調(diào)度器調(diào)用讀功能,在由該工作項(xiàng)目指出的位置讀消息/數(shù)據(jù)。這樣,能在不產(chǎn)生中斷和不調(diào)用中斷處理的情況下完成這個(gè)讀操作。然后,調(diào)度器循環(huán)回到?jīng)Q策152,以再次檢驗(yàn)工作隊(duì)列。如果在決策152的任何循環(huán)期間,在工作隊(duì)列中沒(méi)有工作項(xiàng)目,則該調(diào)度器在表124中為相應(yīng)的邏輯分區(qū)設(shè)置狀態(tài)字段為“閑”(步驟160)。然后,調(diào)度器通知該邏輯分區(qū)進(jìn)入等待狀態(tài)(步驟162)。在這一等待狀態(tài),該邏輯分區(qū)是處于“睡眠”或“閑”方式,這時(shí)它不為應(yīng)用也不為它本身執(zhí)行任何工作項(xiàng)目。該邏輯分區(qū)將保持在這一等待狀態(tài),直到收到一個(gè)中斷指出在其工作隊(duì)列中有了新的工作項(xiàng)目(決策166)。當(dāng)收到這一中斷時(shí),該邏輯分區(qū)的WQMF在表124中為相應(yīng)的邏輯分區(qū)設(shè)置狀態(tài)字段為“不閑”(步驟168)。接下來(lái),該調(diào)度器循環(huán)回到?jīng)Q策152以檢驗(yàn)該工作隊(duì)列去尋找工作項(xiàng)目。在這時(shí),在該工作隊(duì)列中應(yīng)該有一個(gè)工作項(xiàng)目。
圖6顯示邏輯分區(qū)之一(例如邏輯分區(qū)112)當(dāng)它想要向另一邏輯分區(qū)(例如邏輯分區(qū)114)發(fā)送一個(gè)消息/數(shù)據(jù)時(shí)的操作。在步驟180,邏輯分區(qū)112調(diào)用它的寫(xiě)功能132a以把數(shù)據(jù)寫(xiě)入共享存儲(chǔ)器121。如前文解釋的那樣,每個(gè)邏輯分區(qū)通過(guò)提供適當(dāng)?shù)牡刂纺苤苯釉L問(wèn)共享存儲(chǔ)器。于是,邏輯分區(qū)112的寫(xiě)功能132a通過(guò)給定要寫(xiě)入的地址和提供要寫(xiě)的數(shù)據(jù)把該數(shù)據(jù)寫(xiě)入共享存儲(chǔ)器。接下來(lái),在邏輯分區(qū)112內(nèi)的WQMF 181a通過(guò)把一工作項(xiàng)目寫(xiě)入邏輯分區(qū)114的工作隊(duì)列126b使得對(duì)工作隊(duì)列126b添加了一個(gè)工作項(xiàng)目(步驟182)。接下來(lái),WQMF 181a通過(guò)檢驗(yàn)表124確定邏輯分區(qū)114當(dāng)前是否空閑(決策184)。如果不空閑,則該邏輯分區(qū)不再做任何事情去完成這一通信,而且在這一通信過(guò)程的任何一點(diǎn)基礎(chǔ)部分120都不被調(diào)用(終止步驟186)。根據(jù)本發(fā)明,邏輯分區(qū)112不去中斷邏輯分區(qū)114,這是因?yàn)樵谥袛噙壿嫹謪^(qū)過(guò)程中涉及的開(kāi)銷。如上文參考圖5解釋的那樣,當(dāng)邏輯分區(qū)114完成它的當(dāng)前工作項(xiàng)目時(shí),它將自動(dòng)調(diào)用(invoke/call)它的調(diào)度器去檢驗(yàn)其工作隊(duì)列以尋找另一個(gè)工作項(xiàng)目(決策148和步驟150)。在那時(shí)它將看到來(lái)自邏輯分區(qū)112的這個(gè)工作項(xiàng)目。再參考決策184,如果邏輯分區(qū)114空閑,則根據(jù)本發(fā)明,邏輯分區(qū)112向邏輯分區(qū)114發(fā)出“喚醒”型中怕(步驟188)。這個(gè)喚醒型中斷告警/調(diào)用邏輯分區(qū)114,告知它在其隊(duì)列126b中有一個(gè)工作項(xiàng)目。邏輯分區(qū)112以發(fā)出這一中斷完成數(shù)據(jù)通信的它的那一部分。該“喚醒”中斷自動(dòng)地使邏輯分區(qū)114啟動(dòng)其調(diào)度器122b(圖5中的決策148)以檢驗(yàn)其工作隊(duì)列尋找工作項(xiàng)目。然后調(diào)度器22b實(shí)現(xiàn)圖5中所示步驟以檢驗(yàn)它的工作隊(duì)列126b(步驟150和決策152),然后讀數(shù)據(jù)(步驟154)。
圖6還顯示邏輯分區(qū)之一(例如邏輯分區(qū)112)當(dāng)它想要與兩個(gè)或更多個(gè)其他邏輯分區(qū)(例如邏輯分區(qū)114和116)進(jìn)行通信時(shí)的操作,在步驟180,邏輯分區(qū)112調(diào)用它的寫(xiě)功能132a以把數(shù)據(jù)寫(xiě)入共享存儲(chǔ)器121。于是,邏輯分區(qū)112通過(guò)給定要寫(xiě)入的地址和提交要寫(xiě)的數(shù)據(jù)把該數(shù)據(jù)寫(xiě)入共享存儲(chǔ)器。在圖4中所示例子中,數(shù)據(jù)被寫(xiě)入以地址24D00開(kāi)始的共享存儲(chǔ)器位置。接下來(lái),邏輯分區(qū)112內(nèi)的WQMF 181a通過(guò)把工作項(xiàng)目、數(shù)據(jù)地址和數(shù)據(jù)長(zhǎng)度寫(xiě)到工作隊(duì)列上,對(duì)邏輯分區(qū)114和116的工作隊(duì)列126b和126c添加了一個(gè)工作項(xiàng)目(步驟182)。然后,邏輯分區(qū)112內(nèi)的WQMF 181a通過(guò)檢驗(yàn)表124確定邏輯分區(qū)114和116當(dāng)前是否空閑(決策184)。在圖4所示例子中,邏輯分區(qū)114是空閑的,但邏輯分區(qū)116是忙的。于是,對(duì)于忙的邏輯分區(qū)116,邏輯分區(qū)112不再做任何事情去完成這一通信(終止步驟186)。根據(jù)本發(fā)明,邏輯分區(qū)112不去中斷忙的邏輯分區(qū)116,這是因?yàn)樵谥袛噙壿嫹謪^(qū)過(guò)程中涉及的開(kāi)銷。如上文參考圖5解釋的那樣,當(dāng)忙的邏輯分區(qū)116完成它的當(dāng)前工作項(xiàng)目時(shí),它將自動(dòng)檢驗(yàn)它的工作隊(duì)列以尋找另一工作項(xiàng)目(決策148和步驟150)。在那時(shí)它將看到來(lái)自邏輯分區(qū)112的這個(gè)工作項(xiàng)目,于是通信將被完成,而無(wú)需調(diào)用基礎(chǔ)部分120。再次參考決策184,因?yàn)檫壿嫹謪^(qū)114是空閑的,于是根據(jù)本發(fā)明,邏輯分區(qū)112向空閑的邏輯分區(qū)114發(fā)出“喚醒”型中斷(步驟188)。這個(gè)喚醒型中斷告警/調(diào)用空閑的邏輯分區(qū)114,告知它在其隊(duì)列中有一個(gè)工作項(xiàng)目。邏輯分區(qū)112以發(fā)出這一中斷完成數(shù)據(jù)通信的它的那一部分。該“喚醒”中斷自動(dòng)使邏輯分區(qū)114調(diào)用(invoke/call)它的調(diào)度器112b以檢驗(yàn)其工作隊(duì)列尋找工作項(xiàng)目。然后調(diào)度器122b實(shí)現(xiàn)圖5中所示步驟以檢驗(yàn)它的工作隊(duì)列126b(決策152),然后讀數(shù)據(jù)(步驟154)。
權(quán)利要求
1.一種在具有共享存儲(chǔ)器的第一和第二計(jì)算機(jī)程序之間通信的方法,所述第一計(jì)算機(jī)程序具有用于第一工作隊(duì)列的第一工作調(diào)度器,所述第二計(jì)算機(jī)程序具有用于第二工作隊(duì)列的第二工作調(diào)度器,所述方法包含如下步驟從所述第一程序向所述共享存儲(chǔ)器寫(xiě)用于所述第二程序的消息或數(shù)據(jù),并以一個(gè)工作項(xiàng)目更新所述第二工作隊(duì)列,該工作項(xiàng)目指出用于所述第二程序的消息或數(shù)據(jù);與所述更新步驟相關(guān)聯(lián),確定所述第二程序當(dāng)前是否忙;如果是,則不因所述消息或數(shù)據(jù)而中斷所述第二程序;以及如果不是,則中斷所述第二程序以處理在其工作隊(duì)列上的所述消息或數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述第二程序隨后變?yōu)椴幻r(shí),所述第二程序,無(wú)需中斷,而接收和執(zhí)行所述工作項(xiàng)目以接收所述消息或數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一程序是一個(gè)第一虛擬機(jī)而所述第二程序是一個(gè)第二虛擬機(jī)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一和第二工作隊(duì)列駐留在由所述第一和第二計(jì)算機(jī)程序共享的一個(gè)存儲(chǔ)器中。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一和第二工作隊(duì)列駐留在所述共享存儲(chǔ)器中。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述共享存儲(chǔ)器是由一個(gè)虛擬機(jī)操作系統(tǒng)的公共基礎(chǔ)部分建立的,從而使所述共享存儲(chǔ)器同時(shí)駐留在兩個(gè)虛擬機(jī)中。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一計(jì)算機(jī)程序是一個(gè)計(jì)算機(jī)系統(tǒng)的一個(gè)第一邏輯分區(qū),而所述第二計(jì)算機(jī)程序是所述計(jì)算機(jī)系統(tǒng)的一個(gè)第二邏輯分區(qū)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,進(jìn)一步包含一個(gè)由所述第一和第二邏輯分區(qū)共用的基本操作系統(tǒng),并且所述寫(xiě)和更新步驟不需要調(diào)用所述基本操作系統(tǒng)。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包含由所述第二計(jì)算機(jī)程序從所述共享存儲(chǔ)器讀所述消息或數(shù)據(jù)的步驟。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,當(dāng)從所述第一計(jì)算機(jī)程序向所述第二計(jì)算機(jī)程序傳送所述消息或數(shù)據(jù)時(shí),所述消息或數(shù)據(jù)只被一次寫(xiě)入所述共享存儲(chǔ)器。
11.一種在具有共享存儲(chǔ)器的第一和第二計(jì)算機(jī)程序之間通信的系統(tǒng),所述第一計(jì)算機(jī)程序具有用于第一工作隊(duì)列的第一工作調(diào)度器,所述第二計(jì)算機(jī)程序具有用于第二工作隊(duì)列的第二工作調(diào)度器,所述系統(tǒng)包含用于從所述第一程序向所述共享存儲(chǔ)器寫(xiě)供所述第二程序使用的消息或數(shù)據(jù),并以一個(gè)工作項(xiàng)目更新所述第二工作隊(duì)列的裝置,該工作項(xiàng)目指出用于所述第二程序的消息或數(shù)據(jù);與所述更新步驟關(guān)聯(lián),用于確定所述第二程序當(dāng)前是否忙,而且如果是忙,則不因所述消息或數(shù)據(jù)而中斷所述第二程序,而如果不是忙,則中斷所述第二程序以處理在其工作隊(duì)列上的所述消息或數(shù)據(jù)的裝置。
12.一種用于在具有共享存儲(chǔ)器的第一和第二計(jì)算機(jī)程序之間通信的計(jì)算機(jī)程序產(chǎn)品,所述第一計(jì)算機(jī)程序具有用于第一工作隊(duì)列的第一工作調(diào)度器,所述第二計(jì)算機(jī)程序具有用于第二工作隊(duì)列的第二工作調(diào)度器,所述程序產(chǎn)品包含計(jì)算機(jī)可讀介質(zhì);用于從所述第一程序向所述共享存儲(chǔ)器寫(xiě)消息或數(shù)據(jù)供所述第二程序使用,并以一個(gè)工作項(xiàng)目更新所述第二工作隊(duì)列的程序指令裝置,該工作項(xiàng)目指出用于所述第二程序的消息或數(shù)據(jù);與所述更新步驟關(guān)聯(lián),用于確定所述第二程序當(dāng)前是否忙,而且如果是忙,則不因所述消息或數(shù)據(jù)而中斷所述第二程序,而如果不是忙,則中斷所述第二程序以處理在其工作隊(duì)列上的所述消息或數(shù)據(jù)的程序指令裝置;其中,所述程序指令裝置被記錄在所述介質(zhì)上。
13.一種在具有共享存儲(chǔ)器和公共基礎(chǔ)操作系統(tǒng)的第一和第二虛擬機(jī)之間通信的方法,所述第一虛擬機(jī)具有用于第一工作隊(duì)列的第一工作調(diào)度器,所述第二虛擬機(jī)具有用于第二工作隊(duì)列的第二工作調(diào)度器,所述第一和第二工作隊(duì)列駐留在由所述第一和第二虛擬機(jī)二者共享的存儲(chǔ)器中,所述方法包含如下步驟不調(diào)用所述公共基礎(chǔ)操作系統(tǒng),從所述第一虛擬機(jī)向所述共享存儲(chǔ)器寫(xiě)用于所述第二虛擬機(jī)的消息或數(shù)據(jù),并以一個(gè)工作項(xiàng)目更新所述第二工作隊(duì)列,該工作項(xiàng)目指出用于所述第二虛擬機(jī)的消息或數(shù)據(jù)。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于,與所述更新步驟相關(guān)聯(lián)并且不調(diào)用所述公共基礎(chǔ)操作系統(tǒng),確定所述第二虛擬機(jī)當(dāng)前是否忙,而且如果是忙,則不因所述消息或數(shù)據(jù)而中斷所述第二虛擬機(jī),而如果不是忙,則中斷所述第二虛擬機(jī)以處理在其工作隊(duì)列上的所述消息或數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的方法,其特征在于,所述中斷步驟需要調(diào)用所述公共基礎(chǔ)操作系統(tǒng)。
16.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述第一調(diào)度器駐留在所述第一虛擬機(jī)中,所述第二調(diào)度器駐留在所述第二虛擬機(jī)中。
17.根據(jù)權(quán)利要求13所述的方法,其特征在于,進(jìn)一步包含所述第二虛擬機(jī)程序從所述共享存儲(chǔ)器讀所述消息或數(shù)據(jù)的步驟。
18.根據(jù)權(quán)利要求17所述的方法,其特征在于,當(dāng)從所述第一虛擬機(jī)向所述第二虛擬機(jī)傳送所述消息或數(shù)據(jù)時(shí),所述消息或數(shù)據(jù)只被一次寫(xiě)入所述共享存儲(chǔ)器。
19.一種在具有共享存儲(chǔ)器和公共基礎(chǔ)操作系統(tǒng)的第一和第二計(jì)算機(jī)程序之間通信的方法,所述第一計(jì)算機(jī)程序具有用于第一工作隊(duì)列的第一工作調(diào)度器,所述第二計(jì)算機(jī)程序具有用于第二工作隊(duì)列的第二工作調(diào)度器,所述第一和第二工作隊(duì)列駐留在由所述第一和第二計(jì)算機(jī)程序二者共享的存儲(chǔ)器中,所述方法包含如下步驟不調(diào)用所述公共基礎(chǔ)操作系統(tǒng),從所述第一計(jì)算機(jī)程序向所述共享存儲(chǔ)器寫(xiě)用于所述第二計(jì)算機(jī)程序的消息或數(shù)據(jù)并以一個(gè)工作項(xiàng)目更新所述第二工作隊(duì)列,該工作項(xiàng)目指出用于所述第二計(jì)算機(jī)程序的消息或數(shù)據(jù)。
20.根據(jù)權(quán)利要求19所述的方法,其特征在于,所述第一計(jì)算機(jī)程序是一個(gè)第一邏輯分區(qū),所述第二計(jì)算機(jī)程序是一個(gè)第二邏輯分區(qū)。
21.根據(jù)權(quán)利要求19所述的方法,其特征在于,所述第一和第二工作隊(duì)列駐留在由所述第一和第二計(jì)算機(jī)程序二者共用的一個(gè)或多個(gè)存儲(chǔ)器中。
全文摘要
一種在具有共享存儲(chǔ)器的第一和第二計(jì)算機(jī)程序之間通信的方法。該第一計(jì)算機(jī)程序具有第一工作調(diào)度器用于第一工作隊(duì)列。該第二計(jì)算機(jī)程序具有第二工作調(diào)度器用于第二工作隊(duì)列。無(wú)需引起中斷,一個(gè)消息或數(shù)據(jù)被從第一程序?qū)懭牍蚕泶鎯?chǔ)器供第二程序使用,而第二工作隊(duì)列以一個(gè)工作項(xiàng)目進(jìn)行更新,該工作項(xiàng)目指出用于第二程序的消息或數(shù)據(jù)。與更新步驟相關(guān)聯(lián),確定第二程序當(dāng)前是否忙。如果是,則第二程序不會(huì)因?yàn)樵撓⒒驍?shù)據(jù)而被中斷。當(dāng)其后第二程序變?yōu)椴幻r(shí),該第二程序便無(wú)需中斷而接收和執(zhí)行該工作項(xiàng)目去接收該消息或數(shù)據(jù)。如果第二程序當(dāng)前不忙,則第二程序被中斷以處理它的工作隊(duì)列上的該消息或數(shù)據(jù)。這給第二程序造成最小負(fù)擔(dān)。
文檔編號(hào)G06F9/455GK1497469SQ20031010177
公開(kāi)日2004年5月19日 申請(qǐng)日期2003年10月23日 優(yōu)先權(quán)日2002年10月24日
發(fā)明者S·S·舒爾茨, X·特卡特壽, S S 舒爾茨, ㄌ厥 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司