




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、linux課程設(shè)計(jì)Linux課程設(shè)計(jì)報(bào)告專業(yè)班級(jí):學(xué)號(hào):姓名:使用共享內(nèi)存來(lái)完成進(jìn)程間通信一、 相關(guān)原理介紹分析1, 共享內(nèi)存的三種實(shí)現(xiàn)方式(1) POSIX共享內(nèi)存對(duì)象 :shm_open創(chuàng)建一個(gè)名稱為tmp的共享內(nèi)存區(qū)對(duì)象后,在/dev/shm/下可以看到對(duì)應(yīng)的文件(tmpfs的文件系統(tǒng)可以看成是直接對(duì)內(nèi)存操作,速度非???)。cat可以看到映射的內(nèi)容。進(jìn)程重啟共享內(nèi)存中數(shù)據(jù)不會(huì)丟失,內(nèi)核自舉或顯示調(diào)用shm_unlink或rm掉文件刪除后丟失 (2) POSIX文件映射:通過(guò)映射一個(gè)普通文件(匿名文件或一個(gè)打開的命名文件)實(shí)現(xiàn)共享內(nèi)存mmap()。該方式的特點(diǎn)接口簡(jiǎn)單,較通用??衫胏a
2、t查看映射的文件,要注意考慮進(jìn)程終止對(duì)通信的影響。該方式也是本實(shí)驗(yàn)使用的方式,下面將做具體表述。(3) systemV共享內(nèi)存:通過(guò)映射特殊存儲(chǔ)塊shm中的文件實(shí)現(xiàn)進(jìn)程間的共享內(nèi)存通信主要有以下幾個(gè)API:shmget()、shmat()、shmdt()及shmctl()。 本方式無(wú)法看到文件實(shí)體。進(jìn)程重啟共享內(nèi)存中數(shù)據(jù)不會(huì)丟失,內(nèi)核自舉或顯示調(diào)用shmdt或使用ipcrm刪除后丟失。 2, POSIX文件映射共享內(nèi)存簡(jiǎn)介 POSIX文件映射指mmapmmap()系統(tǒng)調(diào)用使得進(jìn)程之間通過(guò)映射同一個(gè)普通文件實(shí)現(xiàn)共享內(nèi)存。普通文件被映射到進(jìn)程地址空間后,進(jìn)程可以向訪問(wèn)普通內(nèi)存一樣對(duì)文件進(jìn)行訪問(wèn),不
3、必再調(diào)用read(),write()等操作。3,POSIX文件映射共享內(nèi)存實(shí)現(xiàn)方法(1)文件與address_space結(jié)構(gòu)的對(duì)應(yīng):一個(gè)具體的文件在打開后,內(nèi)核會(huì)在內(nèi)存中為之建立一個(gè)struct inode結(jié)構(gòu),其中的i_mapping域指向一個(gè)address_space結(jié)構(gòu)。這樣,一個(gè)文件就對(duì)應(yīng)一個(gè)address_space結(jié)構(gòu),一個(gè)address_space與一個(gè)偏移量能夠確定一個(gè)page cache 或swap cache中的一個(gè)頁(yè)面。因此,當(dāng)要尋址某個(gè)數(shù)據(jù)時(shí),很容易根據(jù)給定的文件及數(shù)據(jù)在文件內(nèi)的偏移量而找到相應(yīng)的頁(yè)面。(2)進(jìn)程調(diào)用mmap()時(shí),只是在進(jìn)程空間內(nèi)新增了一塊相應(yīng)大小的緩
4、沖區(qū),并設(shè)置了相應(yīng)的訪問(wèn)標(biāo)識(shí),但并沒(méi)有建立進(jìn)程空間到物理頁(yè)面的映射。4,主要函數(shù)介紹:(1) void* mmap ( void * addr , size_t len , int prot , int flags , int fd , off_t offset ) 返回值為最后文件映射到進(jìn)程空間的地址,進(jìn)程可直接操作起始地址 addr指定文件應(yīng)被映射到進(jìn)程空間的起始地址,一般被指定一個(gè)空指針,此時(shí)選擇起始地址的任務(wù)留給內(nèi)核來(lái)完成。len是映射到調(diào)用進(jìn)程地址空間的字節(jié)數(shù),它從被映射文件開頭offset個(gè)字節(jié)開始算起。prot 參數(shù)指定共享內(nèi)存的訪問(wèn)權(quán)限。 PROT_READ(可讀) , PRO
5、T_WRITE (可寫), PROT_EXEC (可執(zhí)行), PROT_NONE(不可訪問(wèn))。flags由以下幾個(gè)常值指定: MAP_SHARED , (與private選擇其一) MAP_PRIVATE , MAP_FIXED,(不推薦使用)fd為即將映射到進(jìn)程空間的文件描述字,一般由open()返回,同時(shí),fd可以指定為-1,此時(shí)須指定flags參數(shù)中的MAP_ANON,表明進(jìn)行的是匿名映射offset參數(shù)一般設(shè)為0,表示從文件頭開始映射。(2) int open( const char * pathname,int flags, mode_t mode); pathname 指向欲打開的
6、文件路徑字符串。 flags 所能使用的旗標(biāo):O_RDWR 以可讀寫方式打開文件。O_CREAT 若欲打開的文件不存在則自動(dòng)建立該文件。O_TRUNC 若文件存在并且以可寫的方式打開時(shí),此旗標(biāo)會(huì)令文件長(zhǎng)度清為0,而原來(lái)存于該文件的資料也會(huì)消失。Mode有多種組合, 只有在建立新文件時(shí)才會(huì)生效,此外真正建文件時(shí)的權(quán)限會(huì)受到umask值所影響,因此該文件權(quán)限應(yīng)該為(mode-umaks)。S_IRWXG 00777,代表具有可讀可寫可操作二,設(shè)計(jì)實(shí)現(xiàn)1, 功能介紹實(shí)現(xiàn)了共享內(nèi)存機(jī)制。在一個(gè)終端上運(yùn)行writer端,由于writer端得程序設(shè)置了八個(gè)緩沖區(qū),因此可以依次輸入,在另一個(gè)終端上運(yùn)行rea
7、der端,在reader端可以讀到數(shù)據(jù)并且屏幕輸出。實(shí)現(xiàn)了信號(hào)量同步機(jī)制。程序中應(yīng)用了信號(hào)量, reader端和writer端不能同時(shí)對(duì)同一緩沖區(qū)進(jìn)行操作。2, 程序結(jié)構(gòu)框圖 54321 文件While循環(huán)Psem();讀緩沖區(qū)Vsem();While循環(huán)Psem();寫緩沖區(qū)Vsem();fd ();打開文件mmap()初始化緩沖區(qū)獲得首地址fd ();打開文件mmap()初始化緩沖區(qū)獲得首地址3,程序代碼(1)寫者程序: #define NRBUF 8 w 和 ./r ,則會(huì)出現(xiàn)以下界面(3)在終端一上的提示處 輸入 隨意字符,則在 終端二會(huì)得到相應(yīng)的輸出(4)終端一中依然會(huì)提示輸入內(nèi)容,
8、因?yàn)橐还灿邪藗€(gè)緩沖區(qū),最后會(huì)出現(xiàn)循環(huán)緩沖區(qū)的問(wèn)題3, 出現(xiàn)的問(wèn)題及解決辦法(1) 總線錯(cuò)誤:該錯(cuò)誤出現(xiàn)的原因是由內(nèi)存未對(duì)齊的讀和寫導(dǎo)致的。出現(xiàn)在程序初運(yùn)行時(shí),出現(xiàn)的原因是,reader 函數(shù)的open 方法中flag多加了一個(gè)參數(shù)O_TRUNC ,該參數(shù)的作用是,若文件存在并且以可寫的方式打開時(shí),此旗標(biāo)會(huì)令文件長(zhǎng)度清為0,而原來(lái)存于該文件的資料也會(huì)消失。所以經(jīng)常出現(xiàn),文件中已經(jīng)寫入了東西,但是進(jìn)行讀操作后,文件中的數(shù)據(jù)馬上消失,并且讀不出來(lái),出現(xiàn)總線錯(cuò)誤(2) 段錯(cuò)誤:該錯(cuò)誤就是指訪問(wèn)的內(nèi)存超出了系統(tǒng)所給這個(gè)程序的內(nèi)存空間,經(jīng)常出現(xiàn)在指針的問(wèn)題上,由于對(duì)于指針的掌握較于薄弱。如 對(duì)于字符類型,不能用“%d”來(lái)輸出。即不同數(shù)據(jù)類型不能混用。還有就是MMap()函數(shù)的返回值需要 進(jìn)行強(qiáng)制轉(zhuǎn)化,否則也會(huì)出現(xiàn)段錯(cuò)誤。即出現(xiàn)段錯(cuò)誤的地方多是 指針操作的地方。4, 總結(jié):(1),基礎(chǔ)知識(shí)掌握不夠牢固,對(duì)于C語(yǔ)言的程序編寫 在之前沒(méi)有 深入研究過(guò),用到的時(shí)候就捉襟見肘,作為一項(xiàng)基本的編程語(yǔ)言,以后還需要多加掌握。(2)對(duì)于linux的操作不夠熟練,浪費(fèi)了很多時(shí)間,以及在出現(xiàn)問(wèn)題之后經(jīng)常
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廉潔從教培訓(xùn)課件圖片
- 2025-2030多功能麻將桌行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及競(jìng)爭(zhēng)格局與投資戰(zhàn)略研究報(bào)告
- 2025至2030中國(guó)船用內(nèi)燃機(jī)行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030修指甲套行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 新時(shí)代基層黨組織保障科研使命的機(jī)制探索
- 2025至2030中國(guó)服裝鉚釘行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025至2030商業(yè)宣傳品行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025年04月哈爾濱醫(yī)科大學(xué)附屬第六醫(yī)院(利民中心醫(yī)院)公開招聘工作人員180人筆試歷年專業(yè)考點(diǎn)(難、易錯(cuò)點(diǎn))附帶答案詳解
- 2025至2030全球及中國(guó)汽車夾行業(yè)運(yùn)營(yíng)態(tài)勢(shì)與投資前景調(diào)查研究報(bào)告
- 2024年12月江蘇南京銀行泰州分行長(zhǎng)期社會(huì)招考筆試歷年參考題庫(kù)附帶答案詳解
- 兵團(tuán)開放大學(xué)2025年春季《公共關(guān)系學(xué)》終結(jié)考試答案
- 電線電纜出入庫(kù)管理制度
- T/CADCC 003-2024汽車漆面保護(hù)膜施工技術(shù)規(guī)程
- 中國(guó)機(jī)器人工程市場(chǎng)調(diào)研報(bào)告2025
- 2025年金融科技企業(yè)估值方法與投資策略在金融科技企業(yè)并購(gòu)中的應(yīng)用案例報(bào)告
- 福建省廈門市雙十中學(xué)2025屆七年級(jí)生物第二學(xué)期期末聯(lián)考模擬試題含解析
- 【小學(xué)】新蘇教版小學(xué)數(shù)學(xué)四年級(jí)下冊(cè)暑假每日一練(02):計(jì)算題-應(yīng)用題(含答案)
- 2025豬藍(lán)耳病防控及凈化指南(第三版)
- TCUWA20059-2022城鎮(zhèn)供水管網(wǎng)模型構(gòu)建與應(yīng)用技術(shù)規(guī)程
- 2025至2030中國(guó)壓縮空氣儲(chǔ)能產(chǎn)業(yè)現(xiàn)狀調(diào)查及項(xiàng)目投資策略建議報(bào)告
- 三臺(tái)縣2024-2025學(xué)年小學(xué)六年級(jí)數(shù)學(xué)畢業(yè)檢測(cè)指導(dǎo)卷含解析
評(píng)論
0/150
提交評(píng)論