




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
..操作系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告冊(cè)______教師:褚華..目錄實(shí)驗(yàn)說(shuō)明 重要提示 實(shí)驗(yàn)1 系統(tǒng)調(diào)用實(shí)驗(yàn)2內(nèi)核模塊實(shí)驗(yàn)3 文件系統(tǒng)實(shí)驗(yàn)4設(shè)備管理實(shí)驗(yàn)說(shuō)明實(shí)驗(yàn)做為學(xué)習(xí)的重要促進(jìn)手段,是為了深化對(duì)理論的理解,鍛煉實(shí)踐動(dòng)手能力。實(shí)驗(yàn)同時(shí)也作為考核的手段。實(shí)驗(yàn)內(nèi)容會(huì)在課程進(jìn)行中下達(dá),并且會(huì)分次地、部分地被抽查。課程結(jié)束時(shí),要求把所有的實(shí)驗(yàn)整理成一個(gè)完整的電子文檔并上交,做為最后成績(jī)的評(píng)定依據(jù)。如果有興趣的合適的題目,也可自己選題目。格式說(shuō)明本文檔文件名命名為"學(xué)號(hào)-姓名",如"13071000_小王"。留白部分不足的自己調(diào)整長(zhǎng)度,也可加頁(yè)〔增加內(nèi)容應(yīng)在表格內(nèi)。每次的實(shí)驗(yàn)報(bào)告都要在這個(gè)文件中〔按照實(shí)驗(yàn)次序依次增加,而不是每次一個(gè)新的word文件。本文檔保存為doc格式〔請(qǐng)勿用Word2007的docx格式。重要提示:實(shí)驗(yàn)正文建議使用小四號(hào)或五號(hào)宋體。若附加圖形,則請(qǐng)直接嵌入到實(shí)驗(yàn)手冊(cè)相應(yīng)位置。各實(shí)驗(yàn)的源程序,請(qǐng)按實(shí)驗(yàn)分目錄存放,如第一個(gè)實(shí)驗(yàn)的源程序存放在目錄lab1下,第二個(gè)實(shí)驗(yàn)的源程序存放在目錄lab2下等等,依次類推??苫ハ嘤懻?但嚴(yán)禁抄襲網(wǎng)絡(luò)或同學(xué)的實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)編號(hào)1題目系統(tǒng)調(diào)用實(shí)驗(yàn)?zāi)康臑長(zhǎng)inux內(nèi)核增加一個(gè)系統(tǒng)調(diào)用,并編寫用戶進(jìn)程的程序來(lái)測(cè)試要求該系統(tǒng)調(diào)用能夠完成以下功能:1.該系統(tǒng)調(diào)用有1個(gè)int型參數(shù),返回值為int。2.若參數(shù)為偶數(shù),則輸出自己學(xué)號(hào)后四位3.若參數(shù)為奇數(shù),則輸出自己學(xué)號(hào)的后五位實(shí)驗(yàn)內(nèi)容1.系統(tǒng)調(diào)用的實(shí)現(xiàn)2.增加系統(tǒng)調(diào)用3.Linux內(nèi)核的構(gòu)建報(bào)告內(nèi)容要求<1>實(shí)現(xiàn)方法和思路<2>測(cè)試及結(jié)果報(bào)告正文要給linux增加系統(tǒng)調(diào)用,可以用修改內(nèi)核源碼并重新編譯的方法實(shí)現(xiàn)一:基本過(guò)程是在系統(tǒng)調(diào)用表文件中給要增加的一個(gè)系統(tǒng)調(diào)用的名字在系統(tǒng)調(diào)用號(hào)文件中給要新增的系統(tǒng)調(diào)用分配一個(gè)系統(tǒng)調(diào)用號(hào)增加系統(tǒng)調(diào)用聲明添加系統(tǒng)調(diào)用的實(shí)現(xiàn)重新編譯內(nèi)核編寫測(cè)試驅(qū)動(dòng)函數(shù),測(cè)試系統(tǒng)調(diào)用是否添加成功一:在系統(tǒng)調(diào)用表文件中增加系統(tǒng)調(diào)用的名字二:在系統(tǒng)調(diào)用號(hào)文件中給要新增的系統(tǒng)調(diào)用分配一個(gè)系統(tǒng)調(diào)用號(hào)三:增加系統(tǒng)調(diào)用聲明四:添加系統(tǒng)調(diào)用的實(shí)現(xiàn)要為linux內(nèi)核增加系統(tǒng)調(diào)用,首先必須要實(shí)現(xiàn)系統(tǒng)的內(nèi)核調(diào)用也就是提供功能的一個(gè)函數(shù)根據(jù)題目要求,當(dāng)給改系統(tǒng)調(diào)用傳遞int參數(shù)為奇數(shù)時(shí)輸出自己學(xué)號(hào)的后五位,當(dāng)系統(tǒng)調(diào)用接受的參數(shù)為偶數(shù)時(shí),輸出自己學(xué)號(hào)的后四位所以,系統(tǒng)調(diào)用的實(shí)現(xiàn)如下可以看到系統(tǒng)調(diào)用的實(shí)現(xiàn)同基本的C語(yǔ)言沒(méi)多大差別,只是能使用的庫(kù)不一樣在linux內(nèi)核中的代碼不能使用標(biāo)準(zhǔn)C庫(kù),只能使用內(nèi)核提供的庫(kù)所以能調(diào)用的函數(shù)會(huì)有不同最后實(shí)現(xiàn)代碼如下當(dāng)參數(shù)num為偶數(shù)時(shí)輸出2257也就是學(xué)號(hào)的后四位當(dāng)參數(shù)為奇數(shù)時(shí)輸出12257也就是學(xué)號(hào)的后四位可以看到輸出函數(shù)式printk而不是printf,因?yàn)樵趦?nèi)核中不能使用標(biāo)準(zhǔn)C函數(shù)五:編譯內(nèi)核六:測(cè)試系統(tǒng)調(diào)用測(cè)試驅(qū)動(dòng)函數(shù)如下測(cè)試輸出如下由于在系統(tǒng)調(diào)用實(shí)現(xiàn)時(shí)忘記在末尾加換行符了。。所以輸出的兩個(gè)是在一行的也就是2257和12257,但是可以看到系統(tǒng)調(diào)用時(shí)實(shí)現(xiàn)了的。實(shí)驗(yàn)編號(hào)2題目?jī)?nèi)核模塊實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)linux內(nèi)核模塊的編寫及加載的方法理解linux內(nèi)核模塊的機(jī)制實(shí)驗(yàn)內(nèi)容編寫linux內(nèi)核模塊并測(cè)試編寫可以帶參數(shù)的linux內(nèi)核模塊并測(cè)試使用內(nèi)核模塊的方法為linux增加系統(tǒng)調(diào)用用內(nèi)核模塊的方法完成實(shí)驗(yàn)1的內(nèi)報(bào)告內(nèi)容要求<1>實(shí)現(xiàn)方法和思路<2>測(cè)試及結(jié)果報(bào)告正文實(shí)驗(yàn)內(nèi)容:編寫一個(gè)內(nèi)核模塊;編譯該模塊;加載、卸載該模塊;實(shí)驗(yàn)步驟:新建模塊目錄用編輯器〔vi編輯源文件分析:模塊入口函數(shù)為hello_init<>,由module_init<>宏指定,在模塊被加載的時(shí)候被調(diào)用向系統(tǒng)注冊(cè)。入口函數(shù)的返回值:0表示成功,非0表示失敗。模塊的退出函數(shù)為hello_exit<>,由module_exit<>宏指定,在模塊被卸載時(shí)被調(diào)用向系統(tǒng)注銷,主要來(lái)完成資源的清理工作。它被調(diào)用完畢后,就模塊就被內(nèi)核清除了。一個(gè)模塊最少需要有入口和退出函數(shù)。2.4內(nèi)核后,引入識(shí)別代碼是否在GPL許可下發(fā)布的機(jī)制。在使用非公開的源代碼產(chǎn)品時(shí)會(huì)得到警告。通過(guò)宏MODULE_LICENSE<"GPL">,設(shè)置模塊遵守GPL證書,取消警告信息。宏MODULE_DESCRIPTION<>用來(lái)描述模塊的用途。宏MODULE_AUTHOR<>用來(lái)聲明模塊的作者。宏MODULE_SUPPORTED_DEVICE<>聲明模塊支持的設(shè)備。這些宏都在頭文件linux/module.h定義,使用這些宏只是用來(lái)提供識(shí)別信息。用編輯器編輯Makefile編譯模塊加載刪除模塊dmesg輸出信息帶參數(shù)的模塊傳入?yún)?shù)輸出結(jié)果內(nèi)容二:用內(nèi)核模塊的方式為系統(tǒng)添加一個(gè)系統(tǒng)調(diào)用為L(zhǎng)inux內(nèi)核增加一個(gè)系統(tǒng)調(diào)用,并編寫用戶進(jìn)程的程序來(lái)測(cè)試。要求該系統(tǒng)調(diào)用夠完成以下功能:1.該系統(tǒng)調(diào)用有1個(gè)int型參數(shù),返回值為int。2.若參數(shù)為偶數(shù),則輸出自己學(xué)號(hào)后四位3.若參數(shù)為奇數(shù),則輸出自己學(xué)號(hào)的后五位基本思路就是通過(guò)修改系統(tǒng)調(diào)用參數(shù)表所在的內(nèi)存地址并加入系統(tǒng)調(diào)用即可實(shí)驗(yàn)編號(hào)3題目文件系統(tǒng)實(shí)驗(yàn)?zāi)康牧私?proc文件系統(tǒng)掌握修改/proc文件系統(tǒng)的方法利用/proc與內(nèi)核交互創(chuàng)建以及使用/proc文件實(shí)驗(yàn)內(nèi)容利用/proc與內(nèi)核交互利用內(nèi)核模塊方法創(chuàng)建/proc文件報(bào)告內(nèi)容要求<1>實(shí)現(xiàn)方法和思路<2>測(cè)試及結(jié)果報(bào)告正文實(shí)驗(yàn)一:本實(shí)驗(yàn)只使用標(biāo)準(zhǔn)C函數(shù)進(jìn)行修改/proc文件也就是說(shuō)直接readwrite/proc里的文件從而達(dá)到與內(nèi)核交互的目的代碼如下輸出結(jié)果可以看到實(shí)現(xiàn)了功能完成了hostname文件的修改內(nèi)容二:通過(guò)內(nèi)核的/proc編程接口進(jìn)行/proc文件的操作本試驗(yàn)通過(guò)構(gòu)造可加載內(nèi)核模塊,通過(guò)內(nèi)核的/proc編程接口進(jìn)行/proc文件的操作需要用到的基本函數(shù)有structproc_dir_entry*create_proc_entry<constchar*name,mode_tmode,structproc_dir_entry*parent>這個(gè)函數(shù)創(chuàng)建一個(gè)/proc文件structproc_dir_entry*create_proc_read_entry<constchar*name,mode_tmode,structproc_dir_entry*base,read_proc_t*read_proc,void*data>這個(gè)函數(shù)創(chuàng)建一個(gè)/proc的只讀文件structproc_dir_entry*proc_mkdir<constchar*name,structproc_dir_entry*parent>這個(gè)函數(shù)創(chuàng)建一個(gè)/proc目錄刪除節(jié)點(diǎn)〔文件或者目錄remove_proc_entry<>voidremove_proc_entry<constchar*name,structproc_dir_entry*parent>該函數(shù)將刪除一個(gè)proc節(jié)點(diǎn)〔按文件名刪除以上函數(shù)只能創(chuàng)建一個(gè)文件,要想使創(chuàng)建的文件發(fā)揮作用,還有兩個(gè)域的值需要填寫,它們是read_proc和write_proc。該兩個(gè)函數(shù)都是回調(diào)函數(shù),當(dāng)對(duì)文件進(jìn)行讀寫時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用相應(yīng)的回調(diào)函數(shù)。可以使用write_proc函數(shù)向/proc中寫入一項(xiàng)。這個(gè)函數(shù)的原型如下int<*write_proc><structfile*file,constchar*buffer,unsignedlongcount,void*data>file參數(shù)實(shí)際上是一個(gè)打開文件結(jié)構(gòu)〔我們可以忽略這個(gè)參數(shù)。buffer參數(shù)是傳遞給您的字符串?dāng)?shù)據(jù)。緩沖區(qū)地址實(shí)際上是一個(gè)用戶空間的緩沖區(qū),因此我們不能直接讀取它。count參數(shù)定義了在buff中有多少數(shù)據(jù)要被寫入。data參數(shù)是一個(gè)指向私有數(shù)據(jù)的指針可以使用read_proc函數(shù)從一個(gè)/proc項(xiàng)中讀取數(shù)據(jù)〔從內(nèi)核空間到用戶空間。這個(gè)函數(shù)的原型如下:int<*read_proc><char*page,char**start,off_toff,intcount,int*eof,void*data>page參數(shù)是這些數(shù)據(jù)寫入到的位置,其中count定義了可以寫入的最大字符數(shù)。在返回多頁(yè)數(shù)據(jù)〔通常一頁(yè)是4KB時(shí),我們需要使用start和off參數(shù)。當(dāng)所有數(shù)據(jù)全部寫入之后,就需要設(shè)置eof〔文件結(jié)束參數(shù)。與write類似,data表示的也是私有數(shù)據(jù)。此處提供的page緩沖區(qū)在內(nèi)核空間中。實(shí)驗(yàn)代碼如下可以看到代碼創(chuàng)建一個(gè)/proc13121257的目錄并且創(chuàng)建兩個(gè)文件以及一個(gè)link文件結(jié)果如下若對(duì)文件進(jìn)行讀寫操作則如下顯示實(shí)驗(yàn)編號(hào)4題目設(shè)備管理實(shí)驗(yàn)?zāi)康牧私鈒inux設(shè)備文件了解linux設(shè)備驅(qū)動(dòng)程序的編寫實(shí)驗(yàn)內(nèi)容1.實(shí)現(xiàn)一個(gè)linux字符設(shè)備驅(qū)動(dòng)文件報(bào)告內(nèi)容要求<1>實(shí)現(xiàn)方法和思路<2>測(cè)試及結(jié)果報(bào)告正文1.首先了解linux設(shè)備驅(qū)動(dòng)文件的基本數(shù)據(jù)結(jié)構(gòu)內(nèi)核設(shè)備驅(qū)動(dòng)程序表結(jié)構(gòu)<infs/devices.c>structdevice_struct{
constchar*name;//devicename
structfile_operations*fops;
};字符設(shè)備驅(qū)動(dòng)程序的基本操作和數(shù)據(jù)結(jié)構(gòu)2.字符設(shè)備驅(qū)動(dòng)程序:設(shè)備表:全局?jǐn)?shù)組chrdevs[255],主設(shè)備號(hào)是它的下標(biāo)登記:register_chrdev<>/unregister_chrdev<>缺省操作集合:file_ops:def_chr_fops,僅定義了open方法;inode_ops:chrdev_inode_operations,僅定義了其中的file_operation=&def_chr_fops.三:關(guān)鍵代碼實(shí)現(xiàn)了驅(qū)動(dòng)程序的初始化以及退出清理函數(shù)在初始化中用regist
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畜牧良種繁殖生物技術(shù)在育種中的應(yīng)用考核試卷
- 統(tǒng)編版語(yǔ)文六年級(jí)下冊(cè)《語(yǔ)文園地五》精美課件
- 礦物加工廠的生產(chǎn)調(diào)度與優(yōu)化-石墨滑石考核試卷
- 漆器工藝品在新時(shí)代的傳播途徑探索考核試卷
- 稀土金屬在高溫超導(dǎo)材料的應(yīng)用考核試卷
- 玻璃風(fēng)力發(fā)電葉片維修考核試卷
- 深圳高二期末語(yǔ)文作文5篇
- 紡織品的智能生產(chǎn)數(shù)據(jù)集成與管理策略優(yōu)化與實(shí)施考核試卷
- 石灰在金屬表面預(yù)處理中的應(yīng)用考核試卷
- 紡織原料價(jià)格波動(dòng)考核試卷
- 2025山東省港口集團(tuán)有限公司招聘183人筆試參考題庫(kù)附帶答案詳解
- 2025青桐鳴高三4月大聯(lián)考數(shù)學(xué)試題及答案
- 2025年上海房屋租賃合同模板
- 初級(jí)會(huì)計(jì)師考試歷年真題試題及答案
- 水利部珠江水利委員會(huì)所屬事業(yè)單位招聘筆試真題2024
- 甘肅省2025年甘肅高三月考試卷(四4月)(甘肅二診)(英語(yǔ)試題+答案)
- 2025年河南建筑職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2019-2024歷年真題考點(diǎn)試卷含答案解析
- 企業(yè)交叉作業(yè)協(xié)議書
- 《航空工程技術(shù)英語(yǔ)》課件-Chapter 12 Flight Control教學(xué)課件:Flight Control + Auto Flight Control
- 真需求-打開商業(yè)世界的萬(wàn)能鑰匙
- 2025屆湖北省武漢市高考數(shù)學(xué)一模試卷含解析
評(píng)論
0/150
提交評(píng)論