進程間通信機制的與比較_第1頁
進程間通信機制的與比較_第2頁
進程間通信機制的與比較_第3頁
進程間通信機制的與比較_第4頁
進程間通信機制的與比較_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

進程間通信機制的分析與比較

Ver20150302v0.1為什么進程間需要通信?

1、數(shù)據(jù)傳輸一個進程需要將它的數(shù)據(jù)發(fā)送給另一個進程。2、資源共享多個進程之間共享同樣的資源。3、通知事件一個進程需要向另一個或一組進程發(fā)送消息,通知它們發(fā)生了某種事件。4、進程控制有些進程希望完全控制另一個進程的執(zhí)行(如Debug進程),此時控制進程希望能夠攔截另一個進程的所有操作,并能夠及時知道它的狀態(tài)改變。分類進程間通信方式包括:1、管道(pipe)和有名管道(FIFO)2、信號(signal)3、消息隊列4、共享內(nèi)存5、信號量6、套接字(socket)信號信號通信

信號(signal)機制是Unix系統(tǒng)中最為古老的進程間通信機制,很多條件可以產(chǎn)生一個信號:1、當用戶按某些按鍵時,產(chǎn)生信號。2、硬件異常產(chǎn)生信號:除數(shù)為0、無效的存儲訪問等等。這些情況通常由硬件檢測到,將其通知內(nèi)核,然后內(nèi)核產(chǎn)生適當?shù)男盘柾ㄖM程,例如,內(nèi)核對正訪問一個無效存儲區(qū)的進程產(chǎn)生一個SIGSEGV信號。3、進程用kill函數(shù)將信號發(fā)送給另一個進程。4、用戶可用kill命令將信號發(fā)送給其他進程。信號類型下面是幾種常見的信號:

SIGHUP:從終端上發(fā)出的結(jié)束信號

SIGINT:來自鍵盤的中斷信號(Ctrl-C)

SIGKILL:該信號結(jié)束接收信號的進程SIGTERM:kill命令發(fā)出的信號

SIGCHLD:標識子進程停止或結(jié)束的信號

SIGSTOP:來自鍵盤(Ctrl-Z)或調(diào)試程序的停止執(zhí)行信號信號處理當某信號出現(xiàn)時,將按照下列三種方式中的一種進行處理:1、忽略此信號大多數(shù)信號都按照這種方式進行處理,但有兩種信號卻決不能被忽略。它們是:SIGKILL和SIGSTOP。這兩種信號不能被忽略的原因是:它們向超級用戶提供了一種終止或停止進程的方法。2、執(zhí)行用戶希望的動作通知內(nèi)核在某種信號發(fā)生時,調(diào)用一個用戶函數(shù)。在用戶函數(shù)中,執(zhí)行用戶希望的處理。3、執(zhí)行系統(tǒng)默認動作對大多數(shù)信號的系統(tǒng)默認動作是終止該進程。信號通信機制的局限性

這種通信方式主要的局限性就是開銷太大,發(fā)送進程需要調(diào)用系統(tǒng)調(diào)用,這時核心會中斷接收進程,且要管理它的堆棧、調(diào)用處理程序、恢復被中斷的接收信號進程等.另外,信號的數(shù)量受到限制,并且只能傳送有限的信息量,例如不能攜帶參數(shù)等。所以對于復雜的通信操作不適用。管道通信

什么是管道?

管道是單向的、先進先出的,它把一個進程的輸出和另一個進程的輸入連接在一起。一個進程(寫進程)在管道的尾部寫入數(shù)據(jù),另一個進程(讀進程)從管道的頭部讀出數(shù)據(jù)。數(shù)據(jù)被一個進程讀出后,將被從管道中刪除,其它讀進程將不能再讀到這些數(shù)據(jù)。管道提供了簡單的流控制機制,進程試圖讀空管道時,進程將阻塞。同樣,管道已經(jīng)滿時,進程再試圖向管道寫入數(shù)據(jù),進程將阻塞。樣例:ls

-l

|

less

在這個例子中,ls用于在Unix下列出目錄內(nèi)容,less是一個有搜索功能的交互式的文本分頁器。這個管線使得用戶可以在列出的目錄內(nèi)容比屏幕長時目錄上下翻頁。以less退出的管道(或more,這是個相似的標簽頁工具,與more相比less允許使用者往回卷動)是最常被使用的。這讓用戶可以閱覽尚未顯示的大量文字(受可用緩存限制,控制臺的屏幕大小、屏幕緩存大小往往有限,不足以一次先輸出所有輸出內(nèi)容,也不能自由滾動內(nèi)容),若少了這工具則這些文字將會卷過終端機而無法閱讀到。管道簡分類管道臭包括無名通管道和有名眉管道兩種懇,前舟者用胞于父回進程舊和子黨進程蔽間的變通信格,后披者可漁用于湊運行市于同怎一系咬統(tǒng)中介的任戀意兩骨個進艘程間幫的通穴信。無名堤管道截由pi器pe()晝函數(shù)流創(chuàng)建呀:in移tpi完pe魯(i蟲ntfi噸le夾di墊s[梁2]哀);當一或個管弓道建畝立時萌,它叼會創(chuàng)弱建兩暑個文教件描夢述符腹:fi吉le隸di弟s[四0]用于阿讀管偽道,fi牛le哄di市s[納1]用于崗寫管獨道。管道趁創(chuàng)建無名牽管道財由pi瞞pe()跨函數(shù)叼創(chuàng)建侵:in錢tpi悟pe療(i斗ntfi誦le若di印s[取2]而);當一閱個管區(qū)道建熄立時牧,它范會創(chuàng)竿建兩娛個文很件描良述符賣:fi宅le厭di雪s[控0]用于毒讀管晝道,fi遇le穗di窗s[墓1]用于凱寫管嘴道有名你管道嫩(FI銅FO)in洽tmk遺fi搬fo遠(c蓄on震stch疲ar壤*油p性at軋hn孝am撿e,mo花de必_tmo仔de甩)vp校at紹hn恨am補e:FI榨FO文件算名vm圍od暢e:屬席性(奏見文盈件操蒙作章攀節(jié))一旦敞創(chuàng)建移了一偷個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儲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典")獻;re督tu映rn逼-悔1;}el繪sepr纖in嶄tf抄("朋pi因pecr自ea罩te耐s寄uc太ce毅ss架\n飯")角;cl幕os畏e(柿pi險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的第揪一個稍商業(yè)UN廢IX版本流(UN般IX存S油ys解te卻m界II營I)的睛加強腥。傳溫統(tǒng)上辭,Sy袋st閉em棍V被看魄作是凝兩種UN怕IX充"風味"之一來(另蹲一個聯(lián)是BS拐D(Be繁rk石el石ey疼S轟of善tw涂ar見e俊Di土st咽ri皺bu唇ti席on,伯朋克利硬軟件測套件仍))泊。然缺而,紀隨著該一些摸并不咸基于揀這兩暮者代底碼的UN照IX實現(xiàn)槍的出掉現(xiàn),丟例如Li幅nu救x和QN茅X,釀這一辰歸納境不再北準確踐,但盆不論絨如何晉,像PO野SI附X這樣蒼的標股準化制努力棋一直鋸在試研圖減暴少各究種實邀現(xiàn)之論間的懇不同丟。消息帝隊列消息陸隊列靠就是川一個刻消息果的鏈表??砷w以把質(zhì)消息毅看作莊一個婚記錄培,具有洗特定奶的格標式。進斧程可洪以向尊中按功照一譯定的尤規(guī)則料添加鍛新消鐮息;尊另一疲些進課程則暴可以姐從消嗎息隊喚列中御讀走戰(zhàn)消息謙。和信插號相機比,歉消息派隊列零能夠位傳遞兔更多仗的信堤息。巧與管渴道相職比,曾消息估隊列育提供仙了有金格式蹦的數(shù)螺據(jù),衡這可姥以減限少開貫發(fā)人弟員的嗓工作欠量。信號嫩量信號專量(又名塔:信崇號燈)與其能他進悼程間儉通信偷方式煩不大咽相同辱,主魄要用昂途是紗保護臨界喚資源。進房誠程可減以根司據(jù)它勻判定機是否獸能夠亞訪問形某些蘆共享憤資源昆。除舅了用球于訪現(xiàn)問控盾制外跡,還享可用劑于進程風同步。分類二值刮信號拒燈:信烏號燈患的值啟只能狹取0或1,類子似于債互斥蝴鎖。擦但嫌兩者砌有不創(chuàng)同:院信號糖燈強州調(diào)共卵享資駁源,迷只要成共享宋資源矩可用墳,其盼他進衰程同德樣可于以修演改信筆號燈脆的值饒;互參斥鎖悉更強真調(diào)進緣瑞程,蔑占用畏資源間的進壞程使渡用完僚資源陶后,灰必須桐由進秒程本腸身來帥解鎖哄。計數(shù)門信號濁燈:信針號燈駱的值義可以聞取任桐意非辛負值穿。共享既內(nèi)存共享夕內(nèi)存共享品內(nèi)存獸是被孔多個妖進程院共享敞的一學部分頃物理兵內(nèi)存危。共煎享內(nèi)值存是耍進程蠢間共借享數(shù)揮據(jù)的嚇一種護最快臭的方懲法,喬一個稈進程原向共厚享內(nèi)礦存區(qū)情域?qū)懕救肓锁f數(shù)據(jù)嚼,共申享這萬個內(nèi)喂存區(qū)恥域的達所有爪進程聲就可握以立叢刻看纖到其鍵中的可內(nèi)容微。共享育內(nèi)存件實現(xiàn)鞏步驟一、吵創(chuàng)建共享內(nèi)存頂,使秋用sh若mg疑et函數(shù)。二、報映射但共享籍內(nèi)存淋,將鞏這段段創(chuàng)建秧的共行享內(nèi)肚存映抓射到拐具體榜的進摘程空臂間去事,使蛋用sh訓ma懲t函數(shù)。創(chuàng)建in公tsh返mg膜et(ke倉y_繩tke罪y,in常tsi瘦ze嗚,in征tsh盾mf排lg)ke洲y標識女共享乏內(nèi)存胳的鍵恨值:賤0/損IP階C_昨PR強IV路AT生E。堡當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這個武標志陳,則延同樣叢會創(chuàng)蛙建一有塊新冬的共粉享內(nèi)嶺存。返回舅值:如稀果成翅功,蜻返回響共享謊內(nèi)存紙標識聰符;軌如果瞎失敗聚,返稠回-1。映射in旁tsh望ma呀t(in歲tsh只mi旦d,巾ch弊ar遭*sh窄ma場dd赤r,in提t(yī)fl羨ag芳)參數(shù)楚:sh魄mi叮d:sh秀mg磁et函數(shù)沈返回茶的共汪享存身儲標簽

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論