操作系統中的IPC機制


按發送路徑來看,可分為直接通信和間接通信。

1. 直接通信

(1)進程必須正確的命名對方

  • send (P, message) – 發送信息到進程P
  • receive(Q, message) – 從進程 Q接受消息

(2)通信鏈路的屬性

  • 自動建立鏈路
  • 一條鏈路恰好對應一對通信進程
  • 每對進程之間只有一個鏈接存在
  • 鏈接可以是單向的,但通常為雙向的

 

2. 間接通信

(1)通過操作系統維護的消息隊列實現進程間的消息接收和發送

  • 每個消息隊列都有一個唯一的標識
  • 只有共享了相同消息隊列的進程,才能夠通信

(2)通信鏈路的屬性

  • 只有共享了相同消息隊列的進程,才建立連接
  • 連接可以是單向或雙向
  • 消息隊列可以與多個進程相關聯
  • 每對進程可以共享多個消息隊列

(3)通信流程

  • 創建一個新的消息隊列
  • 通過消息隊列發送和接收消息
  • 銷毀消息隊列

 

3. 進程通信可划分為阻塞(同步)或非阻塞(異步)
(1) 阻塞通信

  • 阻塞發送:發送者在發送消息后進入等待,直到接收者成功收到
  • 阻塞接收:接收者在請求接收消息后進入等待,直到成功收到一個消息

(2)非阻塞通信

  • 非阻塞發送:發送者在消息發送后,可立即進行其他操作
  • 非阻塞接收:沒有消息發送時,接收者在請求接收消息后,接收不到任何消息

 

4. 信號

進程間的軟件中斷通知和處理機制。

5. 管道(間接通信

進程間基於內存文件的通信機制。

 

6. 消息隊列(間接通信

是由操作系統維護的以字節序列為基本單位的間接通信機制。

 

7. 共享內存(直接通信

把同一段物理機制映射到多個進程的內存地址空間的通信機制。每個進程的內存地址空間需要明確設置共享內存段,同一個進程的線程共享地址空間。(速度快,但是沒有同步)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM