區分作業系統中的共享記憶體模型和訊息傳遞模型。
共享記憶體系統是程序間通訊的基本模型。在共享記憶體系統中,協作程序透過建立共享記憶體區域在地址空間區域進行通訊。
共享記憶體概念基於最快的程序間通訊。
如果程序想要啟動通訊並且有一些資料要共享,則在其地址空間中建立共享記憶體區域。
之後,另一個想要進行通訊並嘗試讀取共享資料的程序必須附加到啟動程序的共享地址空間。
訊息傳遞提供了一種機制,允許程序在不共享相同地址空間的情況下進行通訊和同步其操作。
例如——全球資訊網上的聊天程式。
訊息傳遞提供兩個操作,如下所示:
傳送訊息
接收訊息
程序傳送的訊息可以是固定大小的或可變大小的。
對於固定大小的訊息,系統級實現很簡單。但這使得程式設計任務更困難。
可變大小的訊息需要更復雜的系統級實現,但程式設計任務變得更簡單。
如果程序 P1 和 P2 想要通訊,他們需要相互發送和接收訊息,這意味著它們之間存在通訊鏈路。
差異
共享記憶體和訊息傳遞模型的主要區別:
| 共享記憶體 | 訊息傳遞 |
|---|---|
| 它是資料通訊的一個區域 | 訊息傳遞主要用於通訊。 |
| 它用於單處理器和多處理器系統之間的通訊,其中要通訊的程序位於同一臺機器上,並且它們共享公共地址空間。 | 它用於分散式環境,其中通訊程序位於透過網路連線的遠端機器上。 |
| 必須由應用程式程式設計師顯式寫入要讀取或寫入資料的共享記憶體程式碼。 | 這裡不需要程式碼,因為訊息傳遞機制提供了一種機制來進行通訊和同步通訊程序執行的操作。 |
| 由於通訊是透過共享記憶體完成的,因此它將提供最大的計算速度,因此係統呼叫用於建立共享記憶體。 | 訊息傳遞是一個耗時的過程,因為它透過核心(系統呼叫)實現。 |
| 在共享記憶體中,確保程序不會同時寫入同一位置。 | 訊息傳遞適用於共享少量資料,這樣就不需要避免衝突。 |
| 與訊息傳遞技術相比,它遵循更快的通訊策略。 | 在訊息傳遞中,與共享記憶體技術相比,通訊速度較慢。 |
以下是共享記憶體系統的結構:![]() | 以下是訊息傳遞系統的結構:![]() |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP
