分布式系統筆記第二章 程序通訊

2021-10-21 18:09:48 字數 2091 閱讀 2736

個人部落格:

分布式系統設計學習筆記(一)程序通訊

1.1 管道

單向通訊通道,使用write系統呼叫傳送資料,使用read系統呼叫接收資料。

fifo或命名管道:

1.2 訊息佇列

訊息佇列是乙個訊息的鏈結列表,訊息都儲存在核心中。同時該佇列具有fifo特性,但其中的訊息能夠以隨意的順序被檢索,或者通過訊息型別從佇列中檢索訊息。

1.3 共享記憶體
共享記憶體是對將要在多個程序之間對映和共享的記憶體區域所做的對映。不同程序可以同時訪問相同的記憶體區域,能夠共享位址空間的若干部分,這種通訊方式沒有中介,最快但並不容易實現。

對於不同節點上的程序通訊,主要採用internet socket技術實現,計算機網路通訊通常包括廣播通訊、多播通訊和點對點通訊。

2.1 網路通訊分層結構模型

2.2 程序通訊原語

通訊原語是分布式作業系統核心和服務層之間使用程序通訊協議實現的介面,用於分布式程序間的通訊和同步。

2.21 報文傳遞:
通過乙個程序向另乙個程序傳送乙個包含共享資料的報文完成程序通訊。適用於兩個不共享記憶體的程序。

// 傳送和接收原語

是否阻塞:

定時器:防止測試失效或中斷未產生

非阻塞原語:

2.22 遠端過程呼叫(rpc)

rpc不僅允許兩個程序間傳送報文,還能傳送像呼叫引數和返回結果這樣更為複雜的資料結構。同時呼叫者在傳送rpc後會被阻塞等待返回值,且同報文傳遞相比可能會阻塞更長的時間。

2.23 報文傳遞例項1——socket程序通訊

socket:每個socket只屬於乙個程序,兩個socket通過網路主機位址ip和程序埠號port進行兩個程序之間的通訊。其中ip和port在傳送者主機經由socket傳遞打包為報文,接收者主機由接收程序對應socket根據port接收報文,並傳遞給相應程序。且支援面向連線的tcp和面向非連線的udp傳輸協議。

注:此筆記根據書本,只介紹unix環境下的socket通訊機制,windows環境下的socket稱為winsock

組通訊是指乙個報文能夠被傳送到多個接受者的通訊。

組通訊的實現方式依賴於硬體:

不支援組播和廣播:向乙個組內所有接收者個傳送一次,效率最低;

設計組通訊:

對等組和分級組:

管理組成員:

傳送和接收原語:

原子性:組內所有程序要麼全部正確接收報文,要麼全部丟失;

組重疊:可能出現語義順序不一致;

設定乙個組管理員,高效直接,但存在單點失效問題;

- 分布式管理:每乙個程序的加入離開都需要傳送報文給組內所有程序;

- 三個問題:

- 如果組中成員發現某個組員程序對所有事情都沒有響應則刪除該程序;

- 加入和離開乙個組必須和傳送報文同步,進入即時同步接收報文;

- 多個程序失效時,需要有乙個程序負責重建組,於是需要重建協議;

傳送和接收原語:

原子性:組內所有程序要麼全部正確接收報文,要麼全部丟失;

組重疊:可能出現語義順序不一致;

第二章 程序通訊

1 低階通訊 程序之間的互斥和同步 訊號量機制是有效的同步工具,但作為通訊工具缺點如下 1 效率低 通訊量少 2 通訊對使用者不透明 程式設計師實現,作業系統只提供共享儲存器供 操作 2 高階程序通訊 使用者直接利用作業系統提供的一組通訊命令,高效地傳送大量資料的通訊方式。作業系統隱藏了程序通訊的細...

第二章 程序管理(4) 程序通訊

2.5 管程機制 一種新的程序同步工具 利用共享資料結構抽象地表示系統中的共享資源 把共享的資源抽象的用共享資料結構來表示 而把對該共享資料結構實施的操作定義為一組過程,如資源的請求和釋放過程request 和release。程序對共享資源的申請 釋放和其它操作,都是通過這組過程對共享資料結構的操作...

第二章 程序管理

報考的是三系老師 不是搞硬體的 但由於自己考研時選的科目有作業系統,所以 大致看一下了解即可 1 程序通訊 第一 共享儲存 第二 訊息傳遞 分為直接通訊方式 和 信箱通訊方式 第三 管道通訊 1 排程的層次 第一 作業排程 高階排程 按一定原則從外村上處於後備狀態的作業中挑選乙個 或多個 作業,給它...