www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]進(jìn)程間通信就是在不同進(jìn)程之間傳播或交換信息,那么不同進(jìn)程之間存在著什么雙方都可以訪問(wèn)的介質(zhì)呢?進(jìn)程的用戶空間是互相獨(dú)立的,一般而言是不能互相訪問(wèn)的,唯一的例外是共享內(nèi)存區(qū)。

進(jìn)程間通信就是在不同進(jìn)程之間傳播或交換信息,那么不同進(jìn)程之間存在著什么雙方都可以訪問(wèn)的介質(zhì)呢?進(jìn)程的用戶空間是互相獨(dú)立的,一般而言是不能互相訪問(wèn)的,唯一的例外是共享內(nèi)存區(qū)。另外,系統(tǒng)空間是“公共場(chǎng)所”,各進(jìn)程均可以訪問(wèn),所以內(nèi)核也可以提供這樣的條件。此外,還有雙方都可以訪問(wèn)的外設(shè)。在這個(gè)意義上,兩個(gè)進(jìn)程當(dāng)然也可以通過(guò)磁盤(pán)上的普通文件交換信息,或者通過(guò)“注冊(cè)表”或其它數(shù)據(jù)庫(kù)中的某些表項(xiàng)和記錄交換信息。廣義上這也是進(jìn)程間通信的手段,但是一般都不把這算作“進(jìn)程間通信”。

進(jìn)程間通信(IPC,Interprocess communication)是一組編程接口,讓程序員能夠協(xié)調(diào)不同的進(jìn)程,使之能在一個(gè)操作系統(tǒng)里同時(shí)運(yùn)行,并相互傳遞、交換信息。這使得一個(gè)程序能夠在同一時(shí)間里處理許多用戶的要求。因?yàn)榧词怪挥幸粋€(gè)用戶發(fā)出要求,也可能導(dǎo)致一個(gè)操作系統(tǒng)中多個(gè)進(jìn)程的運(yùn)行,進(jìn)程之間必須互相通話。IPC接口就提供了這種可能性。每個(gè)IPC方法均有它自己的優(yōu)點(diǎn)和局限性,一般,對(duì)于單個(gè)程序而言使用所有的IPC方法是不常見(jiàn)的。IPC方法包括管道(PIPE)、消息排隊(duì)、旗語(yǔ)、共用內(nèi)存以及套接字(Socket)。

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

1、管道:

1)管道傳輸數(shù)據(jù)是單向的,如果想相互通信,需要建立兩個(gè)管道。

2)管道這種通信方式效率低, 不適合進(jìn)程間頻繁地交換數(shù)據(jù)。

3)優(yōu)點(diǎn)是簡(jiǎn)單,很容易得知管道里的數(shù)據(jù)已經(jīng)被另一個(gè)進(jìn)程讀取了。

2、消息隊(duì)列:

1)消息隊(duì)列是保存在內(nèi)核中的消息鏈表,AB進(jìn)程互相發(fā)送消息,只要把數(shù)據(jù)放在消息隊(duì)列即可,之后進(jìn)程遍可以正常返回,另一個(gè)進(jìn)程會(huì)從消息隊(duì)列中讀取數(shù)據(jù)。

2)缺點(diǎn):消息隊(duì)列通信過(guò)程中,存在用戶態(tài)與內(nèi)核態(tài)之間的數(shù)據(jù)拷貝開(kāi)銷(xiāo)。

3、共享內(nèi)存:

1)操作系統(tǒng)對(duì)于內(nèi)存管理,采用的是虛擬內(nèi)存技術(shù),也就是每個(gè)進(jìn)程都有自己獨(dú)立的虛擬內(nèi)存空間,不同進(jìn)程的虛擬內(nèi)存映射到不同的物理內(nèi)存中。所以,即使進(jìn)程A和 進(jìn)程B的虛擬地址是一樣的,其實(shí)訪問(wèn)的是不同的物理內(nèi)存地址,對(duì)于數(shù)據(jù)的增刪查改互不影響。

2)共享內(nèi)存的機(jī)制,就是拿出一塊虛擬地址空間來(lái),映射到相同的物理內(nèi)存中。這樣這個(gè)進(jìn)程寫(xiě)入的東西,另外一個(gè)進(jìn)程馬上就能看到了,都不需要拷貝來(lái)拷貝去,傳來(lái)傳去, 大大提高了進(jìn)程間通信的速度。

3)缺點(diǎn):當(dāng)多個(gè)進(jìn)程向同一個(gè)共享內(nèi)存中寫(xiě)入數(shù)據(jù)時(shí)可能會(huì)產(chǎn)生覆蓋(如在工作中,當(dāng)多人同時(shí)修改一份共享文檔時(shí)別人可能會(huì)將你添加的內(nèi)容修改刪除或覆蓋),如果只讀則沒(méi)有任何問(wèn)題。

4、信號(hào)量:

1)為了防止多進(jìn)程競(jìng)爭(zhēng)共享資源,而造成的數(shù)據(jù)錯(cuò)亂,所以需要保護(hù)機(jī)制,使得共享的資源,在任意時(shí)刻只能被一個(gè)進(jìn)程訪問(wèn)。正好,信號(hào)量就實(shí)現(xiàn)了這一保護(hù)機(jī)制。

2)信號(hào)量其實(shí)是一個(gè)整型的計(jì)數(shù)器,主要用于實(shí)現(xiàn)進(jìn)程間的互斥與同步。

3)信號(hào)量表示資源的數(shù)量,控制信號(hào)量的方式有兩種原子操作:

一個(gè)是P操作,這個(gè)操作會(huì)把信號(hào)量減去1,相減后如果信號(hào)量<0,則表明資源已被占用,進(jìn)程需阻塞等待;相減后如果信號(hào)量>=0,則表明還有資源可使用,進(jìn)程可正常繼續(xù)執(zhí)行。

另一個(gè)是V操作,這個(gè)操作會(huì)把信號(hào)量加上1,相加后如果信號(hào)量<=0,則表明當(dāng)前有阻塞中的進(jìn)程,于是會(huì)將該進(jìn)程喚醒運(yùn)行;相加后如果信號(hào)量>0,則表明當(dāng)前沒(méi)有阻塞中的進(jìn)程。

舉例說(shuō)明:

A:如果要使得兩個(gè)進(jìn)程互斥訪問(wèn)共享內(nèi)存,我們可以初始化信號(hào)量為1。

具體的過(guò)程如下:

進(jìn)程A在訪問(wèn)共享內(nèi)存前,先執(zhí)行了P操作,由于信號(hào)量的初始值為1,故在進(jìn)程A執(zhí)行P操作后信號(hào)量變?yōu)?,表示共享資源可用,于是進(jìn)程A就可以訪問(wèn)共享內(nèi)存。

若此時(shí),進(jìn)程B也想訪問(wèn)共享內(nèi)存,執(zhí)行了P操作,結(jié)果信號(hào)量變?yōu)榱?1,這就意味著臨界資源已被占用ェ因此進(jìn)程B被阻塞。

直到進(jìn)程A訪問(wèn)完共享內(nèi)存,才會(huì)執(zhí)行V操作,使得信號(hào)量恢復(fù)為0,接著就會(huì)喚醒阻塞中的進(jìn)程B,使得進(jìn)程B可以訪問(wèn)共享內(nèi)存,最后完成共享內(nèi)存的訪問(wèn)后,執(zhí)行 V操作,使信號(hào)量恢復(fù)到初始值1。

可以發(fā)現(xiàn),信號(hào)初始化為1,就代表著是互斥信號(hào)量,它可以保證共享內(nèi)存在任何時(shí)刻只有一個(gè)進(jìn)程在訪問(wèn),這就很好的保護(hù)了共享內(nèi)存。

B:用信號(hào)量來(lái)實(shí)現(xiàn)多進(jìn)程同步的方式,我們可以初始化信號(hào)量為0。

具體過(guò)程如下:

如果進(jìn)程B比進(jìn)程A先執(zhí)行了,那么執(zhí)行到P操作時(shí),由于信號(hào)量初始值為0,故信號(hào)量會(huì)變?yōu)?1,表示進(jìn)程 A 還沒(méi)生產(chǎn)數(shù)據(jù),于是進(jìn)程B就阻塞等待。

當(dāng)進(jìn)程A生產(chǎn)完數(shù)據(jù)后,執(zhí)行了V操作,就會(huì)使得信號(hào)量變?yōu)?,于是就會(huì)喚醒阻塞在P操作的進(jìn)程B。

進(jìn)程B被喚醒后,意味著進(jìn)程A已經(jīng)生產(chǎn)了數(shù)據(jù),于是進(jìn)程B就可以正常讀取數(shù)據(jù)了。

可以發(fā)現(xiàn),信號(hào)初始化為0,就代表著是同步信號(hào)量,它可以保證進(jìn)程A應(yīng)在進(jìn)程B之前執(zhí)行。

5、信號(hào):

1)信號(hào)一般用于一些異常情況下的進(jìn)程間通信,是一種異步通信,它的數(shù)據(jù)結(jié)構(gòu)一般就是一個(gè)數(shù)字。

2)信號(hào)是進(jìn)程間通信機(jī)制中唯一的異步通信機(jī)制。

3)進(jìn)程需要為信號(hào)設(shè)置相應(yīng)的監(jiān)聽(tīng)處理,當(dāng)收到特定信號(hào)時(shí),執(zhí)行相應(yīng)的操作,類(lèi)似很多編程語(yǔ)言里的通知機(jī)制。

6、套接字:

1)前面提到的管道、消息隊(duì)列、共享內(nèi)存、信號(hào)量和信號(hào)都是在同一臺(tái)主機(jī)上進(jìn)行進(jìn)程間通信,那要想跨網(wǎng)絡(luò)與不同主機(jī)上的進(jìn)程之間通信,就需要Socket通信了。

2)Socket通信不僅可以跨網(wǎng)絡(luò)與不同主機(jī)的進(jìn)程間通信,還可以在同主機(jī)上進(jìn)程間通信。

系統(tǒng)IPC的三種方式類(lèi)同,都是使用了內(nèi)核里的標(biāo)識(shí)符來(lái)識(shí)別.FAQ1: 管道與文件描述符,文件指針的關(guān)系?答: 其實(shí)管道的使用方法與文件類(lèi)似,都能使用read,write,open等普通IO函數(shù). 管道描述符來(lái)類(lèi)似于文件描述符. 事實(shí)上, 管道使用的描述符,文件指針和文件描述符最終都會(huì)轉(zhuǎn)化成系統(tǒng)中SOCKET描述符. 都受到系統(tǒng)內(nèi)核中SOCKET描述符的限制. 本質(zhì)上LINUX內(nèi)核源碼中管道是通過(guò)空文件來(lái)實(shí)現(xiàn).FAQ2: 管道的使用方法?答: 主要有下面幾種方法: 1)pipe, 創(chuàng)建一個(gè)管道,返回2個(gè)管道描述符.通常用于父子進(jìn)程之間通訊. 2)popen, pclose: 這種方式只返回一個(gè)管道描述符,常用于通信另一方是stdin or stdout; 3)mkpipe:命名管道, 在許多進(jìn)程之間進(jìn)行交互.FAQ3: 管道與系統(tǒng)IPC之間的優(yōu)劣比較?答: 管道: 優(yōu)點(diǎn)是所有的UNIX實(shí)現(xiàn)都支持, 并且在最后一個(gè)訪問(wèn)管道的進(jìn)程終止后,管道就被完全刪除;缺陷是管道只允許單向傳輸或者用于父子進(jìn)程之間.系統(tǒng)IPC: 優(yōu)點(diǎn)是功能強(qiáng)大,能在毫不相關(guān)進(jìn)程之間進(jìn)行通訊; 缺陷是關(guān)鍵字KEY_T使用了內(nèi)核標(biāo)識(shí),占用了內(nèi)核資源,而且只能被顯式刪除,而且不能使用SOCKET的一些機(jī)制,例如select,epoll等.FAQ4: WINDOS進(jìn)程間通信與LINUX進(jìn)程間通信的關(guān)系?答: 事實(shí)上,WINDOS的進(jìn)程通信大部分移植于UNIX, WINDOS的剪貼板,文件映射等都可從UNIX進(jìn)程通信的共享存儲(chǔ)中找到影子.FAQ5: 進(jìn)程間通信與線程間通信之間的關(guān)系?答: 因?yàn)閃INDOWS運(yùn)行的實(shí)體是線程, 狹義上的進(jìn)程間通信其實(shí)是指分屬于不同進(jìn)程的線程之間的通訊.而單個(gè)進(jìn)程之間的線程同步問(wèn)題可歸并為一種特殊的進(jìn)程通信.它要用到內(nèi)核支持的系統(tǒng)調(diào)用來(lái)保持線程之間同步. 通常用到的一些線程同步方法包括:Event, Mutex,信號(hào)量Semaphore,臨界區(qū)資源等.

IPC目的 播報(bào)1)數(shù)據(jù)傳輸:一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程,發(fā)送的數(shù)據(jù)量在一個(gè)字節(jié)到幾兆字節(jié)之間。2)共享數(shù)據(jù):多個(gè)進(jìn)程想要操作共享數(shù)據(jù),一個(gè)進(jìn)程對(duì)共享數(shù)據(jù)的修改,別的進(jìn)程應(yīng)該立刻看到。3)通知事件:一個(gè)進(jìn)程需要向另一個(gè)或一組進(jìn)程發(fā)送消息,通知它(它們)發(fā)生了某種事件(如進(jìn)程終止時(shí)要通知父進(jìn)程)。4)資源共享:多個(gè)進(jìn)程之間共享同樣的資源。為了做到這一點(diǎn),需要內(nèi)核提供鎖和同步機(jī)制。5)進(jìn)程控制:有些進(jìn)程希望完全控制另一個(gè)進(jìn)程的執(zhí)行(如Debug進(jìn)程),此時(shí)控制進(jìn)程希望能夠攔截另一個(gè)進(jìn)程的所有陷入和異常,并能夠及時(shí)知道它的狀態(tài)改變。進(jìn)程通過(guò)與內(nèi)核及其它進(jìn)程之間的互相通信來(lái)協(xié)調(diào)它們的行為。Linux支持多種進(jìn)程間通信(IPC)機(jī)制,信號(hào)和管道是其中的兩種。除此之外,Linux還支持System V 的IPC機(jī)制(用首次出現(xiàn)的Unix版本命名)。

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

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉