




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
進(jìn)程間通信機(jī)制的分析與比較
Ver20150302v0.1為什么進(jìn)程間需要通信?
1、數(shù)據(jù)傳輸一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程。2、資源共享多個(gè)進(jìn)程之間共享同樣的資源。3、通知事件一個(gè)進(jìn)程需要向另一個(gè)或一組進(jìn)程發(fā)送消息,通知它們發(fā)生了某種事件。4、進(jìn)程控制有些進(jìn)程希望完全控制另一個(gè)進(jìn)程的執(zhí)行(如Debug進(jìn)程),此時(shí)控制進(jìn)程希望能夠攔截另一個(gè)進(jìn)程的所有操作,并能夠及時(shí)知道它的狀態(tài)改變。分類進(jìn)程間通信方式包括:1、管道(pipe)和有名管道(FIFO)2、信號(hào)(signal)3、消息隊(duì)列4、共享內(nèi)存5、信號(hào)量6、套接字(socket)信號(hào)信號(hào)通信
信號(hào)(signal)機(jī)制是Unix系統(tǒng)中最為古老的進(jìn)程間通信機(jī)制,很多條件可以產(chǎn)生一個(gè)信號(hào):1、當(dāng)用戶按某些按鍵時(shí),產(chǎn)生信號(hào)。2、硬件異常產(chǎn)生信號(hào):除數(shù)為0、無效的存儲(chǔ)訪問等等。這些情況通常由硬件檢測(cè)到,將其通知內(nèi)核,然后內(nèi)核產(chǎn)生適當(dāng)?shù)男盘?hào)通知進(jìn)程,例如,內(nèi)核對(duì)正訪問一個(gè)無效存儲(chǔ)區(qū)的進(jìn)程產(chǎn)生一個(gè)SIGSEGV信號(hào)。3、進(jìn)程用kill函數(shù)將信號(hào)發(fā)送給另一個(gè)進(jìn)程。4、用戶可用kill命令將信號(hào)發(fā)送給其他進(jìn)程。信號(hào)類型下面是幾種常見的信號(hào):
SIGHUP:從終端上發(fā)出的結(jié)束信號(hào)
SIGINT:來自鍵盤的中斷信號(hào)(Ctrl-C)
SIGKILL:該信號(hào)結(jié)束接收信號(hào)的進(jìn)程SIGTERM:kill命令發(fā)出的信號(hào)
SIGCHLD:標(biāo)識(shí)子進(jìn)程停止或結(jié)束的信號(hào)
SIGSTOP:來自鍵盤(Ctrl-Z)或調(diào)試程序的停止執(zhí)行信號(hào)信號(hào)處理當(dāng)某信號(hào)出現(xiàn)時(shí),將按照下列三種方式中的一種進(jìn)行處理:1、忽略此信號(hào)大多數(shù)信號(hào)都按照這種方式進(jìn)行處理,但有兩種信號(hào)卻決不能被忽略。它們是:SIGKILL和SIGSTOP。這兩種信號(hào)不能被忽略的原因是:它們向超級(jí)用戶提供了一種終止或停止進(jìn)程的方法。2、執(zhí)行用戶希望的動(dòng)作通知內(nèi)核在某種信號(hào)發(fā)生時(shí),調(diào)用一個(gè)用戶函數(shù)。在用戶函數(shù)中,執(zhí)行用戶希望的處理。3、執(zhí)行系統(tǒng)默認(rèn)動(dòng)作對(duì)大多數(shù)信號(hào)的系統(tǒng)默認(rèn)動(dòng)作是終止該進(jìn)程。信號(hào)通信機(jī)制的局限性
這種通信方式主要的局限性就是開銷太大,發(fā)送進(jìn)程需要調(diào)用系統(tǒng)調(diào)用,這時(shí)核心會(huì)中斷接收進(jìn)程,且要管理它的堆棧、調(diào)用處理程序、恢復(fù)被中斷的接收信號(hào)進(jìn)程等.另外,信號(hào)的數(shù)量受到限制,并且只能傳送有限的信息量,例如不能攜帶參數(shù)等。所以對(duì)于復(fù)雜的通信操作不適用。管道通信
什么是管道?
管道是單向的、先進(jìn)先出的,它把一個(gè)進(jìn)程的輸出和另一個(gè)進(jìn)程的輸入連接在一起。一個(gè)進(jìn)程(寫進(jìn)程)在管道的尾部寫入數(shù)據(jù),另一個(gè)進(jìn)程(讀進(jìn)程)從管道的頭部讀出數(shù)據(jù)。數(shù)據(jù)被一個(gè)進(jìn)程讀出后,將被從管道中刪除,其它讀進(jìn)程將不能再讀到這些數(shù)據(jù)。管道提供了簡單的流控制機(jī)制,進(jìn)程試圖讀空管道時(shí),進(jìn)程將阻塞。同樣,管道已經(jīng)滿時(shí),進(jìn)程再試圖向管道寫入數(shù)據(jù),進(jìn)程將阻塞。樣例:ls
-l
|
less
在這個(gè)例子中,ls用于在Unix下列出目錄內(nèi)容,less是一個(gè)有搜索功能的交互式的文本分頁器。這個(gè)管線使得用戶可以在列出的目錄內(nèi)容比屏幕長時(shí)目錄上下翻頁。以less退出的管道(或more,這是個(gè)相似的標(biāo)簽頁工具,與more相比less允許使用者往回卷動(dòng))是最常被使用的。這讓用戶可以閱覽尚未顯示的大量文字(受可用緩存限制,控制臺(tái)的屏幕大小、屏幕緩存大小往往有限,不足以一次先輸出所有輸出內(nèi)容,也不能自由滾動(dòng)內(nèi)容),若少了這工具則這些文字將會(huì)卷過終端機(jī)而無法閱讀到。管道簡分類管道臭包括無名通管道和有名眉管道兩種懇,前舟者用胞于父回進(jìn)程舊和子黨進(jìn)程蔽間的變通信格,后披者可漁用于湊運(yùn)行市于同怎一系咬統(tǒng)中介的任戀意兩骨個(gè)進(jìn)艘程間幫的通穴信。無名堤管道截由pi器pe()晝函數(shù)流創(chuàng)建呀:in移tpi完pe魯(i蟲ntfi噸le夾di墊s[梁2]哀);當(dāng)一或個(gè)管弓道建畝立時(shí)萌,它叼會(huì)創(chuàng)弱建兩暑個(gè)文教件描夢(mèng)述符腹:fi吉le隸di弟s[四0]用于阿讀管偽道,fi牛le哄di市s[納1]用于崗寫管獨(dú)道。管道趁創(chuàng)建無名牽管道財(cái)由pi瞞pe()跨函數(shù)叼創(chuàng)建侵:in錢tpi悟pe療(i斗ntfi誦le若di印s[取2]而);當(dāng)一閱個(gè)管區(qū)道建熄立時(shí)牧,它范會(huì)創(chuàng)竿建兩娛個(gè)文很件描良述符賣:fi宅le厭di雪s[控0]用于毒讀管晝道,fi遇le穗di窗s[墓1]用于凱寫管嘴道有名你管道嫩(FI銅FO)in洽tmk遺fi搬fo遠(yuǎn)(c蓄on震stch疲ar壤*油p性at軋hn孝am撿e,mo花de必_tmo仔de甩)vp校at紹hn恨am補(bǔ)e:FI榨FO文件算名vm圍od暢e:屬席性(奏見文盈件操蒙作章攀節(jié))一旦敞創(chuàng)建移了一偷個(gè)FI像FO,就薪可用op矛en打開椒它,耀一般輪的文耐件訪慕問函辦數(shù)(cl激os游e、re易ad、wr啄it蛛e等)跨都可祖用于FI礦FO。無名凡管道#i粘nc揭lu如de菌<un犁is嫌td猜.h>#i己nc儲(chǔ)lu痰de秀<er改rn籃o.除h>#i晚nc疾lu廉de義<st房誠di刮o.序h>#i舉nc撥lu窄de田<st膚dl臘ib謊.h>in買tma晝in礦(){in左tpi康pe欠_f還d[賢2]你;if撿(p固ip爺e(陜pi滋pe前_f殺d)<愉0){pr猾in用tf將("怕pi信pecr弓ea狼te偷e催rr廉or袍\n典")獻(xiàn);re督tu映rn逼-悔1;}el繪sepr纖in嶄tf抄("朋pi因pecr自ea罩te耐s寄uc太ce毅ss架\n飯")角;cl幕os畏e(柿pi險(xiǎn)pe字_f催d[我0]漆);cl棋os罰e(指pi夕pe夕_f暖d[揪1]鴨);}舉例:pi癥pe權(quán)_r蕩w.排cSy躬st驚em悔V猛I患PCSy幼st番em旁VSy尸st質(zhì)em敞V是AT叉&T的第揪一個(gè)稍商業(yè)UN廢IX版本流(UN般IX存S油ys解te卻m界II營I)的睛加強(qiáng)腥。傳溫統(tǒng)上辭,Sy袋st閉em棍V被看魄作是凝兩種UN怕IX充"風(fēng)味"之一來(另蹲一個(gè)聯(lián)是BS拐D(Be繁rk石el石ey疼S轟of善tw涂ar見e俊Di土st咽ri皺bu唇ti席on,伯朋克利硬軟件測(cè)套件仍))泊。然缺而,紀(jì)隨著該一些摸并不咸基于揀這兩暮者代底碼的UN照IX實(shí)現(xiàn)槍的出掉現(xiàn),丟例如Li幅nu救x和QN茅X,釀這一辰歸納境不再北準(zhǔn)確踐,但盆不論絨如何晉,像PO野SI附X這樣蒼的標(biāo)股準(zhǔn)化制努力棋一直鋸在試研圖減暴少各究種實(shí)邀現(xiàn)之論間的懇不同丟。消息帝隊(duì)列消息陸隊(duì)列靠就是川一個(gè)刻消息果的鏈表。可閣以把質(zhì)消息毅看作莊一個(gè)婚記錄培,具有洗特定奶的格標(biāo)式。進(jìn)斧程可洪以向尊中按功照一譯定的尤規(guī)則料添加鍛新消鐮息;尊另一疲些進(jìn)課程則暴可以姐從消嗎息隊(duì)喚列中御讀走戰(zhàn)消息謙。和信插號(hào)相機(jī)比,歉消息派隊(duì)列零能夠位傳遞兔更多仗的信堤息。巧與管渴道相職比,曾消息估隊(duì)列育提供仙了有金格式蹦的數(shù)螺據(jù),衡這可姥以減限少開貫發(fā)人弟員的嗓工作欠量。信號(hào)嫩量信號(hào)專量(又名塔:信崇號(hào)燈)與其能他進(jìn)悼程間儉通信偷方式煩不大咽相同辱,主魄要用昂途是紗保護(hù)臨界喚資源。進(jìn)房誠程可減以根司據(jù)它勻判定機(jī)是否獸能夠亞訪問形某些蘆共享憤資源昆。除舅了用球于訪現(xiàn)問控盾制外跡,還享可用劑于進(jìn)程風(fēng)同步。分類二值刮信號(hào)拒燈:信烏號(hào)燈患的值啟只能狹取0或1,類子似于債互斥蝴鎖。擦但嫌兩者砌有不創(chuàng)同:院信號(hào)糖燈強(qiáng)州調(diào)共卵享資駁源,迷只要成共享宋資源矩可用墳,其盼他進(jìn)衰程同德樣可于以修演改信筆號(hào)燈脆的值饒;互參斥鎖悉更強(qiáng)真調(diào)進(jìn)緣瑞程,蔑占用畏資源間的進(jìn)壞程使渡用完僚資源陶后,灰必須桐由進(jìn)秒程本腸身來帥解鎖哄。計(jì)數(shù)門信號(hào)濁燈:信針號(hào)燈駱的值義可以聞取任桐意非辛負(fù)值穿。共享既內(nèi)存共享夕內(nèi)存共享品內(nèi)存獸是被孔多個(gè)妖進(jìn)程院共享敞的一學(xué)部分頃物理兵內(nèi)存危。共煎享內(nèi)值存是耍進(jìn)程蠢間共借享數(shù)揮據(jù)的嚇一種護(hù)最快臭的方懲法,喬一個(gè)稈進(jìn)程原向共厚享內(nèi)礦存區(qū)情域?qū)懕救肓锁f數(shù)據(jù)嚼,共申享這萬個(gè)內(nèi)喂存區(qū)恥域的達(dá)所有爪進(jìn)程聲就可握以立叢刻看纖到其鍵中的可內(nèi)容微。共享育內(nèi)存件實(shí)現(xiàn)鞏步驟一、吵創(chuàng)建共享內(nèi)存頂,使秋用sh若mg疑et函數(shù)。二、報(bào)映射但共享籍內(nèi)存淋,將鞏這段段創(chuàng)建秧的共行享內(nèi)肚存映抓射到拐具體榜的進(jìn)摘程空臂間去事,使蛋用sh訓(xùn)ma懲t函數(shù)。創(chuàng)建in公tsh返mg膜et(ke倉y_繩tke罪y,in常tsi瘦ze嗚,in征tsh盾mf排lg)ke洲y標(biāo)識(shí)女共享乏內(nèi)存胳的鍵恨值:賤0/損IP階C_昨PR強(qiáng)IV路AT生E。堡當(dāng)ke忙y的取惱值為IP汁C_煎PR姻IV旬AT赤E,則嬌函數(shù)sh五mg低et()將創(chuàng)依建一際塊新惹的共巨享內(nèi)印存;蚊如果ke天y的取索值為0,而限參數(shù)sh戀mf隸lg中又良設(shè)置IP月C_椒PR抽IV城AT搭E這個(gè)武標(biāo)志陳,則延同樣叢會(huì)創(chuàng)蛙建一有塊新冬的共粉享內(nèi)嶺存。返回舅值:如稀果成翅功,蜻返回響共享謊內(nèi)存紙標(biāo)識(shí)聰符;軌如果瞎失敗聚,返稠回-1。映射in旁tsh望ma呀t(in歲tsh只mi旦d,巾ch弊ar遭*sh窄ma場(chǎng)dd赤r,in提t(yī)fl羨ag芳)參數(shù)楚:sh魄mi叮d:sh秀mg磁et函數(shù)沈返回茶的共汪享存身儲(chǔ)標(biāo)簽
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年小型房地產(chǎn)買賣合同樣本
- 2025臨時(shí)外墻施工腳手架承包合同模板
- 2025版房屋租賃合同模板2
- 《2025關(guān)于解除勞動(dòng)合同協(xié)議范本》
- 溝通技巧與人際關(guān)系指導(dǎo)作業(yè)指導(dǎo)書
- 能源行業(yè)智能調(diào)度與管理系統(tǒng)預(yù)案
- 數(shù)據(jù)分析與預(yù)測(cè)模型應(yīng)用試題
- 營養(yǎng)學(xué)知識(shí)應(yīng)用測(cè)試題
- 膽囊瘺超聲診斷
- 房地產(chǎn)開發(fā)戰(zhàn)略合作協(xié)議書
- 2024年中國資源循環(huán)集團(tuán)有限公司招聘筆試真題
- 2025年全國國家版圖知識(shí)競(jìng)賽(中小學(xué)組)題庫及答案
- 2025年春季四年級(jí)下冊(cè)語文第15課《白鵝》課件(統(tǒng)編版)
- 課件-DeepSeek從入門到精通
- 帝豪EV450維修手冊(cè)
- 未被列入違法失信名單承諾書
- JGT266-2011 泡沫混凝土標(biāo)準(zhǔn)規(guī)范
- 宿舍教室報(bào)修維修登記表
- 實(shí)際問題與二元一次方程組說課稿12
- 上海名師應(yīng)彩云_大班綜合活動(dòng)+百家姓
- (精選)研學(xué)旅行安全措施預(yù)案
評(píng)論
0/150
提交評(píng)論