tuplespace

一個元組空間是平行的聯想記憶模式的實現/分散式計算。它提供了一個元組,可以同時訪問庫。作為一個例子,考慮到有一組產生的數據和一組處理器使用的數據塊的處理器。生產商發布他們的數據在空間的元組,和消費者再檢索數據從一定的模式匹配的空間。這也被稱為黑板隱喻。元組空間可以看作是一種形式的分散式共享存儲器。元組空間的琳達語言在耶魯大學的戴維Gelernter和尼古拉斯Carriero開發的理論基礎。 元組空間的實現也已開發的Java(JavaSpaces),LISP,Lua,Prolog語言,Python,Ruby,Smalltalk,TCL,和。NET框架。

並行機一般可分為基於共享存儲器的多處理機和基於分布存儲器的多處理機, 在共享存儲多處理機上, 一般採用共享存儲的編程方式, 它是對傳統串列語言的擴充, 編程較為容易; 在分布存儲多處理機上一般採用message-passing方式編寫程式, 像上面介紹的幾個程式設計環境均屬於此類. Linda與前面介紹的編程環境不同, 雖然它也是運行在分布存儲多處理機上, 但它引入了虛擬共享存儲概念, 通過在各處理機上實現一個虛擬的共享存儲器, 將分布存儲多處理機模擬成為基於共享存儲器的多處理機, 從而達到支持共享存儲編程方式的目的。
Linda是美國Yale大學與科學計算協會共同研製的用於實現並行程式設計的, 與機器無關的程式環境. Linda通過增加一些函式對傳統的程式設計語言進行擴充(如C, Fortran等), 使其能實現並行程式的設計. 將Linda映射到各計算語言中, 就形成了可進行並行計算的程式語言C-Linda, Fortran-Linda. Linda可以運行在共享存儲多處理機, 分布存儲多處理機以及工作站機群系統上.
Linda的虛擬共享存儲器稱為元組空間( Tuple Space), 元組空間由一組有序的元組(tuple)組成, 元組的每個域都包含有實際的數據. 元組空間是相聯存儲器, 元組的標識與選擇是通過域值匹配, 而不是通常採用的地址選擇方法。
Linda提供了以下4種對元組的基本操作:
. out: 將數據放入元組空間, 整個操作是順序進行的;
. eval: 功能同out, 但它是並行執行的;
. in: 從元組空間中選擇匹配的數據, 並將數據從元組空間中刪除;
. rd: 功能同in, 但它不將數據從元組空間中刪除.
當兩個進程需要交換數據時, 它們並不是採用message-passing來直接通訊, 而是通過讀寫Tuple空間來完成(同共享存儲多處理機的並行程式設計). 例如: 如果A進程需要向B進程傳遞數據, 則需要完成以下的操作:
1) A向Tuple空間寫一個數據;
2) B在Tuple空間中讀取需要的數據.
Linda在編譯系統和運行系統上作了很多最佳化工作, 使用Linda編寫的應用程式在效率上能夠接近用傳統message-passing編寫的應用程式。
Linda系統從其特點與功能上看, 適合於處理一個結點上具有多個處理進程, 進程間具有不明確的數據通訊, 且進程間需要較強的同步機制以及全局通訊的實際套用問題。

相關詞條

相關搜尋

熱門詞條

聯絡我們