版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
..操作系統(tǒng)課程設(shè)計實(shí)驗(yàn)報告冊______教師:褚華..目錄實(shí)驗(yàn)說明 重要提示 實(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)說明實(shí)驗(yàn)做為學(xué)習(xí)的重要促進(jìn)手段,是為了深化對理論的理解,鍛煉實(shí)踐動手能力。實(shí)驗(yàn)同時也作為考核的手段。實(shí)驗(yàn)內(nèi)容會在課程進(jìn)行中下達(dá),并且會分次地、部分地被抽查。課程結(jié)束時,要求把所有的實(shí)驗(yàn)整理成一個完整的電子文檔并上交,做為最后成績的評定依據(jù)。如果有興趣的合適的題目,也可自己選題目。格式說明本文檔文件名命名為"學(xué)號-姓名",如"13071000_小王"。留白部分不足的自己調(diào)整長度,也可加頁〔增加內(nèi)容應(yīng)在表格內(nèi)。每次的實(shí)驗(yàn)報告都要在這個文件中〔按照實(shí)驗(yàn)次序依次增加,而不是每次一個新的word文件。本文檔保存為doc格式〔請勿用Word2007的docx格式。重要提示:實(shí)驗(yàn)正文建議使用小四號或五號宋體。若附加圖形,則請直接嵌入到實(shí)驗(yàn)手冊相應(yīng)位置。各實(shí)驗(yàn)的源程序,請按實(shí)驗(yàn)分目錄存放,如第一個實(shí)驗(yàn)的源程序存放在目錄lab1下,第二個實(shí)驗(yàn)的源程序存放在目錄lab2下等等,依次類推??苫ハ嘤懻?但嚴(yán)禁抄襲網(wǎng)絡(luò)或同學(xué)的實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)編號1題目系統(tǒng)調(diào)用實(shí)驗(yàn)?zāi)康臑長inux內(nèi)核增加一個系統(tǒng)調(diào)用,并編寫用戶進(jìn)程的程序來測試要求該系統(tǒng)調(diào)用能夠完成以下功能:1.該系統(tǒng)調(diào)用有1個int型參數(shù),返回值為int。2.若參數(shù)為偶數(shù),則輸出自己學(xué)號后四位3.若參數(shù)為奇數(shù),則輸出自己學(xué)號的后五位實(shí)驗(yàn)內(nèi)容1.系統(tǒng)調(diào)用的實(shí)現(xiàn)2.增加系統(tǒng)調(diào)用3.Linux內(nèi)核的構(gòu)建報告內(nèi)容要求<1>實(shí)現(xiàn)方法和思路<2>測試及結(jié)果報告正文要給linux增加系統(tǒng)調(diào)用,可以用修改內(nèi)核源碼并重新編譯的方法實(shí)現(xiàn)一:基本過程是在系統(tǒng)調(diào)用表文件中給要增加的一個系統(tǒng)調(diào)用的名字在系統(tǒng)調(diào)用號文件中給要新增的系統(tǒng)調(diào)用分配一個系統(tǒng)調(diào)用號增加系統(tǒng)調(diào)用聲明添加系統(tǒng)調(diào)用的實(shí)現(xiàn)重新編譯內(nèi)核編寫測試驅(qū)動函數(shù),測試系統(tǒng)調(diào)用是否添加成功一:在系統(tǒng)調(diào)用表文件中增加系統(tǒng)調(diào)用的名字二:在系統(tǒng)調(diào)用號文件中給要新增的系統(tǒng)調(diào)用分配一個系統(tǒng)調(dià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)用也就是提供功能的一個函數(shù)根據(jù)題目要求,當(dāng)給改系統(tǒng)調(diào)用傳遞int參數(shù)為奇數(shù)時輸出自己學(xué)號的后五位,當(dāng)系統(tǒng)調(diào)用接受的參數(shù)為偶數(shù)時,輸出自己學(xué)號的后四位所以,系統(tǒng)調(diào)用的實(shí)現(xiàn)如下可以看到系統(tǒng)調(diào)用的實(shí)現(xiàn)同基本的C語言沒多大差別,只是能使用的庫不一樣在linux內(nèi)核中的代碼不能使用標(biāo)準(zhǔn)C庫,只能使用內(nèi)核提供的庫所以能調(diào)用的函數(shù)會有不同最后實(shí)現(xiàn)代碼如下當(dāng)參數(shù)num為偶數(shù)時輸出2257也就是學(xué)號的后四位當(dāng)參數(shù)為奇數(shù)時輸出12257也就是學(xué)號的后四位可以看到輸出函數(shù)式printk而不是printf,因?yàn)樵趦?nèi)核中不能使用標(biāo)準(zhǔn)C函數(shù)五:編譯內(nèi)核六:測試系統(tǒng)調(diào)用測試驅(qū)動函數(shù)如下測試輸出如下由于在系統(tǒng)調(diào)用實(shí)現(xiàn)時忘記在末尾加換行符了。。所以輸出的兩個是在一行的也就是2257和12257,但是可以看到系統(tǒng)調(diào)用時實(shí)現(xiàn)了的。實(shí)驗(yàn)編號2題目內(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)核模塊并測試編寫可以帶參數(shù)的linux內(nèi)核模塊并測試使用內(nèi)核模塊的方法為linux增加系統(tǒng)調(diào)用用內(nèi)核模塊的方法完成實(shí)驗(yàn)1的內(nèi)報告內(nèi)容要求<1>實(shí)現(xiàn)方法和思路<2>測試及結(jié)果報告正文實(shí)驗(yàn)內(nèi)容:編寫一個內(nèi)核模塊;編譯該模塊;加載、卸載該模塊;實(shí)驗(yàn)步驟:新建模塊目錄用編輯器〔vi編輯源文件分析:模塊入口函數(shù)為hello_init<>,由module_init<>宏指定,在模塊被加載的時候被調(diào)用向系統(tǒng)注冊。入口函數(shù)的返回值:0表示成功,非0表示失敗。模塊的退出函數(shù)為hello_exit<>,由module_exit<>宏指定,在模塊被卸載時被調(diào)用向系統(tǒng)注銷,主要來完成資源的清理工作。它被調(diào)用完畢后,就模塊就被內(nèi)核清除了。一個模塊最少需要有入口和退出函數(shù)。2.4內(nèi)核后,引入識別代碼是否在GPL許可下發(fā)布的機(jī)制。在使用非公開的源代碼產(chǎn)品時會得到警告。通過宏MODULE_LICENSE<"GPL">,設(shè)置模塊遵守GPL證書,取消警告信息。宏MODULE_DESCRIPTION<>用來描述模塊的用途。宏MODULE_AUTHOR<>用來聲明模塊的作者。宏MODULE_SUPPORTED_DEVICE<>聲明模塊支持的設(shè)備。這些宏都在頭文件linux/module.h定義,使用這些宏只是用來提供識別信息。用編輯器編輯Makefile編譯模塊加載刪除模塊dmesg輸出信息帶參數(shù)的模塊傳入?yún)?shù)輸出結(jié)果內(nèi)容二:用內(nèi)核模塊的方式為系統(tǒng)添加一個系統(tǒng)調(diào)用為Linux內(nèi)核增加一個系統(tǒng)調(diào)用,并編寫用戶進(jìn)程的程序來測試。要求該系統(tǒng)調(diào)用夠完成以下功能:1.該系統(tǒng)調(diào)用有1個int型參數(shù),返回值為int。2.若參數(shù)為偶數(shù),則輸出自己學(xué)號后四位3.若參數(shù)為奇數(shù),則輸出自己學(xué)號的后五位基本思路就是通過修改系統(tǒng)調(diào)用參數(shù)表所在的內(nèi)存地址并加入系統(tǒng)調(diào)用即可實(shí)驗(yàn)編號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文件報告內(nèi)容要求<1>實(shí)現(xiàn)方法和思路<2>測試及結(jié)果報告正文實(shí)驗(yàn)一:本實(shí)驗(yàn)只使用標(biāo)準(zhǔn)C函數(shù)進(jìn)行修改/proc文件也就是說直接readwrite/proc里的文件從而達(dá)到與內(nèi)核交互的目的代碼如下輸出結(jié)果可以看到實(shí)現(xiàn)了功能完成了hostname文件的修改內(nèi)容二:通過內(nèi)核的/proc編程接口進(jìn)行/proc文件的操作本試驗(yàn)通過構(gòu)造可加載內(nèi)核模塊,通過內(nèi)核的/proc編程接口進(jìn)行/proc文件的操作需要用到的基本函數(shù)有structproc_dir_entry*create_proc_entry<constchar*name,mode_tmode,structproc_dir_entry*parent>這個函數(shù)創(chuàng)建一個/proc文件structproc_dir_entry*create_proc_read_entry<constchar*name,mode_tmode,structproc_dir_entry*base,read_proc_t*read_proc,void*data>這個函數(shù)創(chuàng)建一個/proc的只讀文件structproc_dir_entry*proc_mkdir<constchar*name,structproc_dir_entry*parent>這個函數(shù)創(chuàng)建一個/proc目錄刪除節(jié)點(diǎn)〔文件或者目錄remove_proc_entry<>voidremove_proc_entry<constchar*name,structproc_dir_entry*parent>該函數(shù)將刪除一個proc節(jié)點(diǎn)〔按文件名刪除以上函數(shù)只能創(chuàng)建一個文件,要想使創(chuàng)建的文件發(fā)揮作用,還有兩個域的值需要填寫,它們是read_proc和write_proc。該兩個函數(shù)都是回調(diào)函數(shù),當(dāng)對文件進(jìn)行讀寫時,系統(tǒng)會自動調(diào)用相應(yīng)的回調(diào)函數(shù)。可以使用write_proc函數(shù)向/proc中寫入一項(xiàng)。這個函數(shù)的原型如下int<*write_proc><structfile*file,constchar*buffer,unsignedlongcount,void*data>file參數(shù)實(shí)際上是一個打開文件結(jié)構(gòu)〔我們可以忽略這個參數(shù)。buffer參數(shù)是傳遞給您的字符串?dāng)?shù)據(jù)。緩沖區(qū)地址實(shí)際上是一個用戶空間的緩沖區(qū),因此我們不能直接讀取它。count參數(shù)定義了在buff中有多少數(shù)據(jù)要被寫入。data參數(shù)是一個指向私有數(shù)據(jù)的指針可以使用read_proc函數(shù)從一個/proc項(xiàng)中讀取數(shù)據(jù)〔從內(nèi)核空間到用戶空間。這個函數(shù)的原型如下:int<*read_proc><char*page,char**start,off_toff,intcount,int*eof,void*data>page參數(shù)是這些數(shù)據(jù)寫入到的位置,其中count定義了可以寫入的最大字符數(shù)。在返回多頁數(shù)據(jù)〔通常一頁是4KB時,我們需要使用start和off參數(shù)。當(dāng)所有數(shù)據(jù)全部寫入之后,就需要設(shè)置eof〔文件結(jié)束參數(shù)。與write類似,data表示的也是私有數(shù)據(jù)。此處提供的page緩沖區(qū)在內(nèi)核空間中。實(shí)驗(yàn)代碼如下可以看到代碼創(chuàng)建一個/proc13121257的目錄并且創(chuàng)建兩個文件以及一個link文件結(jié)果如下若對文件進(jìn)行讀寫操作則如下顯示實(shí)驗(yàn)編號4題目設(shè)備管理實(shí)驗(yàn)?zāi)康牧私鈒inux設(shè)備文件了解linux設(shè)備驅(qū)動程序的編寫實(shí)驗(yàn)內(nèi)容1.實(shí)現(xiàn)一個linux字符設(shè)備驅(qū)動文件報告內(nèi)容要求<1>實(shí)現(xiàn)方法和思路<2>測試及結(jié)果報告正文1.首先了解linux設(shè)備驅(qū)動文件的基本數(shù)據(jù)結(jié)構(gòu)內(nèi)核設(shè)備驅(qū)動程序表結(jié)構(gòu)<infs/devices.c>structdevice_struct{
constchar*name;//devicename
structfile_operations*fops;
};字符設(shè)備驅(qū)動程序的基本操作和數(shù)據(jù)結(jié)構(gòu)2.字符設(shè)備驅(qū)動程序:設(shè)備表:全局?jǐn)?shù)組chrdevs[255],主設(shè)備號是它的下標(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ū)動程序的初始化以及退出清理函數(shù)在初始化中用regist
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 7247.1-2024激光產(chǎn)品的安全第1部分:設(shè)備分類和要求
- GB/T 4893.10-2024家具表面漆膜理化性能試驗(yàn)第10部分:耐劃痕測定法
- GB/T 34577-2024配電網(wǎng)旁路作業(yè)技術(shù)導(dǎo)則
- 2024年度云南省高校教師資格證之高等教育心理學(xué)過關(guān)檢測試卷B卷附答案
- 2024-2025學(xué)年福建省龍巖市龍巖一中高一(上)第一次月考數(shù)學(xué)試卷(含答案)
- 2024年風(fēng)力發(fā)電機(jī)組項(xiàng)目資金籌措計劃書代可行性研究報告
- 2024年各類型加速器(含高壓倍加器)項(xiàng)目資金籌措計劃書代可行性研究報告
- 2024年姿態(tài)敏感器項(xiàng)目資金申請報告代可行性研究報告
- 阜陽師范大學(xué)《外國教育史》2023-2024學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《花樣跳繩》2022-2023學(xué)年第一學(xué)期期末試卷
- 社區(qū)食堂建設(shè)方案
- (2024年)硫化氫安全培訓(xùn)課件
- 炎癥性腸病自我管理
- 新產(chǎn)品上市策劃及營銷課件
- 初高中知識銜接教程地理
- 《美術(shù)課程標(biāo)準(zhǔn)解讀》課件
- 江蘇省南通市如皋市2023-2024學(xué)年八年級上學(xué)期期中歷史試題(含答案解析)
- 公司SWOT分析表模板
- 2024年北京中考記敘文閱讀專題03 小說閱讀(含答案解析)
- 電視主持人勞動合同書
- 企業(yè)降低成本方案
評論
0/150
提交評論