好,相信我們現在都對Process更為理解,但世界不會那麼美好,工程師不會只寫一支Process就滿足各種需求,往往一個系統是要許多Process來架構,所以這些Process就會需要互相溝通,來交換資料與狀態。
基本上Process在溝通的模式上有分成兩個類型:
建立在上述的兩種類型下,強大的前輩創造了好幾種方法,下面提出幾個比較常見的來介紹一下
Shared Memory解釋起來非常單純,就如同字面上直譯的意思,多個Process共用取用同一塊記憶體空間,藉此就能達到資訊互相傳遞的效果。但在使用上會有諸多的情況要去考慮,使用上要去考慮資料的同步,考慮不同的process會不會相互覆蓋到彼此的結果,或者拿到過時的資料的等。
這個方法最長在網路的通訊中使用,比如說Netflix或者Youtube,就是透過Socket持續的傳送影音資料到使用者的設備上。Socket會依靠ip和port number去辨認要傳送到哪一台設備的Process上面,並且Socket傳送的資料是沒有資料結構的,單純靠接收端自己去解析資料,再把資料轉化為需要的格式。
就像client與Server的概念(底層也是Socket),只是client是透過網路並找到相對的port去呼叫Server的Function,並且這個資料的傳遞是具有資料型別的。
總結起來,我覺得周教授有一句話講得很好,走平行運算會用到 Share memory,走網路方面會用到 Socket,走分散式運算會用到RPC,不知道為什麼我剛剛好三種類型的程式都寫過,所以覺得頗有道理的,各位如果有興趣的話可以自己試試看。