共享記憶體和動態資料交換

2021-07-04 23:39:57 字數 1393 閱讀 8440

仔細研究一下作業系統本身的機制,比如說記憶體管理、程序間通訊等,越發覺得這些機制很精妙,很精深,perfect!越是經典的東西越是值得深究。。。

為了讓具有依賴關係的執行緒或者程序協調工作,可以使用兩種技術,第一種是程序間或者執行緒間通訊(interprocess or interthread communication),在具有通訊依賴關係的兩個程序間傳遞資訊;第二種技術是同步。程序間通訊,一般情況下,單個程序擁有自己的位址空間,而執行緒沒有,執行緒共享程序的位址空間。當兩個程序要通訊時,一般使用某種兩個程序外部的、兩個程序都能訪問的資料結構來實現,使用這種資料結構或命令,兩個程序就可以進行通訊;而當兩個執行緒通訊時,一般使用同一程序的部分資料結構來實現,程序內的兩個執行緒可以訪問同乙個資料片段,可以相互從堆疊片段傳值。在大部分情況下,程序間通訊的代價高於執行緒間通訊的代價,因為在程序間通訊必須由作業系統建立外部資料結構。

對於程序間通訊(ipc),程序擁有單獨的位址空間,比如說,對於程序a和程序b,在程序a中宣告的資料對程序b不可用,程序b也看不到程序a中發生的資料。程序所占有的資料一般位於資料片斷、堆疊片斷或者程序的動態分配記憶體中,資料對其他程序來說是保護的。為了讓乙個程序訪問另外乙個程序的資料,必須最終使用作業系統呼叫。為了讓乙個程序知道另外乙個程序中文字片斷發生的事情,必須在程序間建立一種通訊方式。程序間通訊可以通過環境變數/檔案描述符,命令列引數、管道、共享記憶體和動態資料交換(dde)等。

動態資料交換(dynamic data exchange,dde)是程序間通訊最強大和最完善的形式之一,使用訊息傳遞、共享記憶體、事務協議、c/s模型、同步規則以及會話來讓資料和控制資訊在程序間傳遞。主要元件為dde伺服器、dde客戶、共享記憶體以及鏈結。

dde的基本模型是客戶端/伺服器模型,伺服器對來自客戶的資料或者動作作出響應,乙個伺服器可以與任意數量的客戶通訊,乙個客戶可以與任意數量的伺服器通訊。單個dde**既可以是客戶,也可以是伺服器,即程序可以從乙個正為另乙個程序執行服務的dde**請求服務。

dde互動的4種元件:dde伺服器(應用、主題、項)、dde客戶、dde會話鏈結(互相傳遞的一系列訊息,熱鏈結和冷鏈結、5種主要型別的事務——請求、建議、取消建議、執行、傳送)、共享記憶體和dde會話。

dde客戶和伺服器使用應用標識、主題、項以及共享記憶體的結合進行會話,一旦對主題-項對達到一致,就可以在客戶程序和伺服器程序間交換資料。

參考:msdn: about dynamic data exchange (dde)

《c++物件導向多執行緒程式設計》

wikipedia:dynamic data exchange

互動百科:動態資料交換

動態資料交換

百科:動態資料交換

資料交換 電路交換

為什麼要資料交換 那麼有幾個問題 1.n 2鏈路問題,有n個網路要相互連線 之後就想了乙個辦法,產生交換裝置進行連線 這樣子還有個問題,距離,連通性的問題 這樣就產生了交換網路 動態分配傳輸資源 實現資料從源主機穿越交換網路到達目的機 資料交換的型別 電路交換 報文交換 分組交換 最典型電路交換網路...

資料交換技術

廣域網研究的重點就是寬頻核心交換技術。從交換技術的發展歷史看,資料交換經歷了電路交換 報文交換 分組交換和綜合業務數字交換的發展過程。分組交換實質上是在 儲存 基礎上發展起來的。它兼有電路交換和報文交換的優點。常說的分組交換也就是儲存 方式中的報文分組交換方式。包括資料報方式和虛電路方式。資料報類似...

分割槽資料交換

資料交換表面看上去是兩個段裡面的資料進行交換,其實就是資料字典的交換,但是表結構必須一樣 下面乙個例子交換分割槽和索引 建立分割槽 create table part index example x number y number,data varchar2 20 partition by rang...