iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 5
0
自我挑戰組

作業系統概論系列 第 5

DAY5 處理器概念(中)

進程間溝通(Interprocess Communication)

  • 行程在一個系統內,可能會互相合作或保持獨立。
  • 如果行程是合作關係的話,會影響其他行程或是被其他行程影響。
  • 如果是獨立關係,並不會影響其他行程或被其他行程影響。
  • 行程合作的優點:
  1. 資料共享。
  2. 計算速度加快。
  3. 模塊化且方便。
  • 合作性行程需要interprocess communication(IPC)
  • IPC有2種設計方法:
  1. 共享記憶體。
  2. 傳遞訊息。

Producer-Consumer Problem

  • 在合作行程中,生產者行程會產生資料,然後由消費者行程消耗執行。
  1. 無界緩衝區(unbounded-buffer):沒有限制空間尺寸的緩衝區。
  2. 有界緩衝區(bounded-buffer):會限制並固定緩衝區的尺寸。

進程間溝通-共享記憶體

  • 希望行程溝通之間,有共享的記憶體空間。
  • 行程溝通是透過使用者,並非是OS。
  • 主要議題是提供允許使者行程,可以在共享記憶體時有同步操作的機制。
  • 如何保持記憶體內資料的正確性與完整性,也是一個問題所在。

進程間溝通-訊息傳遞

  • 提供一個機制,能夠讓行程間溝通時可以同步操作。
  • 訊息系統:在行程與行程間溝通、傳遞訊息時,不借助共享變量。
  • IPC提供兩個操作方法:
  1. 傳送(send)。
  2. 接收(receive)。
  • 訊息的大小可以是固定的,也可以是可改變的。
  • 行程與行程溝通間,是需要:
  1. 建立溝通連接在行程間。
  2. 訊息改變是透過傳遞與接收。
  • 執行問題:
  1. 如何建立鏈結?
  2. 可以同時鏈結超過兩個行程嗎?
  3. 在一對行程間,可以鏈結多少條?
  4. 鏈結的容量有多大?
  5. 鏈結可以容納訊息變化的大小嗎?
  6. 鏈結方向是單向還是雙向?
  • 溝通鏈結時分成兩種方式:
  1. 典型的:共享記憶體、網路等。
  2. 邏輯的:直接或不直接、同步或不同步、自動或顯示緩衝。

直接式溝通

  • 每個行程必須要明確地命名。
  • 溝通鏈結的性能:
  1. 是自動建立。
  2. 一個鏈結剛好連接一對行程。
  3. 鏈結可能為單向連接或雙向連接。

非直接式溝通

  • 訊息是從郵箱(mailbox)裡直接接收:
  1. 每個郵箱都有個獨特的ID。
  2. 如果行程間要溝通,只能共享郵箱資料。
  • 溝通鏈結的性能:
  1. 如果要建立鏈結,只能是行程共享郵箱。
  2. 鏈結可能會連接多個行程。
  3. 一對行程間,可能會連接多條鏈結。
  4. 鏈結可能為單向或雙向。
  • 如何執行:
  1. 先新增一個郵箱。
  2. 透過郵箱傳遞或接收訊息。
  3. 摧毀郵箱。
  • 多個行程間,要怎麼確定是哪個行程接收到訊息?
  1. 規定在某一時間內,只有一個行程可以接收訊息。
  2. 由系統決定,是哪個行程接收,再回傳訊息告知是誰收到。

通訊同步(Synchronization)

  • 訊息傳遞可能有blocking或non-blocking兩種形式。
  • Blocking--同步的方式:
  1. Blocking send:訊息傳遞出去,行程被Block阻擋,直到對方訊息收到才可再傳送。
  2. Blocking receive:不做任何表示,直到訊息送來,再回傳收到的資訊。
  • Non-blocking--不同步的方式(AJAX):
  1. Non-blocking send:不管對方有無收到,就是一直送訊息過去。
  2. Non-blocking receive:接收端只接收有效訊息,或是沒有訊息。

上一篇
DAY4 處理器概念(上)
下一篇
DAY6 處理器概念(下)
系列文
作業系統概論30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言