3.6 程序間的溝通 (Process Communication)

又稱為 inter-process communication IPC
方法有兩種:

  1. Shared Memory
  2. Message Passing
    圖:

目錄

  • Shared Memory
  • Message Passing

Message Passing (訊息傳遞)

  • Def: 當 process 之間不易採用 Shared Memory, 則可採 Message Passing

  • 步驟:

    1. 先建立雙方連結
    2. 將 Message send 到收方
    3. 待收方處理後將結果接收 (receive)
  • 可分為:

    • 直接通訊:
      • 對稱: 收, 送雙方皆須指名
        ex: send (process, message), receive (process, message)
      • 非對稱: 送方須指名, 收方不需
        ex: send (process, message), receive (id, message), id 為接收後帶入送方的身份
    • 間接通訊:
      • 圖:
  • Ex: 用 Message Passing 解決 Producer (生產者 P1) / Consumer (消費者 P2) 問題 (直接通訊, 對稱式)

// 拿筷子
wait (right);
wait (left);
C.S. // eating
signal (right);
siganl (left);
R.S. // 放下筷子

Hold and wait
Circular waiting
當同時執行時, 會有 deadlock 現象, 故違反 progress

流程:… produce item; …-> 1. send(consumer, item); …-> 2. receive(producer, item); …-> 3. consume item;