您好,登錄后才能下訂單哦!
本篇內容介紹了“linux通用操作系統的進程間怎么通訊”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
每個任務在運行時侯,都是占據處理器里面最合理的可占據資源的,并且每個任務運行時候,都是獨立的內存分配,獨立的處理器數據運算。那么假設我同時有兩個任務運行在系統里面,任務1和任務2,假設任務1是一個外部硬件的數據獲取任務,比如是一個掃描按鍵按下的任務,每隔一定的系統“心跳”運行一次;任務2是一個對任務1中按鍵值進行處理的一個任務。這里就有一個疑問了,我們前面說過,任務1處于非運行態時,它的內存和處理器資源,是有可能被回收的,而其產生的按鍵掃描數據應該保存在哪里,或者換句話說,應該如何讓任務2知道有哪些按鍵被按下了?說到這里,我們基本可以肯定了一點,一定存在一種或者多種解決方案,可以讓毫不相干的兩個任務進行數據的交互。我們把這些進程之間進行數據交換的機制,稱為“進程間通訊”,英文縮寫IPC(Inter-Process Communication)。
我們以標準的Linux操作系統為例,進程間的通訊主要有以下幾種方式:
管道( pipe );
有名管道 (named pipe);
信號量( semophore );
消息隊列( message queue );
信號 ( sinal );
共享內存( shared memory );
套接字( socket );
# 管道( pipe ):管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關系的進程間使用。進程的親緣關系通常是指父子進程關系。
# 有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無親緣關系進程間的通信。
# 信號量( semophore ) : 信號量是一個計數器,可以用來控制多個進程對共享資源的訪問。它常作為一種鎖機制,防止某進程正在訪問共享資源時,其他進程也訪問該資源。因此,主要作為進程間以及同一進程內不同線程之間的同步手段。
# 消息隊列( message queue ) : 消息隊列是由消息的鏈表,存放在內核中并由消息隊列標識符標識。消息隊列克服了信號傳遞信息少、管道只能承載無格式字節流以及緩沖區大小受限等缺點。
# 信號 ( sinal ) : 信號是一種比較復雜的通信方式,用于通知接收進程某個事件已經發生。
# 共享內存( shared memory ) :共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問。共享內存是最快的 IPC 方式,它是針對其他進程間通信方式運行效率低而專門設計的。它往往與其他通信機制,如信號兩,配合使用,來實現進程間的同步和通信。
# 套接字( socket ) : 套解口也是一種進程間通信機制,與其他通信機制不同的是,它可用于不同及其間的進程通信。
“linux通用操作系統的進程間怎么通訊”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。