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