iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0
自我挑戰組

非本科系也能懂和該懂得作業系統系列 第 12

Day 12 - Process Communication

  • 分享至 

  • xImage
  •  

好,相信我們現在都對Process更為理解,但世界不會那麼美好,工程師不會只寫一支Process就滿足各種需求,往往一個系統是要許多Process來架構,所以這些Process就會需要互相溝通,來交換資料與狀態。

  • 舉個比較單純的例子,比如說線上遊戲的防外掛系統(process A),就要去接收遊戲(Process B)內的資訊,來判別這個玩家有沒有使用怪掛
  • 更為複雜的就像是現在在台灣很紅的外送餐系統,使用者有自己機器(手機)一支程式(APP)、店家也有自己的機器和程式、司機也有自己的機器和程式、公司也有自己的接單派單程式,這麼多支不同的Process跑在獨立不同的機器上,但是彼此的資料需要互相溝通和串流。

基本上Process在溝通的模式上有分成兩個類型:

  • Shared memory: 大家共用同一塊區域的資料,共同維護確保其他人從這裡拿到的資料是對的。
  • Message-Passing: 就像在傳訊息一樣,一邊傳送、另一邊接收

建立在上述的兩種類型下,強大的前輩創造了好幾種方法,下面提出幾個比較常見的來介紹一下

Shared Memory:

Shared Memory解釋起來非常單純,就如同字面上直譯的意思,多個Process共用取用同一塊記憶體空間,藉此就能達到資訊互相傳遞的效果。但在使用上會有諸多的情況要去考慮,使用上要去考慮資料的同步,考慮不同的process會不會相互覆蓋到彼此的結果,或者拿到過時的資料的等。

Socket:

這個方法最長在網路的通訊中使用,比如說Netflix或者Youtube,就是透過Socket持續的傳送影音資料到使用者的設備上。Socket會依靠ip和port number去辨認要傳送到哪一台設備的Process上面,並且Socket傳送的資料是沒有資料結構的,單純靠接收端自己去解析資料,再把資料轉化為需要的格式。

Remote Procedure Calls

就像client與Server的概念(底層也是Socket),只是client是透過網路並找到相對的port去呼叫Server的Function,並且這個資料的傳遞是具有資料型別的。

總結起來,我覺得周教授有一句話講得很好,走平行運算會用到 Share memory,走網路方面會用到 Socket,走分散式運算會用到RPC,不知道為什麼我剛剛好三種類型的程式都寫過,所以覺得頗有道理的,各位如果有興趣的話可以自己試試看。


上一篇
Day 11 - Process Control Block & Context switch
下一篇
Day 13 - Thread and Multiple-Threads
系列文
非本科系也能懂和該懂得作業系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言