iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 5
0
自我挑戰組

OS作業系統學習系列 第 5

第五天 程序(process)概念--下

第五天 程序(process)概念--下

今天來說client-server system的溝通,client-server能透過socket、remote procedure calls/remote method invocation(Java)跟pipe來做溝通。

一、 Socket

一個能開通連結(溝通)的鎖頭就是socket,所以在溝通時一定會有兩個socket,一個屬於client端一個屬於server端。而socket是由IP位置跟一個port組成的。以生活例子來說,socket是一個信封,裡面有地址跟服務台,讓你能找到正確的地方。
在Java內有三種socket:connection-oriented(TCP)、connectionless(UDP)跟MulticastSocket class(多個接收者)。

二、 Remote Procedure Calls(RPC)

他比socket更高一階,他是由client端直接呼叫server端下的程式。如果同時有許多的socket要進行傳,他們之間或許有共享資料,這樣就會有點複雜,不容易寫share data的程式,這時就會運用到Remote Procedure Call。Client端有個叫stub的中介程式,會將所有的參數包裝起來,傳給server端的stub,server處理完後會將結果傳回。兩邊資料在交換時,會用External Data Representation(XDL)來規定格式,至於格式內容我們就不討論了。

以下的圖是RPC如何運作
https://ithelp.ithome.com.tw/upload/images/20181019/20112132GsapFbaiRX.png

三、 Pipe

簡單來說,pipe是前一個process的輸出,後一個process的輸入,兩個process直接溝通。pipe可以是雙向(half or full duplex)也可以是單向的。而pipe可以分為兩種:ordinary pipes跟named pipes。

ordinary pipes 是只能給父子process使用,由父process創造的暫時性pipe,用完之後就會消失,基本上是屬於單向的pipe。
named pipes就比ordinary pipes強很多,他雙向都可以通,也沒有限制說一定要有關係的process才能使用,所以很多的process都能透過named pipes進行溝通。


上一篇
第四天 程序(process)概念--中
下一篇
第六天 Thread(執行緒)--上
系列文
OS作業系統學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言