求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

進程間通信檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
  進程間通信

進程間通信就是在不同進程之間傳播或交換信息,那麼不同進程之間存在着什麼雙方都可以訪問的介質呢?進程的用戶空間是互相獨立的,一般而言是不能互相訪問的,唯一的例外是共享內存區。另外,系統空間是「公共場所」,各進程均可以訪問,所以內核也可以提供這樣的條件。此外,還有雙方都可以訪問的外設。在這個意義上,兩個進程當然也可以通過磁盤上的普通文件交換信息,或者通過「註冊表」或其它數據庫中的某些表項和記錄交換信息。廣義上這也是進程間通信的手段,但是一般都不把這算作「進程間通信」。

簡介

進程間通信(IPC,Interprocess communication)是一組編程接口,讓程序員能夠協調不同的進程,使之能在一個操作系統里同時運行,並相互傳遞、交換信息。這使得一個程序能夠在同一時間裡處理許多用戶的要求。因為即使只有一個用戶發出要求,也可能導致一個操作系統中多個進程的運行,進程之間必須互相通話。IPC接口就提供了這種可能性。每個IPC方法均有它自己的優點和局限性,一般,對於單個程序而言使用所有的IPC方法是不常見的。號(Signals )是Unix系統中使用的最古老的進程間通信的方法之一。操作系統通過信號來通知進程系統中發生了某種預先規定好的事件(一組事件中的一個),它也是用戶進程之間通信和同步的一種原始機制。一個鍵盤中斷或者一個錯誤條件(比如進程試圖訪問它的虛擬內存中不存在的位置等)都有可能產生一個信號。Shell也使用信號向它的子進程發送作業控制信號。

評價

信號是在Unix System V中首先引入的,它實現了15種信號,但很不可靠。BSD4.2解決了其中的許多問題,而在BSD4.3中進一步加強和改善了信號機制。但兩者的接口不完全兼容。在Posix 1003.1標準中做了一些強行規定,它定義了一個標準的信號接口,但沒有規定接口的實現。目前幾乎所有的Unix變種都提供了和Posix標準兼容的信號實現機制。一、 在一個信號的生命周期中有兩個階段:生成和傳送。當一個事件發生時,需要通知一個進程,這時生成一個信號。當進程識別出信號的到來,就採取適當的動作來傳送或處理信號。在信號到來和進程對信號進行處理之間,信號在進程上掛起(pending)。。[1]

參考文獻