西電軟院操作系統(tǒng)課程設(shè)計報告_第1頁
西電軟院操作系統(tǒng)課程設(shè)計報告_第2頁
西電軟院操作系統(tǒng)課程設(shè)計報告_第3頁
西電軟院操作系統(tǒng)課程設(shè)計報告_第4頁
西電軟院操作系統(tǒng)課程設(shè)計報告_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

..操作系統(tǒng)課程設(shè)計實驗報告冊______教師:褚華..目錄實驗說明 重要提示 實驗1 系統(tǒng)調(diào)用實驗2內(nèi)核模塊實驗3 文件系統(tǒng)實驗4設(shè)備管理實驗說明實驗做為學(xué)習(xí)的重要促進手段,是為了深化對理論的理解,鍛煉實踐動手能力。實驗同時也作為考核的手段。實驗內(nèi)容會在課程進行中下達,并且會分次地、部分地被抽查。課程結(jié)束時,要求把所有的實驗整理成一個完整的電子文檔并上交,做為最后成績的評定依據(jù)。如果有興趣的合適的題目,也可自己選題目。格式說明本文檔文件名命名為"學(xué)號-姓名",如"13071000_小王"。留白部分不足的自己調(diào)整長度,也可加頁〔增加內(nèi)容應(yīng)在表格內(nèi)。每次的實驗報告都要在這個文件中〔按照實驗次序依次增加,而不是每次一個新的word文件。本文檔保存為doc格式〔請勿用Word2007的docx格式。重要提示:實驗正文建議使用小四號或五號宋體。若附加圖形,則請直接嵌入到實驗手冊相應(yīng)位置。各實驗的源程序,請按實驗分目錄存放,如第一個實驗的源程序存放在目錄lab1下,第二個實驗的源程序存放在目錄lab2下等等,依次類推??苫ハ嘤懻?但嚴禁抄襲網(wǎng)絡(luò)或同學(xué)的實驗結(jié)果。實驗編號1題目系統(tǒng)調(diào)用實驗?zāi)康臑長inux內(nèi)核增加一個系統(tǒng)調(diào)用,并編寫用戶進程的程序來測試要求該系統(tǒng)調(diào)用能夠完成以下功能:1.該系統(tǒng)調(diào)用有1個int型參數(shù),返回值為int。2.若參數(shù)為偶數(shù),則輸出自己學(xué)號后四位3.若參數(shù)為奇數(shù),則輸出自己學(xué)號的后五位實驗內(nèi)容1.系統(tǒng)調(diào)用的實現(xiàn)2.增加系統(tǒng)調(diào)用3.Linux內(nèi)核的構(gòu)建報告內(nèi)容要求<1>實現(xiàn)方法和思路<2>測試及結(jié)果報告正文要給linux增加系統(tǒng)調(diào)用,可以用修改內(nèi)核源碼并重新編譯的方法實現(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)用的實現(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)用的實現(xiàn)要為linux內(nèi)核增加系統(tǒng)調(diào)用,首先必須要實現(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)用的實現(xiàn)如下可以看到系統(tǒng)調(diào)用的實現(xiàn)同基本的C語言沒多大差別,只是能使用的庫不一樣在linux內(nèi)核中的代碼不能使用標準C庫,只能使用內(nèi)核提供的庫所以能調(diào)用的函數(shù)會有不同最后實現(xiàn)代碼如下當(dāng)參數(shù)num為偶數(shù)時輸出2257也就是學(xué)號的后四位當(dāng)參數(shù)為奇數(shù)時輸出12257也就是學(xué)號的后四位可以看到輸出函數(shù)式printk而不是printf,因為在內(nèi)核中不能使用標準C函數(shù)五:編譯內(nèi)核六:測試系統(tǒng)調(diào)用測試驅(qū)動函數(shù)如下測試輸出如下由于在系統(tǒng)調(diào)用實現(xiàn)時忘記在末尾加換行符了。。所以輸出的兩個是在一行的也就是2257和12257,但是可以看到系統(tǒng)調(diào)用時實現(xiàn)了的。實驗編號2題目內(nèi)核模塊實驗?zāi)康膶W(xué)習(xí)linux內(nèi)核模塊的編寫及加載的方法理解linux內(nèi)核模塊的機制實驗內(nèi)容編寫linux內(nèi)核模塊并測試編寫可以帶參數(shù)的linux內(nèi)核模塊并測試使用內(nèi)核模塊的方法為linux增加系統(tǒng)調(diào)用用內(nèi)核模塊的方法完成實驗1的內(nèi)報告內(nèi)容要求<1>實現(xiàn)方法和思路<2>測試及結(jié)果報告正文實驗內(nèi)容:編寫一個內(nèi)核模塊;編譯該模塊;加載、卸載該模塊;實驗步驟:新建模塊目錄用編輯器〔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ā)布的機制。在使用非公開的源代碼產(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)用,并編寫用戶進程的程序來測試。要求該系統(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)用即可實驗編號3題目文件系統(tǒng)實驗?zāi)康牧私?proc文件系統(tǒng)掌握修改/proc文件系統(tǒng)的方法利用/proc與內(nèi)核交互創(chuàng)建以及使用/proc文件實驗內(nèi)容利用/proc與內(nèi)核交互利用內(nèi)核模塊方法創(chuàng)建/proc文件報告內(nèi)容要求<1>實現(xiàn)方法和思路<2>測試及結(jié)果報告正文實驗一:本實驗只使用標準C函數(shù)進行修改/proc文件也就是說直接readwrite/proc里的文件從而達到與內(nèi)核交互的目的代碼如下輸出結(jié)果可以看到實現(xiàn)了功能完成了hostname文件的修改內(nèi)容二:通過內(nèi)核的/proc編程接口進行/proc文件的操作本試驗通過構(gòu)造可加載內(nèi)核模塊,通過內(nèi)核的/proc編程接口進行/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é)點〔文件或者目錄remove_proc_entry<>voidremove_proc_entry<constchar*name,structproc_dir_entry*parent>該函數(shù)將刪除一個proc節(jié)點〔按文件名刪除以上函數(shù)只能創(chuàng)建一個文件,要想使創(chuàng)建的文件發(fā)揮作用,還有兩個域的值需要填寫,它們是read_proc和write_proc。該兩個函數(shù)都是回調(diào)函數(shù),當(dāng)對文件進行讀寫時,系統(tǒng)會自動調(diào)用相應(yīng)的回調(diào)函數(shù)??梢允褂脀rite_proc函數(shù)向/proc中寫入一項。這個函數(shù)的原型如下int<*write_proc><structfile*file,constchar*buffer,unsignedlongcount,void*data>file參數(shù)實際上是一個打開文件結(jié)構(gòu)〔我們可以忽略這個參數(shù)。buffer參數(shù)是傳遞給您的字符串?dāng)?shù)據(jù)。緩沖區(qū)地址實際上是一個用戶空間的緩沖區(qū),因此我們不能直接讀取它。count參數(shù)定義了在buff中有多少數(shù)據(jù)要被寫入。data參數(shù)是一個指向私有數(shù)據(jù)的指針可以使用read_proc函數(shù)從一個/proc項中讀取數(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)核空間中。實驗代碼如下可以看到代碼創(chuàng)建一個/proc13121257的目錄并且創(chuàng)建兩個文件以及一個link文件結(jié)果如下若對文件進行讀寫操作則如下顯示實驗編號4題目設(shè)備管理實驗?zāi)康牧私鈒inux設(shè)備文件了解linux設(shè)備驅(qū)動程序的編寫實驗內(nèi)容1.實現(xiàn)一個linux字符設(shè)備驅(qū)動文件報告內(nèi)容要求<1>實現(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è)備表:全局數(shù)組chrdevs[255],主設(shè)備號是它的下標登記:register_chrdev<>/unregister_chrdev<>缺省操作集合:file_ops:def_chr_fops,僅定義了open方法;inode_ops:chrdev_inode_operations,僅定義了其中的file_operation=&def_chr_fops.三:關(guān)鍵代碼實現(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論