跨進程通信隨想0623

在操作系統(tǒng)還沒有虛擬內(nèi)存空間的年代,每個進程都是訪問物理內(nèi)存,進程間通信最為簡單,約定好內(nèi)存地址就行了,比如說進程A,從0x23開始,連續(xù)放100個字節(jié)的數(shù)據(jù),進程B從物理內(nèi)存中將這份數(shù)據(jù)拷貝走即可。

不過這種操作系統(tǒng)現(xiàn)在我們用不著了,現(xiàn)在每個進程的內(nèi)存空間都是虛擬的,互不相干的。接下來最好理解的就是通過硬盤文件來進行通信。進程A在C盤根目錄產(chǎn)生一個a.txt文件,進程B將文件打開,將內(nèi)容讀取出來即可。

其實,也不是非要一個硬盤中文件,也可以是一個操作系統(tǒng)的文件句柄,傳遞的內(nèi)容不必真的放在硬盤中,比如說windows的內(nèi)存共享機制,unix的通道機制,不過這些機制現(xiàn)在的普通碼農(nóng)可能早就不關心了。

采用文件來傳遞信息,在很多嚴肅的系統(tǒng)間,還是唯一能被雙方接收的方案。A公司和B公司合作,A公司為B公司提供重要數(shù)據(jù)。最靠譜的做法就是A公司啟用一個FTP服務器,將數(shù)據(jù)生成文件,將FTP訪問權限開發(fā)給B公司。B公司定時將文件取走。別看這樣老土,但是仔細想想,這是最容易責任倒查的方式,某種程度上,白紙黑字無可抵賴,誰對誰錯一目了然。

接下來要講的就是通過TCP來跨進程通信,不管什么高大上的Web Service,本質(zhì)上就是通過TCP來通信。兩個進程間建立網(wǎng)絡連接就可以互相發(fā)信息,至于信息格式,如何解析如何組包,這都是細節(jié)層面的東西,本文不想去細說。

到了現(xiàn)在,各種成熟的跨進程通信的方案,基本上都是走網(wǎng)絡連接了。各種方案基本功能都沒有問題,難就難在一些高級特性能否支持,比如說能不能將通信內(nèi)容持久化(保留一段時間,方便定位故障和責任倒查),對通信內(nèi)容進行可以方便的查詢和過濾,通信的雙方支持透明的集群和冗余等等。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容