進(jìn)程間通信

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

進(jìn)程間通信管道

普通的Linux shell都允許重定向,而重定向使用的就是管道。例如:

$ ls | pr | lpr

把命令ls(列出目錄中的文件)的輸出通過管道連接到命令pr的標(biāo)準(zhǔn)輸入上進(jìn)行分頁。最后,命令pr的標(biāo)準(zhǔn)輸出通過管道連接到命令lpr的標(biāo)準(zhǔn)輸入上,從而在缺省打印機(jī)上打印出結(jié)果。進(jìn)程感覺不到這種重定向,它們和平常一樣地工作。正是shell建立了進(jìn)程之間的臨時(shí)管道。

管道是單向的、先進(jìn)先出的、無結(jié)構(gòu)的、固定大小的字節(jié)流,它把一個(gè)進(jìn)程的標(biāo)準(zhǔn)輸出和另一個(gè)進(jìn)程的標(biāo)準(zhǔn)輸入連接在一起。寫進(jìn)程在管道的尾端寫入數(shù)據(jù),讀進(jìn)程在管道的首端讀出數(shù)據(jù)。數(shù)據(jù)讀出后將從管道中移走,其它讀進(jìn)程都不能再讀到這些數(shù)據(jù)。管道提供了簡單的流控制機(jī)制。進(jìn)程試圖讀空管道時(shí),在有數(shù)據(jù)寫入管道前,進(jìn)程將一直阻塞。同樣,管道已經(jīng)滿時(shí),進(jìn)程再試圖寫管道,在其它進(jìn)程從管道中移走數(shù)據(jù)之前,寫進(jìn)程將一直阻塞。

傳統(tǒng)上有很多種實(shí)現(xiàn)管道的方法,如利用文件系統(tǒng)、利用套接字(sockets)、利用流等。在Linux中,使用兩個(gè)file數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)管道。這兩個(gè)file數(shù)據(jù)結(jié)構(gòu)中的f_inode(f_dentry)指針指向同一個(gè)臨時(shí)創(chuàng)建的VFS I節(jié)點(diǎn),而該VFS I節(jié)點(diǎn)本身又指向內(nèi)存中的一個(gè)物理頁,如圖5.1所示。兩個(gè)file數(shù)據(jù)結(jié)構(gòu)中的f_op指針指向不同的文件操作例程向量表:一個(gè)用于向管道中寫,另一個(gè)用于從管道中讀。這種實(shí)現(xiàn)方法掩蓋了底層實(shí)現(xiàn)的差異,從進(jìn)程的角度來看,讀寫管道的系統(tǒng)調(diào)用和讀寫普通文件的普通系統(tǒng)調(diào)用沒什么不同。當(dāng)寫進(jìn)程向管道中寫時(shí),字節(jié)被拷貝到了共享數(shù)據(jù)頁,當(dāng)讀進(jìn)程從管道中讀時(shí),字節(jié)被從共享頁中拷貝出來。Linux必須同步對(duì)于管道的存取,必須保證管道的寫和讀步調(diào)一致。Linux使用鎖、等待隊(duì)列和信號(hào)(locks,wait queues and signals)來實(shí)現(xiàn)同步。

右圖 --管道示意圖所示

參見include/linux/inode_fs.h

當(dāng)寫進(jìn)程向管道寫的時(shí)候,它使用標(biāo)準(zhǔn)的write庫函數(shù)。這些庫函數(shù)(read、write等)要求傳遞一個(gè)文件描述符作為參數(shù)。文件描述符是該文件對(duì)應(yīng)的file數(shù)據(jù)結(jié)構(gòu)在進(jìn)程的file數(shù)據(jù)結(jié)構(gòu)數(shù)組中的索引,每一個(gè)都表示一個(gè)打開的文件,在這種情況下,是打開的管道。Linux系統(tǒng)調(diào)用使用描述這個(gè)管道的file數(shù)據(jù)結(jié)構(gòu)中f_op所指的write例程,該write例程使用表示管道的VFS I 節(jié)點(diǎn)中存放的信息,來管理寫請(qǐng)求。如果共享數(shù)據(jù)頁中有足夠的空間能把所有的字節(jié)都寫到管道中,而且管道沒有被讀進(jìn)程鎖定,則Linux就在管道上為寫進(jìn)程加鎖,并把字節(jié)從進(jìn)程的地址空間拷貝到共享數(shù)據(jù)頁。如果管道被讀進(jìn)程鎖定或者共享數(shù)據(jù)頁中沒有足夠的空間,則當(dāng)前進(jìn)程被迫睡眠,它被掛在管道I節(jié)點(diǎn)的等待隊(duì)列中等待,而后調(diào)用調(diào)度程序,讓另外一個(gè)進(jìn)程運(yùn)行。睡眠的寫進(jìn)程是可以中斷的(interruptible),所以它可以接收信號(hào)。當(dāng)管道中有了足夠的空間可以寫數(shù)據(jù),或者當(dāng)鎖定解除時(shí),寫進(jìn)程就會(huì)被讀進(jìn)程喚醒。當(dāng)數(shù)據(jù)寫完之后,管道的VFS I 節(jié)點(diǎn)上的鎖定解除,在管道I節(jié)點(diǎn)的等待隊(duì)列中等待的所有讀進(jìn)程都會(huì)被喚醒。

參見fs/pipe.c pipe_write()

從管道中讀取數(shù)據(jù)和寫數(shù)據(jù)非常相似。Linux允許進(jìn)程無阻塞地讀文件或管道(依賴于它們打開文件或者管道的模式),這時(shí),如果沒有數(shù)據(jù)可讀或者管道被鎖定,系統(tǒng)調(diào)用會(huì)返回一個(gè)錯(cuò)誤。這意味著進(jìn)程會(huì)繼續(xù)運(yùn)行。另一種方式是阻塞讀,即進(jìn)程在管道I節(jié)點(diǎn)的等待隊(duì)列中等待,直到寫進(jìn)程完成。

如果所有的進(jìn)程都完成了它們的管道操作,則管道的I節(jié)點(diǎn)和相應(yīng)的共享數(shù)據(jù)頁會(huì)被廢棄。

參見fs/pipe.c pipe_read()

Linux也支持命名管道(也叫FIFO,因?yàn)楣艿拦ぷ髟谙热胂瘸龅脑瓌t下,第一個(gè)寫入管道的數(shù)據(jù)也是第一個(gè)被讀出的數(shù)據(jù))。與管道不同,F(xiàn)IFO不是臨時(shí)的對(duì)象,它們是文件系統(tǒng)中真正的實(shí)體,可以用mkfifo命令創(chuàng)建。只要有合適的訪問權(quán)限,進(jìn)程就可以使用FIFO。FIFO的打開方式和管道稍微不同。一個(gè)管道(它的兩個(gè)file數(shù)據(jù)結(jié)構(gòu)、VFS I節(jié)點(diǎn)和共享數(shù)據(jù)頁)是一次性創(chuàng)建的,而FIFO已經(jīng)存在,可以由它的用戶打開和關(guān)閉。Linux必須處理在寫進(jìn)程打開FIFO之前讀進(jìn)程對(duì)它的打開,也必須處理在寫進(jìn)程寫數(shù)據(jù)之前讀進(jìn)程對(duì)管道的讀。除此以外,F(xiàn)IFO幾乎和管道的處理完全一樣,而且它們使用一樣的數(shù)據(jù)結(jié)構(gòu)和操作。

從IPC的角度看,管道提供了從一個(gè)進(jìn)程向另一個(gè)進(jìn)程傳輸數(shù)據(jù)的有效方法。但是,管道有一些固有的局限性:

l 因?yàn)樽x數(shù)據(jù)的同時(shí)也將數(shù)據(jù)從管道移去,因此,管道不能用來對(duì)多個(gè)接收者廣播數(shù)據(jù)。

l 管道中的數(shù)據(jù)被當(dāng)作字節(jié)流,因此無法識(shí)別信息的邊界。

l 如果一個(gè)管道有多個(gè)讀進(jìn)程,那么寫進(jìn)程不能發(fā)送數(shù)據(jù)到指定的讀進(jìn)程。同樣,如果有多個(gè)寫進(jìn)程,那么沒有辦法判斷是它們中那一個(gè)發(fā)送的數(shù)據(jù)。

進(jìn)程間通信造價(jià)信息

市場價(jià) 信息價(jià) 詢價(jià)
材料名稱 規(guī)格/型號(hào) 市場價(jià)
(除稅)
工程建議價(jià)
(除稅)
行情 品牌 單位 稅率 供應(yīng)商 報(bào)價(jià)日期
通信型選件 品種:斷路器附件;系列:cm5Z-1600;規(guī)格:FDM3短消息通知模塊; 查看價(jià)格 查看價(jià)格

常熟開關(guān)

13% 上海西屋開關(guān)有限公司
欠壓瞬脫扣器 欠壓瞬脫扣器 查看價(jià)格 查看價(jià)格

士林

個(gè) 13% 上海士林電器有限公司
黃金碧竹 品種:黃金碧竹;桿高(m):1.5-2; 查看價(jià)格 查看價(jià)格

三閣

13% 貴州省三閣園林綠化工程有限責(zé)任公司
黃金碧竹 品種:黃金碧竹;桿高(m):1.5-2; 查看價(jià)格 查看價(jià)格

三閣

13% 貴州省三閣園林綠化工程有限責(zé)任公司
黃金碧竹 主枝數(shù):1枝;品種:黃金碧竹;桿高(m):1.5-2; 查看價(jià)格 查看價(jià)格

美學(xué)

13% 佛山市美學(xué)環(huán)境藝術(shù)有限公司
黃金碧竹 主枝數(shù):1枝;品種:黃金碧竹;桿高(m):2-2.5; 查看價(jià)格 查看價(jià)格

美學(xué)

13% 佛山市美學(xué)環(huán)境藝術(shù)有限公司
黃金碧竹 主枝數(shù):1枝;品種:黃金碧竹;桿高(m):1.5-2; 查看價(jià)格 查看價(jià)格

花都藍(lán)田

13% 花都藍(lán)田花木苗圃場
黃金碧竹 主枝數(shù):1枝;品種:黃金碧竹;桿高(m):1.5-2; 查看價(jià)格 查看價(jià)格

麗中麗

13% 長沙市雨花區(qū)麗中麗花卉寧夏直銷
材料名稱 規(guī)格/型號(hào) 除稅
信息價(jià)
含稅
信息價(jià)
行情 品牌 單位 稅率 地區(qū)/時(shí)間
中繼 Ф800 查看價(jià)格 查看價(jià)格

韶關(guān)市2010年6月信息價(jià)
中繼 Ф1800 查看價(jià)格 查看價(jià)格

韶關(guān)市2010年6月信息價(jià)
中繼 Ф1000 查看價(jià)格 查看價(jià)格

肇慶市2003年3季度信息價(jià)
中繼 Ф1600 查看價(jià)格 查看價(jià)格

肇慶市2003年3季度信息價(jià)
中繼 Ф2000 查看價(jià)格 查看價(jià)格

韶關(guān)市2010年6月信息價(jià)
中繼 Ф2400 查看價(jià)格 查看價(jià)格

韶關(guān)市2010年6月信息價(jià)
中繼 Ф800 查看價(jià)格 查看價(jià)格

肇慶市2003年3季度信息價(jià)
中繼 Ф1000 查看價(jià)格 查看價(jià)格

韶關(guān)市2010年6月信息價(jià)
材料名稱 規(guī)格/需求量 報(bào)價(jià)數(shù) 最新報(bào)價(jià)
(元)
供應(yīng)商 報(bào)價(jià)地區(qū) 最新報(bào)價(jià)時(shí)間
通信接口 通信接口|1套 3 查看價(jià)格 施耐德電氣(中國)有限公司 廣東   2022-03-21
通信光交箱 通信光交箱|1臺(tái) 3 查看價(jià)格 廣州粵道智能科技發(fā)展有限公司 廣東  深圳市 2022-09-30
通信立桿 通信立桿|1個(gè) 3 查看價(jià)格 廣州路虎交通設(shè)施有限公司 廣東   2022-02-28
通信接口 1、名稱:通信接口|3個(gè) 1 查看價(jià)格 廣州賽瑞電子有限公司 廣東  惠州市 2021-06-23
通信軟件 交通通信軟件|1套 1 查看價(jià)格 廣州科締歐電子科技有限公司 廣東  汕尾市 2020-05-26
通信接口 對(duì)應(yīng)通信配備接口|1個(gè) 1 查看價(jià)格 深圳達(dá)實(shí)智能股份有限公司 全國   2021-10-11
通信接口 1.名稱:通信接口|1套 1 查看價(jià)格 霍尼韋爾(中國)有限公司深圳授權(quán)代理 廣東   2021-11-23
通信接口 1.名稱:通信接口2.類型:入侵報(bào)警主機(jī)之間通信|3套 1 查看價(jià)格 佛山市迪司恩普科技有限公司 廣東   2020-09-01

進(jìn)程間通信常見問題

  • 進(jìn)程掃把怎樣使用?

    首先上網(wǎng)找到進(jìn)程掃把軟件,然后下載到電腦,安裝好就可以用了。       一款系統(tǒng)殘留進(jìn)程清理軟件    進(jìn)程掃把是一款系統(tǒng)殘留進(jìn)程清理...

  • 進(jìn)程掃把怎樣使用?

    進(jìn)程掃把還可以對(duì)系統(tǒng)進(jìn)程進(jìn)行監(jiān)測,自動(dòng)監(jiān)測系統(tǒng)進(jìn)程的變化,一旦發(fā)現(xiàn)有新的軟件啟動(dòng)或者退出,就會(huì)對(duì)內(nèi)存進(jìn)行一次清理,最大限度的發(fā)揮了內(nèi)存掃把的清理效果。并且還有清理內(nèi)存和剪貼板的熱鍵,可以使您隨時(shí)方便的...

  • 進(jìn)程掃把怎樣使用?應(yīng)用多嗎

    萬能掃把價(jià)格120--230元,萬能掃把:歐洲、亞洲以及世界上的大部分地區(qū),廣泛應(yīng)用一種用高粱稈做的掃把。美國總統(tǒng)富蘭克林為了發(fā)展農(nóng)業(yè)提倡種高粱,于是,高粱的栽植遍及美國。有一天,哈得里的一個(gè)老農(nóng)夫需...

進(jìn)程間通信文獻(xiàn)

操作系統(tǒng)課程設(shè)計(jì)進(jìn)程間通信 操作系統(tǒng)課程設(shè)計(jì)進(jìn)程間通信

格式:pdf

大?。?span id="ud4b3al" class="single-tag-height">187KB

頁數(shù): 12頁

評(píng)分: 4.3

《操作系統(tǒng)原理與 Linux》 課程設(shè)計(jì)報(bào)告 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí) 學(xué) 號(hào) 姓 名 指導(dǎo)教師 完成時(shí)間 2012年 9月 14日 成 績 操作系統(tǒng)課程設(shè)計(jì) 一、設(shè)計(jì)題目 進(jìn)程間通信模擬 二、設(shè)計(jì)目的 通過該題目的設(shè)計(jì)過程,了解了進(jìn)程通訊的兩種方式,管道通信以及消息通 信。熟悉操作系統(tǒng)支持的進(jìn)程通信方式 三、設(shè)計(jì)要求 (1)要求實(shí)現(xiàn)管道通信與消息通信兩種方式. (2)要求界面簡單,易懂,關(guān)鍵代碼部分要注釋. (3)編程語言可以采用自己任意精通的語言 四、設(shè)計(jì)思想說明 創(chuàng)建一個(gè)內(nèi)存共享區(qū),實(shí)現(xiàn)消息管道的進(jìn)程間通訊。 五、系統(tǒng)結(jié)構(gòu)的說明 本程序是采用 MFC 框架所編寫的 win32應(yīng)用程序 采用 C++語言。 六、數(shù)據(jù)結(jié)構(gòu)的說明 管道通信定義了一個(gè)結(jié)構(gòu)體,存放管道基礎(chǔ)信息: struct PipeStruct// 定義管道基礎(chǔ)信息 { int UseProCount;// 當(dāng)

立即下載
基于Minix的進(jìn)程間通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 基于Minix的進(jìn)程間通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

格式:pdf

大小:187KB

頁數(shù): 6頁

評(píng)分: 4.5

進(jìn)程間通信作為操作系統(tǒng)中最重要的原語之一,提供了在多個(gè)隔離的進(jìn)程之間相互通信交流的可能性.提出了一種適用于微內(nèi)核操作系統(tǒng)的進(jìn)程間通信系統(tǒng),并在具體的Minix操作系統(tǒng)平臺(tái)之上予以實(shí)現(xiàn),解決了Minix系統(tǒng)中由于進(jìn)程間通信模塊的缺失而導(dǎo)致開發(fā)人員無法順利移植其他平臺(tái)的實(shí)用程序的問題。實(shí)驗(yàn)數(shù)據(jù)表明,該進(jìn)程間通信系統(tǒng)具有高效的特點(diǎn);同時(shí)由于該系統(tǒng)的設(shè)計(jì)原則,它保持著易擴(kuò)展的特點(diǎn)。該系統(tǒng)的實(shí)現(xiàn)雖然是基于Minix平臺(tái),但該設(shè)計(jì)同樣適用于其他微內(nèi)核的系統(tǒng),對(duì)其他操作系統(tǒng)具有借鑒意義。

立即下載

?COM是微軟自1993年便提出的組件式軟件平臺(tái),用來做進(jìn)程間通信(Inter-process communication, IPC)以及當(dāng)作組件式軟件開發(fā)的平臺(tái)。COM提供跟編程語言無關(guān)的方法實(shí)現(xiàn)一個(gè)軟件對(duì)象,因此可以在其他環(huán)境中運(yùn)行。COM要求軟件組件必須遵照一個(gè)共同的接口,該接口與實(shí)現(xiàn)無關(guān),因此可以隱藏實(shí)現(xiàn)屬性,并且被其他對(duì)象在不知道其內(nèi)部實(shí)現(xiàn)的情形下正確的使用。

COM并被實(shí)現(xiàn)于多個(gè)平臺(tái)之上,并不限于Windows操作系統(tǒng)之上。但還是只有Windows最常使用COM,且某些功能已被目前的.NET平臺(tái)取代。

《建筑智能化系統(tǒng)及工程應(yīng)用》中介紹了Windows NT網(wǎng)絡(luò)操作系統(tǒng)的原理及應(yīng)用,重點(diǎn)討論了Windows NT網(wǎng)絡(luò)協(xié)議、網(wǎng)絡(luò)邊界層、進(jìn)程間通信機(jī)制,及對(duì)Win32/Win16和MS"_blank" href="/item/電氣信息類/5294336" data-lemmaid="5294336">電氣信息類、儀器儀表以及機(jī)電類各專業(yè)本科教學(xué)使用,也可供相關(guān)工程技術(shù)人員參考。

《建筑智能化系統(tǒng)及工程應(yīng)用》是近些年來編者從事智能建筑教學(xué)實(shí)踐、科研及實(shí)際智能建筑工程項(xiàng)目的經(jīng)驗(yàn)總結(jié)??紤]各院校專業(yè)基礎(chǔ)課安排側(cè)重點(diǎn)及體系結(jié)構(gòu)的差異,以及教學(xué)側(cè)重點(diǎn)不同,課堂的理論教學(xué)學(xué)時(shí)少,教學(xué)內(nèi)容多,又要加強(qiáng)工程實(shí)踐環(huán)節(jié)的需要,因此,在教材處理上,各章節(jié)安排相對(duì)獨(dú)立,但又注意相對(duì)完整性、系統(tǒng)性,使之通俗易懂便于自學(xué),給實(shí)施課堂教學(xué)的主講老師以更多的靈活性,不講授部分可以指定學(xué)生自學(xué)或供學(xué)生參考閱讀?!督ㄖ悄芑到y(tǒng)及工程應(yīng)用》第1~9章為基本內(nèi)容,第10章是一個(gè)實(shí)際工程項(xiàng)目的設(shè)計(jì)范例,較完整地討論了一個(gè)中央集成管理系統(tǒng),有一定可操作性,可供學(xué)生參考。2100433B

管道是Linux/UNIX系統(tǒng)中比較原始的進(jìn)程間通信形式,它實(shí)現(xiàn)數(shù)據(jù)以一種數(shù)據(jù)流的方式,在多進(jìn)程間流動(dòng)。在系統(tǒng)中其相當(dāng)于文件系統(tǒng)上的一個(gè)文件,來緩存所要傳輸?shù)臄?shù)據(jù)。管道通信是最常見的通信方式之一,其是在兩個(gè)進(jìn)程之間實(shí)現(xiàn)一個(gè)數(shù)據(jù)流通的管道,該管道可以是雙向或單向的。

我們將僅能在一個(gè)方向上傳遞信息的管道稱為半雙工管道,將可在兩個(gè)方向上傳遞信息的管道稱為全雙工管道。管道是一種很經(jīng)典的進(jìn)程之間的通信方式,其優(yōu)點(diǎn)在于簡單易用,其缺點(diǎn)在于功能簡單,有很多限制。

進(jìn)程間通信相關(guān)推薦
  • 相關(guān)百科
  • 相關(guān)知識(shí)
  • 相關(guān)專欄

最新詞條

安徽省政采項(xiàng)目管理咨詢有限公司 數(shù)字景楓科技發(fā)展(南京)有限公司 懷化市人民政府電子政務(wù)管理辦公室 河北省高速公路京德臨時(shí)籌建處 中石化華東石油工程有限公司工程技術(shù)分公司 手持無線POS機(jī) 廣東合正采購招標(biāo)有限公司 上海城建信息科技有限公司 甘肅鑫禾國際招標(biāo)有限公司 燒結(jié)金屬材料 齒輪計(jì)量泵 廣州采陽招標(biāo)代理有限公司河源分公司 高鋁碳化硅磚 博洛尼智能科技(青島)有限公司 燒結(jié)剛玉磚 深圳市東海國際招標(biāo)有限公司 搭建香蕉育苗大棚 SF計(jì)量單位 福建省中億通招標(biāo)咨詢有限公司 泛海三江 威海鼠尾草 Excel 數(shù)據(jù)處理與分析應(yīng)用大全 廣東國咨招標(biāo)有限公司 甘肅中泰博瑞工程項(xiàng)目管理咨詢有限公司 山東創(chuàng)盈項(xiàng)目管理有限公司 當(dāng)代建筑大師 廣西北纜電纜有限公司 拆邊機(jī) 大山檳榔 上海地鐵維護(hù)保障有限公司通號(hào)分公司 甘肅中維國際招標(biāo)有限公司 舌花雛菊 湖北鑫宇陽光工程咨詢有限公司 GB8163標(biāo)準(zhǔn)無縫鋼管 中國石油煉化工程建設(shè)項(xiàng)目部 華潤燃?xì)猓ㄉ虾#┯邢薰? 韶關(guān)市優(yōu)采招標(biāo)代理有限公司 莎草目 建設(shè)部關(guān)于開展城市規(guī)劃動(dòng)態(tài)監(jiān)測工作的通知 電梯平層準(zhǔn)確度 廣州利好來電氣有限公司 四川中澤盛世招標(biāo)代理有限公司