用于管理共享存儲器的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本公開一般地涉及數(shù)據(jù)處理環(huán)境,更具體地講,涉及一種用于數(shù)據(jù)處理環(huán)境的交 叉分區(qū)共享存儲器掛接(attach)。
【背景技術(shù)】
[0002] 當(dāng)一個進(jìn)程(其具有其自己的地址空間和唯一的用戶空間)需要與另一進(jìn)程(其 具有其自己的地址空間和唯一的用戶空間)通信時,該進(jìn)程可向內(nèi)核發(fā)送請求以分配用于 進(jìn)程間通信(IPC)的存儲器空間。進(jìn)程也可與另一進(jìn)程經(jīng)由這兩個進(jìn)程都可訪問的文件進(jìn) 行通信。然而,要求進(jìn)程打開和讀/寫文件以與另一進(jìn)程通信,通常需要多個輸入/輸出 (I/O)操作,所述多個I/O操作可能消耗不希望的量的時間。
[0003] 在UNIX?中,也存在允許進(jìn)程與同一數(shù)據(jù)處理系統(tǒng)中或同一網(wǎng)絡(luò)中的不同數(shù) 據(jù)處理系統(tǒng)中的其它進(jìn)程通信的各種IPC。例如,"管道(pipe)"提供一種進(jìn)程通過交換消 息來彼此通信的方式。作為另一例子,"命名管道"提供一種在不同數(shù)據(jù)處理系統(tǒng)上運(yùn)行的 進(jìn)程通過網(wǎng)絡(luò)進(jìn)行通信的方式。作為另一例子,進(jìn)程能夠在共享存儲器中交換值。在這種 情況下,一個進(jìn)程指定其它進(jìn)程能夠訪問的一部分存儲器。作為另一例子,進(jìn)程可使用消息 隊(duì)列與其它進(jìn)程通信,消息隊(duì)列是進(jìn)程存儲或取回數(shù)據(jù)的存儲器段的結(jié)構(gòu)化的有序列表。 另外,進(jìn)程也可使用信號量與其它進(jìn)程通信,信號量為訪問同一資源的進(jìn)程提供同步機(jī)制。 通常,信號量簡單地協(xié)調(diào)對共享資源的訪問。也就是說,并不利用信號量在進(jìn)程之間傳遞數(shù) 據(jù)。
[0004] UNIX共享存儲器掛接(SHMAT)命令或函數(shù)也可被用于把識別的共享存儲器段掛 接到主調(diào)進(jìn)程的地址空間,從而一個進(jìn)程可與另一進(jìn)程通信。傳統(tǒng)的SHMT允許在OS下 運(yùn)行的進(jìn)程同時執(zhí)行針對相同存儲器位置的字節(jié)級別的細(xì)粒度的加載(load)和/或存儲 (store)訪問。也就是說,傳統(tǒng)的SHMT局限于在單個OS的環(huán)境內(nèi)操作。已知被構(gòu)造為使 對象進(jìn)入一個處理器的本地存儲器空間中的傳統(tǒng)的共享/集群文件系統(tǒng),其中該處理器能 夠?qū)υ搶ο筮M(jìn)行更新。當(dāng)該處理器完成更新該對象時,整個對象隨后被移動到共享處理器 的本地存儲器。
[0005] 在第一傳統(tǒng)系統(tǒng)中,數(shù)據(jù)總是被返回到它在非易失性文件系統(tǒng)存儲器(例如,盤) 中的原始位置。在第二傳統(tǒng)系統(tǒng)中,數(shù)據(jù)可被直接從第一用戶的本地存儲器復(fù)制到第二用 戶的本地存儲器。在第二傳統(tǒng)系統(tǒng)中,訪問虛擬對象包括:把對象固定(pin)在存儲器中, 在發(fā)送者和接收者上都啟動輸入/輸出(I/O)操作(通常包括直接存儲器存?。―MA)),并 且在共享處理器能夠啟動對對象的更新之前處理"操作完成"中斷。
[0006] 第三傳統(tǒng)系統(tǒng)實(shí)質(zhì)上是虛擬化對稱多處理器(SMP)機(jī)器的集群版本。在第三傳統(tǒng) 系統(tǒng)中,每個機(jī)器能夠在物理上對整個系統(tǒng)的存儲器進(jìn)行尋址。在這種情況下,在系統(tǒng)上運(yùn) 行的OS之間劃分整個系統(tǒng)存儲器,并且通常實(shí)現(xiàn)防止一個OS訪問分派給另一OS的存儲器 的機(jī)制。盡管能夠繞開所述機(jī)制,但與虛擬地址相對,在傳統(tǒng)上,該繞開提供操作系統(tǒng)"A" 對分派給操作系統(tǒng)"B"的物理地址的訪問。通常,在虛擬存儲器OS中執(zhí)行的應(yīng)用不使用物 理地址。也就是說,應(yīng)用訪問虛擬對象內(nèi)的偏移,該偏移是由虛擬地址(VA)代表的。通常, 僅本地OS理解由應(yīng)用產(chǎn)生的VA和底層的機(jī)器物理地址之間的不斷改變的關(guān)系。這種關(guān)系 的至少一個子集的當(dāng)前快照通常由本地OS在本地機(jī)器的地址轉(zhuǎn)換表中捕捉。
【發(fā)明內(nèi)容】
[0007] -種用于管理共享存儲器的技術(shù),包括:鏈接由第一共享應(yīng)用和第二共享應(yīng)用使 用的地址轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)(例如,表)。第一共享應(yīng)用由第一操作系統(tǒng)(OS)管理,并且第二共 享應(yīng)用由容納(host)關(guān)聯(lián)的虛擬對象的第二OS管理?;谠撴溄?,第一共享應(yīng)用和第二 共享應(yīng)用的虛擬地址被綁定到第二OS分派給關(guān)聯(lián)的虛擬對象的物理地址的可變集合,從 而由共享應(yīng)用所共享的關(guān)聯(lián)的虛擬對象可由第二OS在沒有第一OS的許可的情況下調(diào)頁。
[0008] 以上
【發(fā)明內(nèi)容】
包含細(xì)節(jié)的簡化、歸納和省略,并且不應(yīng)視為要求保護(hù)的主題的全 面描述,而是旨在提供與之關(guān)聯(lián)的一些功能的簡要概述。通過檢查下面的附圖和詳細(xì)的書 面描述,對于本領(lǐng)域技術(shù)人員而言,要求保護(hù)的主題的其它系統(tǒng)、方法、功能、特征和優(yōu)點(diǎn)將 會是清楚的或者將會變得清楚。
[0009] 在下面的詳細(xì)的書面描述中,本發(fā)明的以上以及另外的目的、特征和優(yōu)點(diǎn)將會變 得清楚。
【附圖說明】
[0010] 將結(jié)合附圖閱讀說明性實(shí)施例的描述,其中:
[0011] 圖1是根據(jù)本公開的包括被構(gòu)造為實(shí)現(xiàn)交叉分區(qū)共享存儲器掛接(XSHMAT)的數(shù) 據(jù)處理系統(tǒng)的示例性數(shù)據(jù)處理系統(tǒng)環(huán)境的相關(guān)部分的示圖;
[0012] 圖2是使用虛擬通信裝置在兩個操作系統(tǒng)鏡像之間執(zhí)行傳統(tǒng)UNIX通信的傳統(tǒng)數(shù) 據(jù)處理系統(tǒng)的相關(guān)部分的示圖;
[0013] 圖3是根據(jù)本公開的實(shí)施例被構(gòu)造為執(zhí)行XSHMAT的數(shù)據(jù)處理系統(tǒng)的相關(guān)部分的 示圖;
[0014] 圖4是根據(jù)本公開的另一實(shí)施例被構(gòu)造為執(zhí)行XSHMAT的數(shù)據(jù)處理系統(tǒng)的相關(guān)部 分的示圖,其中最右邊的操作系統(tǒng)(OS)鏡像保持在不同OS鏡像中執(zhí)行的應(yīng)用之間共享的 虛擬對象;
[0015] 圖5是根據(jù)本公開的另一實(shí)施例被構(gòu)造為執(zhí)行XSHMAT的數(shù)據(jù)處理系統(tǒng)的相關(guān)部 分的示圖,其中最左邊的OS鏡像保持在不同OS鏡像中執(zhí)行的應(yīng)用之間共享的虛擬對象;
[0016] 圖6是根據(jù)本公開的另一實(shí)施例被構(gòu)造為執(zhí)行XSHMAT的數(shù)據(jù)處理環(huán)境的相關(guān)部 分的示圖,其中最右邊的OS鏡像保持在不同數(shù)據(jù)處理系統(tǒng)上的不同OS鏡像中執(zhí)行的應(yīng)用 之間共享的虛擬對象;
[0017] 圖7是根據(jù)本公開的另一實(shí)施例被構(gòu)造為執(zhí)行XSHMAT的數(shù)據(jù)處理環(huán)境的相關(guān)部 分的示圖,其中最左邊的OS鏡像保持在不同數(shù)據(jù)處理系統(tǒng)上的不同OS鏡像中執(zhí)行的應(yīng)用 之間共享的虛擬對象;以及
[0018] 圖8是根據(jù)本公開的一個實(shí)施例的用于共享存儲器的示例性處理的流程圖。
【具體實(shí)施方式】
[0019] 說明性實(shí)施例提供一種用于執(zhí)行交叉分區(qū)共享存儲器掛接(XSHMT)的方法、數(shù) 據(jù)處理系統(tǒng)和計算機(jī)程序產(chǎn)品(實(shí)施在計算機(jī)可讀存儲裝置上)。
[0020] 在本發(fā)明的示例性實(shí)施例的下面的詳細(xì)描述中,足夠詳細(xì)地描述可實(shí)施本發(fā)明的 具體示例性實(shí)施例以使本領(lǐng)域技術(shù)人員能夠?qū)嵤┍景l(fā)明,并且應(yīng)該理解,可使用其它實(shí)施 例,并且在不脫離本發(fā)明的精神或范圍的情況下可做出邏輯、架構(gòu)、編程、機(jī)械、電氣和其它 變化。下面的詳細(xì)描述因此不應(yīng)在限制性意義上理解,并且本發(fā)明的范圍由所附權(quán)利要求 及其等同物定義。
[0021] 應(yīng)該理解,特定部件、裝置和/或參數(shù)名稱的使用僅是示例,而非意圖暗示對本發(fā) 明的任何限制。本發(fā)明可因此利用用于非限制性地在這里描述部件/裝置/參數(shù)的不同命 名法/術(shù)語實(shí)現(xiàn)??紤]到使用在這里使用的每個術(shù)語的上下文,該術(shù)語應(yīng)該被給予它的最 廣泛的解釋。
[0022] 根據(jù)本公開,公開一種交叉分區(qū)共享存儲器掛接(XSHMT)命令/函數(shù),其擴(kuò)展傳 統(tǒng)UNIXSHMAT命令的語義,以在可包括許多互連的數(shù)據(jù)處理系統(tǒng)的數(shù)據(jù)處理環(huán)境的所有操 作系統(tǒng)(OS)鏡像的所有進(jìn)程之間起作用。通常,傳統(tǒng)的SHMAT命令局限于單個OS鏡像的 進(jìn)程之間共享存儲器。在互連的數(shù)據(jù)處理系統(tǒng)的所有OS鏡像的所有進(jìn)程之間共享存儲器 的傳統(tǒng)方案要求共享的系統(tǒng)存儲器被固定(即,共享的系統(tǒng)存儲器不被調(diào)頁(page))。共享 存儲器的傳統(tǒng)方案的固定存儲器要求提出了可伸縮性問題,因?yàn)楣蚕磉M(jìn)程的數(shù)量受到共享 存儲器所需的固定物理存儲器的限制。盡管在單個UNIXOS鏡像中執(zhí)行的進(jìn)程之間的共享 存儲器可利用SHMT調(diào)頁,但在不同OS鏡像(分區(qū))中執(zhí)行的進(jìn)程之間的共享存儲器不可 利用SHMAT調(diào)頁。
[0023] 根據(jù)本公開的一方面,代表共享存儲器的OS鏡像的虛擬存儲器轉(zhuǎn)換的各部分被 鏈接,從而存儲器訪問可能出錯并且存儲器訪問錯誤能夠被引導(dǎo)至創(chuàng)建共享存儲器段(并 且負(fù)責(zé)解決轉(zhuǎn)換/頁錯誤)的OS鏡像。傳統(tǒng)的SHMT把共享公共虛擬存儲器的兩個進(jìn)程 的虛擬地址(VA)轉(zhuǎn)換捆綁在一起,從而當(dāng)這兩個進(jìn)程訪問公共虛擬存儲器時,使用公共OS 的地址轉(zhuǎn)換表的公共部分進(jìn)行訪問。根據(jù)本公開,多個不同OS的地址轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)(例如, 表)在虛擬機(jī)中被鏈接。多個不同OS的地址轉(zhuǎn)換表可按照許多方式在虛擬機(jī)中被鏈接。作 為一個例子,當(dāng)兩個或更多的共享OS在單個對稱多處理器系統(tǒng)中執(zhí)行時,不同OS的管理程 序頁表樹(HPTT)可經(jīng)由交叉分區(qū)描述符(CPD)被鏈接。在一個或多個實(shí)施例中,當(dāng)共享OS 在不同系統(tǒng)中運(yùn)行時,不同OS的HPTT可使用(PD用請求者代理和接收者代理(例如,二者 都以硬件實(shí)現(xiàn))被鏈接。
[0024] 根據(jù)本公開,公開了在數(shù)據(jù)處理系統(tǒng)(例如,POWER?系統(tǒng))中實(shí)現(xiàn)分布式共 享存儲器的技術(shù),這些技術(shù)通常提供用于使不同OS使用像UNIXSHMAT-樣的接口共享存 儲器的更高效的方式。根據(jù)一個實(shí)施例,公開了一種修改的SHMT接口,其使用交叉分區(qū)描 述符(CPD)把虛擬地址(VA)從非主機(jī)OS(即,未容納要共享的虛擬對象的OS)映射到由 容納要共享的虛擬對象的OS保持的HPTT(和HPTT內(nèi)的共享存儲器偏移)。(PD的使用允 許OS使用共