




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
進(jìn)程間通信實(shí)驗(yàn)報(bào)告班級(jí):10網(wǎng)工三班學(xué)生姓名:謝昊天學(xué)號(hào):實(shí)驗(yàn)?zāi)康暮鸵?guī)定:Linux系統(tǒng)的進(jìn)程通信機(jī)構(gòu)(IPC)允許在任意進(jìn)程間大批量地互換數(shù)據(jù)。本實(shí)驗(yàn)的目的是了解和熟悉Linux支持的消息通訊機(jī)制及信息量機(jī)制。實(shí)驗(yàn)內(nèi)容與分析設(shè)計(jì):(1)消息的創(chuàng)建,發(fā)送和接受。①使用系統(tǒng)調(diào)用msgget(),msgsnd(),msgrev(),及msgc11()編制一長(zhǎng)度為Ik的消息的發(fā)送和接受程序。②觀測(cè)上面的程序,說明控制消息隊(duì)列系統(tǒng)調(diào)用msgctl()在此起什么作用?(2)共享存儲(chǔ)區(qū)的創(chuàng)建、附接和段接。使用系統(tǒng)調(diào)用shmget(),shmat(),sgmdt(),shmctl(),編制一個(gè)與上述功能相同的程序。(3)比較上述(1),(2)兩種消息通信機(jī)制中數(shù)據(jù)傳輸?shù)臅r(shí)間。實(shí)驗(yàn)環(huán)節(jié)與調(diào)試過程:.消息的創(chuàng)建,發(fā)送和接受:(1)先后通過fork()兩個(gè)子進(jìn)程,SERVER和CLIENT進(jìn)行通信。(2)在SERVER端建立一個(gè)Key為75的消息隊(duì)列,等待其他進(jìn)程發(fā)來的消息。當(dāng)碰到類型為I的消息,則作為結(jié)束信號(hào),取消該隊(duì)列,并退出SERVERoSERVER每接受到一個(gè)消息后顯示一句“(servcr)reccived"。(3)CLIENT端使用Key為75的消息隊(duì)歹人先后發(fā)送類型從10到1的消息,然后退出。最后的一個(gè)消息,既是SERVER端需要的結(jié)束信號(hào)。CLIENT每發(fā)送一條消息后顯示一句”(client)seni”。(4)父進(jìn)程在SERVER和CLIENT均退出后結(jié)束。.共享存儲(chǔ)區(qū)的創(chuàng)建,附接和斷接:(1)先后通過fork()兩個(gè)子進(jìn)程,SERVER和CLIENT進(jìn)行通信。(2)SERVER端建立一個(gè)KEY為75的共享區(qū),并將第一個(gè)字節(jié)置為-1。作為數(shù)據(jù)空的標(biāo)志.等待其他進(jìn)程發(fā)來的消息.當(dāng)該字節(jié)的值發(fā)生變化時(shí),表達(dá)收到了該消息,進(jìn)行解決.然后再次把它的值設(shè)為一I.假如碰到的值為0,則視為結(jié)束信號(hào),取消該隊(duì)歹IJ,并退出SERVER.SERVER每接受到一次數(shù)據(jù)后顯示“(server)received”.(3)CLIENT端建立一個(gè)為75的共享區(qū),當(dāng)共享取得第一個(gè)字節(jié)為一1時(shí),Server端空閑,可發(fā)送請(qǐng)求.CLIENT隨即填入9到0.期間等待Server端再次空閑.進(jìn)行完這些操作后,CLIENT退出.CLIENT每發(fā)送一次數(shù)據(jù)后顯示“(c1ient)sent”.(4)父進(jìn)程在SERVER和CLIENT均退出后結(jié)束。實(shí)驗(yàn)結(jié)果:.消息的創(chuàng)建,發(fā)送和接受:由Client發(fā)送兩條消息,然后Scrvcr接受一條消息。此后ClientServcr交替發(fā)送和接受消息。最后一次接受兩條消息。Client和Server分別發(fā)送和接受了10條消息。message的傳送和控制并不保證完全同步,當(dāng)?個(gè)程序不再激活狀態(tài)的時(shí)候,它完全也許繼續(xù)睡眠,導(dǎo)致上面現(xiàn)象。在多次sendmessage后才receivemessage.這一點(diǎn)有助于理解消息轉(zhuǎn)送的實(shí)現(xiàn)機(jī)理。.共享存儲(chǔ)區(qū)的創(chuàng)建,附接和斷接:在運(yùn)營的過程中,發(fā)現(xiàn)每當(dāng)client發(fā)送一次數(shù)據(jù)后,server要等大約0.1秒才有響應(yīng)。同樣,之后client又需要等待大約0.1秒才發(fā)送下一個(gè)數(shù)據(jù)。出現(xiàn)上述的應(yīng)答延遲的現(xiàn)象是程序設(shè)計(jì)的問題。當(dāng)clienl端發(fā)送了數(shù)據(jù)后,并沒有任何措施告知server端數(shù)據(jù)已經(jīng)發(fā)出,需要由c1ient的查詢才干感知。此時(shí),client端并沒有放棄系統(tǒng)的控制權(quán),仍然占用CPU的時(shí)間片。只有當(dāng)系統(tǒng)進(jìn)行調(diào)度時(shí),切換到了server進(jìn)程,再進(jìn)行應(yīng)答。這個(gè)問題,也同樣存在于server端到client的應(yīng)答過程之中。3比較兩種消息通信機(jī)制中的數(shù)據(jù)傳輸?shù)臅r(shí)間:由于兩種機(jī)制實(shí)現(xiàn)的機(jī)理和用處都不同樣,難以直接進(jìn)行時(shí)間上的比較。假如比較其性能,應(yīng)更加全面的分析。(1)消息隊(duì)列的建立比共享區(qū)的設(shè)立消耗的資源少.前者只是一個(gè)軟件上設(shè)定的問題,后者需要對(duì)硬件操作,實(shí)現(xiàn)內(nèi)存的映像,當(dāng)然控制起來比前者復(fù)雜.假如每次都重新進(jìn)行隊(duì)列或共享的建立,共享區(qū)的設(shè)立沒有什么優(yōu)勢(shì)。⑵當(dāng)消息隊(duì)列和共享區(qū)建立好后,共享區(qū)的數(shù)據(jù)傳輸,受到了系統(tǒng)硬件的支持,不花費(fèi)多余的資源;而消息傳遞,由軟件進(jìn)行控制和實(shí)現(xiàn),需要消耗?定的CPU資源.從這個(gè)意義上講,共享區(qū)更適合頻繁和大量的數(shù)據(jù)傳輸。⑶消息的傳遞,自身就帶有同步的控制.當(dāng)?shù)鹊较⒌臅r(shí)候,進(jìn)程進(jìn)入睡眠狀態(tài),不再消耗CPU資源.而共享隊(duì)列假如不借助其他機(jī)制進(jìn)行同步,接受數(shù)據(jù)的一方必須進(jìn)行不斷的查詢舊白浪費(fèi)了大量的CPU資源.可見消息方式的使用更加靈活。疑難小結(jié):通過本次實(shí)驗(yàn)讓我了解了進(jìn)程間通信,message的傳送和控制并不保證完全同步,當(dāng)一個(gè)程序不再激活狀態(tài)的時(shí)候,它完全也許繼續(xù)睡眠,在多次sendmessage后才receivemessage.這一點(diǎn)有助于理解消息轉(zhuǎn)送的實(shí)現(xiàn)機(jī)理。并且了解了只有當(dāng)系統(tǒng)進(jìn)行調(diào)度時(shí),切換到了server進(jìn)程,再進(jìn)行應(yīng)答。這個(gè)問題,也同樣存在于server端到client的應(yīng)答過程之中。加深了對(duì)進(jìn)程概念的理解,明確進(jìn)程間通信的原理,進(jìn)一步結(jié)識(shí)并發(fā)執(zhí)行的實(shí)質(zhì)。鞏固了課本上所學(xué)到的知識(shí)。重要算法和程序清單:1.消息的創(chuàng)建,發(fā)送和接受:include<stdio.h>inelude<sys/types.h>include<sys/msg.h>inc1ude<sys/ipc.h>
#defineMSGKEY75/*定義關(guān)鍵詞MEGKEY*/#defineMSGKEY75/*定義關(guān)鍵詞MEGKEY*/Iongmtype;?charmtexc[100]:}msg;/*消息結(jié)構(gòu)*//火文本長(zhǎng)度*/intmsgqidj:voidCLIENT()/*消息結(jié)構(gòu)*//火文本長(zhǎng)度*/inti;msgqid=msgget(MSGKEY,0777IIPC_CREAT);for(i=10;i>=l;i-)?{。msg.mtype=i;printf(*'(c1ient)sent\n");gmsgsnd(msgqid,&msg,1030,0);/*發(fā)送消息msg入msgid消息隊(duì)列文/exit(0);)voidSERVER()(msgqid=msgget(MSGKEY0777|IPC_CREAT);/*由關(guān)鍵字獲得消息隊(duì)列*/domsgrev(msgqid,&msg,1030,0,0);/火從隊(duì)列msgid接受消息msg*/。printf("(server)receive\n");}while(msg.mtype!=1);/*消息類型為1時(shí),釋放隊(duì)列*/msgctl(msgqid,IPC_RMID,0);}main()(if(fork())(SERVER();?wait(0);)oelseCLIENT();)2.共享存儲(chǔ)區(qū)的創(chuàng)建,附接和斷接:inc1ude<sys/types.h>inc1ude<sys/msg.h>include<sys/ipc.h>#dcfincSHMKEY75/*定義共享區(qū)關(guān)鍵詞*/intshmid,i;int火addr;CLIENT()intshmid=shmget(SHMKEYJO24,0777|IPC.CREAT);/*獲取共享區(qū),長(zhǎng)度1024,關(guān)鍵詞SHMKEY*/?addr=shmat(shmid,O,0);/*共享區(qū)起始地址為addr*/。for(i=9;i>=0;i—)。o|0owhile(*addr!=-1);。printf("(client)sent\n");/大打.印(clienl)sent*/?。*addr=i;/*把i賦給addroexit(0);1SERVER(){do0{0mwhile(*addr==-1)?gprintf("(server)received\n%d",*addr);/*服務(wù)進(jìn)程使用共享區(qū)*/if(*addr!=0)*addr=-1;}whi1e(*addr);。wait(0):shmctl(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 逆變一體機(jī)基礎(chǔ)施工方案
- 上海倍發(fā)信息科技有限公司股東全部權(quán)益價(jià)值資產(chǎn)評(píng)估報(bào)告
- 建元信托2024年度審計(jì)報(bào)告及財(cái)務(wù)報(bào)表
- 澄海區(qū)中學(xué)初二數(shù)學(xué)試卷
- 政策支持與智能制造的推動(dòng)策略及實(shí)施路徑
- 醫(yī)療機(jī)構(gòu)水污染物排放實(shí)施方案的評(píng)估與改進(jìn)
- 高中生物教學(xué)中滲透人文教育的有效途徑微探
- 推動(dòng)高質(zhì)量共建一帶一路的策略及實(shí)施路徑
- 2025屋頂分布式光伏發(fā)電項(xiàng)目驗(yàn)收規(guī)范
- 2025年比特幣投資合作協(xié)議書
- 血液透常見并發(fā)癥及處理課件
- 全國中小學(xué)幼兒園教職工安全素養(yǎng)培訓(xùn)課程試題
- 長(zhǎng)輸管道工程施工組織設(shè)計(jì)
- 說課比賽一等獎(jiǎng)《醫(yī)用化學(xué)》說課課件
- 靜設(shè)備安裝課件(PPT 91頁)
- 英格索蘭空壓機(jī)知識(shí)
- 2022年度高等學(xué)校科學(xué)研究?jī)?yōu)秀成果獎(jiǎng)(科學(xué)技術(shù))提名工作手冊(cè)
- 完整版地下人防工程施工方案
- (完整word版)格拉布斯(Grubbs)臨界值表
- 汽車離合器的檢測(cè)與維修畢業(yè)論文
- 國家自然科學(xué)基金項(xiàng)目預(yù)算說明書
評(píng)論
0/150
提交評(píng)論