溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

linux通用操作系統(tǒng)的進(jìn)程間怎么通訊

發(fā)布時(shí)間:2022-03-22 16:01:38 來(lái)源:億速云 閱讀:125 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容介紹了“l(fā)inux通用操作系統(tǒng)的進(jìn)程間怎么通訊”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

        每個(gè)任務(wù)在運(yùn)行時(shí)侯,都是占據(jù)處理器里面最合理的可占據(jù)資源的,并且每個(gè)任務(wù)運(yùn)行時(shí)候,都是獨(dú)立的內(nèi)存分配,獨(dú)立的處理器數(shù)據(jù)運(yùn)算。那么假設(shè)我同時(shí)有兩個(gè)任務(wù)運(yùn)行在系統(tǒng)里面,任務(wù)1和任務(wù)2,假設(shè)任務(wù)1是一個(gè)外部硬件的數(shù)據(jù)獲取任務(wù),比如是一個(gè)掃描按鍵按下的任務(wù),每隔一定的系統(tǒng)“心跳”運(yùn)行一次;任務(wù)2是一個(gè)對(duì)任務(wù)1中按鍵值進(jìn)行處理的一個(gè)任務(wù)。這里就有一個(gè)疑問(wèn)了,我們前面說(shuō)過(guò),任務(wù)1處于非運(yùn)行態(tài)時(shí),它的內(nèi)存和處理器資源,是有可能被回收的,而其產(chǎn)生的按鍵掃描數(shù)據(jù)應(yīng)該保存在哪里,或者換句話(huà)說(shuō),應(yīng)該如何讓任務(wù)2知道有哪些按鍵被按下了?說(shuō)到這里,我們基本可以肯定了一點(diǎn),一定存在一種或者多種解決方案,可以讓毫不相干的兩個(gè)任務(wù)進(jìn)行數(shù)據(jù)的交互。我們把這些進(jìn)程之間進(jìn)行數(shù)據(jù)交換的機(jī)制,稱(chēng)為“進(jìn)程間通訊”,英文縮寫(xiě)IPC(Inter-Process Communication)。

        我們以標(biāo)準(zhǔn)的Linux操作系統(tǒng)為例,進(jìn)程間的通訊主要有以下幾種方式:

        管道( pipe );

        有名管道 (named pipe);

        信號(hào)量( semophore );

        消息隊(duì)列( message queue );

        信號(hào) ( sinal );

        共享內(nèi)存( shared memory );

        套接字( socket );

        # 管道( pipe ):管道是一種半雙工的通信方式,數(shù)據(jù)只能單向流動(dòng),而且只能在具有親緣關(guān)系的進(jìn)程間使用。進(jìn)程的親緣關(guān)系通常是指父子進(jìn)程關(guān)系。

        # 有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無(wú)親緣關(guān)系進(jìn)程間的通信。

        # 信號(hào)量( semophore ) : 信號(hào)量是一個(gè)計(jì)數(shù)器,可以用來(lái)控制多個(gè)進(jìn)程對(duì)共享資源的訪(fǎng)問(wèn)。它常作為一種鎖機(jī)制,防止某進(jìn)程正在訪(fǎng)問(wèn)共享資源時(shí),其他進(jìn)程也訪(fǎng)問(wèn)該資源。因此,主要作為進(jìn)程間以及同一進(jìn)程內(nèi)不同線(xiàn)程之間的同步手段。

        # 消息隊(duì)列( message queue ) : 消息隊(duì)列是由消息的鏈表,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)。消息隊(duì)列克服了信號(hào)傳遞信息少、管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn)。

        # 信號(hào) ( sinal ) : 信號(hào)是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生。

        # 共享內(nèi)存( shared memory ) :共享內(nèi)存就是映射一段能被其他進(jìn)程所訪(fǎng)問(wèn)的內(nèi)存,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但多個(gè)進(jìn)程都可以訪(fǎng)問(wèn)。共享內(nèi)存是最快的 IPC 方式,它是針對(duì)其他進(jìn)程間通信方式運(yùn)行效率低而專(zhuān)門(mén)設(shè)計(jì)的。它往往與其他通信機(jī)制,如信號(hào)兩,配合使用,來(lái)實(shí)現(xiàn)進(jìn)程間的同步和通信。

        # 套接字( socket ) : 套解口也是一種進(jìn)程間通信機(jī)制,與其他通信機(jī)制不同的是,它可用于不同及其間的進(jìn)程通信。

“l(fā)inux通用操作系統(tǒng)的進(jìn)程間怎么通訊”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI