日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 消費(fèi)電子 > 消費(fèi)電子
[導(dǎo)讀]所謂進(jìn)程間通信就是在不同進(jìn)程之間傳播或交換信息,它是一組編程接口,讓程序員能夠協(xié)調(diào)不同的進(jìn)程,使之能在一個(gè)操作系統(tǒng)里同時(shí)運(yùn)行,并相互傳遞、交換信息;還可以讓一個(gè)程序能夠在同一時(shí)間里處理許多用戶的需求。

所謂進(jìn)程間通信就是在不同進(jìn)程之間傳播或交換信息,它是一組編程接口,讓程序員能夠協(xié)調(diào)不同的進(jìn)程,使之能在一個(gè)操作系統(tǒng)里同時(shí)運(yùn)行,并相互傳遞、交換信息;還可以讓一個(gè)程序能夠在同一時(shí)間里處理許多用戶的需求。那么Linux進(jìn)程間的通信方式有幾種?如果你還不清楚,請(qǐng)看下文:

第一種:管道通信

兩個(gè)進(jìn)程利用管道進(jìn)行通信時(shí),發(fā)送信息的進(jìn)程稱為寫進(jìn)程;接收信息的進(jìn)程稱為讀進(jìn)程。管道通信方式的中間介質(zhì)就是文件,通常稱這種文件為管道文件,它就像管道一樣將一個(gè)寫進(jìn)程和一個(gè)讀進(jìn)程連接在一起,實(shí)現(xiàn)兩個(gè)進(jìn)程之間的通信。寫進(jìn)程通過(guò)寫入端往管道文件中寫入信息;讀進(jìn)程通過(guò)讀出端從管道文件中讀取信息。兩個(gè)進(jìn)程協(xié)調(diào)不斷地進(jìn)行寫和讀,便會(huì)構(gòu)成雙方通過(guò)管道傳遞信息的流水線。

第二種:消息緩沖通信

多個(gè)獨(dú)立的進(jìn)程之間可以通過(guò)消息緩沖機(jī)制來(lái)相互通信。這種通信的實(shí)現(xiàn)是以消息緩沖區(qū)為中間介質(zhì),通信雙方的發(fā)送和接收操作均以消息為單位。在存儲(chǔ)器中,消息緩沖區(qū)被組織成隊(duì)列,通常稱之為消息隊(duì)列。消息隊(duì)列一旦創(chuàng)建后即可由多進(jìn)程共享,發(fā)送消息的進(jìn)程可以在任意時(shí)刻發(fā)送任意個(gè)消息到指定的消息隊(duì)列上,并檢查是否有接收進(jìn)程在等待它所發(fā)送的消息。若有則喚醒它,而接收消息的進(jìn)程可以在需要消息的時(shí)候到指定的消息隊(duì)列上獲取消息,如果消息還沒(méi)有到來(lái),則轉(zhuǎn)入睡眠等待狀態(tài)。

第三種:共享內(nèi)存通信

針對(duì)消息緩沖需要占用CPU進(jìn)行消息復(fù)制的缺點(diǎn),OS提供了一種進(jìn)程間直接進(jìn)行數(shù)據(jù)交換的通信方式。共享內(nèi)存,顧名思義這種通信方式允許多個(gè)進(jìn)程在外部通信協(xié)議或同步,互斥機(jī)制的支持下使用同一個(gè)內(nèi)存段進(jìn)行通信,它是一種最有效的數(shù)據(jù)通信方式,其特點(diǎn)是沒(méi)有中間環(huán)節(jié),直接將共享的內(nèi)存頁(yè)面通過(guò)附接映射到相互通信的進(jìn)程各自的虛擬地址空間中,從而使多個(gè)進(jìn)程可以直接訪問(wèn)同一個(gè)物理內(nèi)存頁(yè)面。

進(jìn)程間通信的方式有很多,這里主要講到進(jìn)程間通信的六種方式,分別為:管道、FIFO、消息隊(duì)列、共享內(nèi)存、信號(hào)、信號(hào)量。

管道的特點(diǎn):

管道的原型:

代碼實(shí)現(xiàn):

FIFO,也叫做命名管道,它是一種文件類型。

FIFO的特點(diǎn):

FIFO的原型:

#include #include int mkfifo(const char *pathname, mode_t mode);

其中的 mode 參數(shù)與 open 函數(shù)中的 mode 相同。一旦創(chuàng)建了一個(gè) FIFO,就可以用一般的文件 I/O 函數(shù)操作它。

當(dāng) open 一個(gè) FIFO 時(shí),是否設(shè)置非阻塞標(biāo)志(O_NONBLOCK)的區(qū)別:

代碼實(shí)現(xiàn):

下列代碼有效解決了,當(dāng)管道存在時(shí),程序報(bào)錯(cuò)的問(wèn)題,減少了無(wú)關(guān)錯(cuò)誤信息的打印。

進(jìn)程間的通信方式:

1.管道(pipe)及有名管道(named pipe):

管道可用于具有親緣關(guān)系進(jìn)程間的通信,有名管道除了具有管道所具有的功能外,它還允許無(wú)親緣關(guān)系進(jìn)程間的通信。

2.信號(hào)(signal):

信號(hào)是在軟件層次上對(duì)中斷機(jī)制的一種模擬,它是比較復(fù)雜的通信方式,用于通知進(jìn)程有某事件發(fā)生,一個(gè)進(jìn)程收到一個(gè)信號(hào)與處理器收到一個(gè)中斷請(qǐng)求效果上可以說(shuō)是一致得。

3.消息隊(duì)列(message queue):

消息隊(duì)列是消息的鏈接表,它克服了上兩種通信方式中信號(hào)量有限的缺點(diǎn),具有寫權(quán)限得進(jìn)程可以按照一定得規(guī)則向消息隊(duì)列中添加新信息;對(duì)消息隊(duì)列有讀權(quán)限得進(jìn)程則可以從消息隊(duì)列中讀取信息。

消息緩沖通信技術(shù)是由Hansen首先提出的,其基本思想是:根據(jù)”生產(chǎn)者-消費(fèi)者”原理,利用內(nèi)存中公用消息緩沖區(qū)實(shí)現(xiàn)進(jìn)程之間的信息交換. 內(nèi)存中開(kāi)辟了若干消息緩沖區(qū),用以存放消息.每當(dāng)一個(gè)進(jìn)程向另一個(gè)進(jìn)程發(fā)送消息時(shí),便申請(qǐng)一個(gè)消息緩沖區(qū),并把已準(zhǔn)備好的消息送到緩沖區(qū),然后把該消息緩沖區(qū)插入到接收進(jìn)程的消息隊(duì)列中,最后通知接收進(jìn)程.接收進(jìn)程收到發(fā)送里程發(fā)來(lái)的通知后,從本進(jìn)程的消息隊(duì)列中摘下一消息緩沖區(qū),取出所需的信息,然后把消息緩沖區(qū)不定期給系統(tǒng).系統(tǒng)負(fù)責(zé)管理公用消息緩沖區(qū)以及消息的傳遞. 一個(gè)進(jìn)程可以給若干個(gè)進(jìn)程發(fā)送消息,反之,一個(gè)進(jìn)程可以接收不同進(jìn)程發(fā)來(lái)的消息.顯然,進(jìn)程中關(guān)于消息隊(duì)列的操作是臨界區(qū).當(dāng)發(fā)送進(jìn)程正往接收進(jìn)程的消息隊(duì)列中添加一條消息時(shí),接收進(jìn)程不能同時(shí)從該消息隊(duì)列中到出消息:反之也一樣. 消息緩沖區(qū)通信機(jī)制包含以下列內(nèi)容: (1) 消息緩沖區(qū),這是一個(gè)由以下幾項(xiàng)組成的數(shù)據(jù)結(jié)構(gòu): 1、 消息長(zhǎng)度 2、 消息正文 3、 發(fā)送者 4、 消息隊(duì)列指針 (2)消息隊(duì)列首指針m-q,一般保存在PCB中。 (1) 互斥信號(hào)量m-mutex,初值為1,用于互斥訪問(wèn)消息隊(duì)列,在PCB中設(shè)置。 (2) 同步信號(hào)量m-syn,初值為0,用于消息計(jì)數(shù),在PCB中設(shè)置。 (3) 發(fā)送消息原語(yǔ)send (4) 接收消息原語(yǔ)receive(a)

4.共享內(nèi)存(shared memory):

可以說(shuō)這是最有用的進(jìn)程間通信方式。它使得多個(gè)進(jìn)程可以訪問(wèn)同一塊內(nèi)存空間,不同進(jìn)程可以及時(shí)看到對(duì)方進(jìn)程中對(duì)共享內(nèi)存中數(shù)據(jù)得更新。這種方式需要依靠某種同步操作,如互斥鎖和信號(hào)量等。

這種通信模式需要解決兩個(gè)問(wèn)題:第一個(gè)問(wèn)題是怎樣提供共享內(nèi)存;第二個(gè)是公共內(nèi)存的互斥關(guān)系則是程序開(kāi)發(fā)人員的責(zé)任。

5.信號(hào)量(semaphore):

主要作為進(jìn)程之間及同一種進(jìn)程的不同線程之間得同步和互斥手段。

6.套接字(socket);

這是一種更為一般得進(jìn)程間通信機(jī)制,它可用于網(wǎng)絡(luò)中不同機(jī)器之間的進(jìn)程間通信,應(yīng)用非常廣泛。

http://blog.csdn.net/eroswang/archive/2007/09/04/1772350.aspx

linux下的進(jìn)程間通信-詳解

詳細(xì)的講述進(jìn)程間通信在這里絕對(duì)是不可能的事情,而且筆者很難有信心說(shuō)自己對(duì)這一部分內(nèi)容的認(rèn)識(shí)達(dá)到了什么樣的地步,所以在這一節(jié)的開(kāi)頭首先向大家推薦著 名作者Richard Stevens的著名作品:《Advanced Programming in the UNIX Environment》,它的中文譯本《UNIX環(huán)境高級(jí)編程》已有機(jī)械工業(yè)出版社出版,原文精彩,譯文同樣地道,如果你的確對(duì)在Linux下編程有濃 厚的興趣,那么趕緊將這本書(shū)擺到你的書(shū)桌上或計(jì)算機(jī)旁邊來(lái)。說(shuō)這么多實(shí)在是難抑心中的景仰之情,言歸正傳,在這一節(jié)里,我們將介紹進(jìn)程間通信最最初步和最 最簡(jiǎn)單的一些知識(shí)和概念。    首先,進(jìn)程間通信至少可以通過(guò)傳送打開(kāi)文件來(lái)實(shí)現(xiàn),不同的進(jìn)程通過(guò)一個(gè)或多個(gè)文件來(lái)傳遞信息,事實(shí)上,在很多應(yīng)用系統(tǒng)里,都使用了這種方法。但一般說(shuō)來(lái), 進(jìn)程間通信(IPC:InterProcess Communication)不包括這種似乎比較低級(jí)的通信方法。Unix系統(tǒng)中實(shí)現(xiàn)進(jìn)程間通信的方法很多,而且不幸的是,極少方法能在所有的Unix系 統(tǒng)中進(jìn)行移植(唯一一種是半雙工的管道,這也是最原始的一種通信方式)。而Linux作為一種新興的操作系統(tǒng),幾乎支持所有的Unix下常用的進(jìn)程間通信 方法:管道、消息隊(duì)列、共享內(nèi)存、信號(hào)量、套接口等等。下面我們將逐一介紹。

聲明:該篇文章為本站原創(chuàng),未經(jīng)授權(quán)不予轉(zhuǎn)載,侵權(quán)必究。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉