tuplespace

並行機一般可分為基於共享存儲器多處理機和基於分布存儲器的多處理機, 在共享存儲多處理機上, 一般採用共享存儲的編程方式, 它是對傳統串列語言的擴充, 編程較為容易; 在分布存儲多處理機上一般採用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系統從其特點與功能上看, 適合於處理一個結點上具有多個處理進程, 進程間具有不明確的數據通訊, 且進程間需要較強的同步機制以及全局通訊的實際套用問題。

相關詞條

熱門詞條

聯絡我們