![“操作系統(tǒng)”實驗教學之U盤驅(qū)動程序開發(fā)-文檔資料_第1頁](http://file4.renrendoc.com/view/07033d32dcb1844999df3f41211b5200/07033d32dcb1844999df3f41211b52001.gif)
![“操作系統(tǒng)”實驗教學之U盤驅(qū)動程序開發(fā)-文檔資料_第2頁](http://file4.renrendoc.com/view/07033d32dcb1844999df3f41211b5200/07033d32dcb1844999df3f41211b52002.gif)
![“操作系統(tǒng)”實驗教學之U盤驅(qū)動程序開發(fā)-文檔資料_第3頁](http://file4.renrendoc.com/view/07033d32dcb1844999df3f41211b5200/07033d32dcb1844999df3f41211b52003.gif)
![“操作系統(tǒng)”實驗教學之U盤驅(qū)動程序開發(fā)-文檔資料_第4頁](http://file4.renrendoc.com/view/07033d32dcb1844999df3f41211b5200/07033d32dcb1844999df3f41211b52004.gif)
![“操作系統(tǒng)”實驗教學之U盤驅(qū)動程序開發(fā)-文檔資料_第5頁](http://file4.renrendoc.com/view/07033d32dcb1844999df3f41211b5200/07033d32dcb1844999df3f41211b52005.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
“操作系統(tǒng)”實驗教學之U盤驅(qū)動程序開發(fā)引言設(shè)備管理是操作系統(tǒng)的一個關(guān)鍵內(nèi)容 ,在實際操作系統(tǒng)的開發(fā)中 ,有相當多的代碼是各類設(shè)備的驅(qū)動程序。因此 ,在操作系統(tǒng)實踐環(huán)節(jié)中設(shè)計一個合適的設(shè)備驅(qū)動程序開發(fā)實驗具有非常重要的意義。本文介紹了一個Linux環(huán)境下的U盤驅(qū)動程序開發(fā)實驗的設(shè)計與實施情況。U盤是一個典型的塊設(shè)備,這類設(shè)備種類多、使用廣泛 ,其驅(qū)動程序的開發(fā)也比字符設(shè)備復雜。為了降低復雜性 ,許多相關(guān)的實驗安排都是針對一個虛擬設(shè)備 ,如內(nèi)存盤(RAMdisk)。但這樣做也有它的弊端,即與真實物理設(shè)備的驅(qū)動程序開發(fā)差異很大 ,學生不能更真實地了解設(shè)備管理的實際情況。因此 ,如果能夠設(shè)計一個真實塊設(shè)備(如U盤)的驅(qū)動程序開發(fā)實驗,將能夠彌補上述缺憾。在Linux環(huán)境下,已經(jīng)有一個通用的U盤驅(qū)動程序usb-storage.ko,其源程序放在目錄drivers\usb\storage下(相對于內(nèi)核源碼根目錄)。但這個驅(qū)動的實現(xiàn)相當復雜,它將一個USB設(shè)備模擬成了一個SCSI設(shè)備,進而通過SCSI設(shè)備的接口來訪問,該驅(qū)動程序很難被學生所理解。在我們設(shè)計的實驗中,希望學生開發(fā)一個相對簡單些的U盤驅(qū)動程序,不求高性能,只求結(jié)構(gòu)明朗、清晰易懂 ,主要是讓學生掌握一個實際塊設(shè)備的驅(qū)動方式 ,從而加深對設(shè)備管理原理的理解。事實上,本實驗開發(fā)的驅(qū)動程序應(yīng)該能夠適用于所有基于Bulkonly傳輸協(xié)議的USB大容量存儲設(shè)備(USBMassStorage),比如USB移動硬盤和USB外置光驅(qū),U盤只是其中的一種。由于USB大容量存儲設(shè)備具有容量大、速度快、連接靈活、即插即用、總線供電等優(yōu)點,它們得到了廣泛使用,掌握這類設(shè)備驅(qū)動程序的開發(fā)技術(shù)無疑具有很強的實用性。本文第二節(jié)介紹此實驗的內(nèi)容設(shè)計情況,包括實驗過程和思路的描述,第三節(jié)介紹實驗的組織情況和實驗效果分析,最后是小結(jié)。實驗內(nèi)容設(shè)計本實驗要求學生在Linux操作系統(tǒng)下編寫一個U盤驅(qū)動程序,只要求能夠驅(qū)動某個型號的U盤,要能夠支持U盤的常規(guī)操作,如命令hexdump、mke2fs和mount等。同時,要求在系統(tǒng)內(nèi)核日志中顯示出U盤的容量。對于學有余力的學生,可增加多分區(qū)支持功能。2.1實驗基礎(chǔ)和思路在文獻[2]中,講解了如何編寫一個 Ramdisk塊設(shè)備驅(qū)動程序,稱為sbull;也講解了如何編寫一個USB設(shè)備驅(qū)動程序,并以Linux源代碼中的usb-skeleton.c為例。雖然前者驅(qū)動的并不是一個實際的塊設(shè)備,且后者又只是針對USB字符設(shè)備,但是它們提供了一個不錯的基礎(chǔ),通過合并就能基本得到一個支持USB塊設(shè)備的驅(qū)動程序。之所以說基本得到,是因為合并后只是有了塊設(shè)備、USB設(shè)備的驅(qū)動支持框架,但還缺一樣:對U盤(USB塊設(shè)備)的實際訪問操作。USB塊設(shè)備的訪問方法與USB字符設(shè)備區(qū)別很大,有一套復雜的協(xié)議。把這樣一套協(xié)議研究清楚,將花費大量時間,也遠離了驅(qū)動程序開發(fā)的核心。這是一大難點,為此我們專門編寫了一個U盤訪問函數(shù)(my_Bulk_transport),以減輕工作量。2.3節(jié)將進一步介紹該幫助函數(shù)。簡言之,本實驗的思路是:合并sbull 和usb-skeleton 這兩個參考驅(qū)動程序,以構(gòu)造出U盤驅(qū)動程序的整體框架 ;調(diào)用幫助函數(shù)my_Bulk_transport 以實際訪問U盤。從而開發(fā)出一個簡潔的 U盤驅(qū)動程序。下面分別對參考驅(qū)動程序和幫助函數(shù)分別進行簡要介紹。2.2參考驅(qū)動程序文獻[2]第16章以一個Ramdisk設(shè)備為例講解了塊設(shè)備驅(qū)動程序的一般編寫方法。包括用到的主要數(shù)據(jù)結(jié)構(gòu) (如下圖所示)和關(guān)鍵函數(shù)(如register_blkdev 、add_disk和blk_init_queue 等)。從中可以知道如何向操作系統(tǒng)登記一個塊設(shè)備、 以及操作系統(tǒng)是如何調(diào)用所提供的相關(guān)函數(shù)來支持塊設(shè)備的打開、關(guān)閉、讀寫、控制等操作的。這些是塊設(shè)備驅(qū)動程序編寫的基礎(chǔ)知識。尤其需要說明的是 ,該驅(qū)動程序針對的并不是一個真實物理設(shè)備 ,而是一個Ramdisk設(shè)備。所謂Ramdisk,是指使用計算機內(nèi)存作為存儲介質(zhì)的盤。一旦加載該驅(qū)動 ,就會從內(nèi)存中劃分出一些空間 ,虛擬出幾個磁盤,并且可以對這個虛擬磁盤進行格式化、文件復制和查看等操作。因此 ,這個驅(qū)動程序只是提供了塊設(shè)備驅(qū)動程序的一般框架。如果要驅(qū)動實際的 U盤,還需要給學生提供一些其他知識。文獻[2]的第13章講述了USB字符設(shè)備驅(qū)動程序的一般編寫方法。所用的例子是 Linux內(nèi)核源碼目錄中的文件driver/usb/usb-skeleton.c 。它提供了一個最基礎(chǔ)的 USB字符驅(qū)動程序,稱為USB骨架。其中包括了對 USB字符設(shè)備的注冊、打開、關(guān)閉、讀寫等操作的支持。特別地 ,usb_register 、probe、disconnect和usb_unregister這幾個函數(shù)是USB設(shè)備才有的,支持熱插拔等操作。其中的其它一些函數(shù),如skel_read、skel_write、skel_open和skel_release, 是針對字符設(shè)備的,并不適用于U盤驅(qū)動程序。因此,需要與前一個參考驅(qū)動程序合并考慮 ,才能構(gòu)造出USB塊設(shè)備的驅(qū)動程序。2.3U盤驅(qū)動的幫助函數(shù)在參考驅(qū)動程序usb-skeleton.c 中,當需要對USB設(shè)備進行讀寫的時候,調(diào)用了usb_bulk_msg和usb_submit_urb等函數(shù)。要使用它們來操作U盤,需要對USB大規(guī)模存儲設(shè)備的相關(guān)協(xié)議非常清楚 ,會涉及到大量底層細節(jié),對于本科學生而言,需要花大量時間,會非常困難。為此,我們以Linux下的通用USB驅(qū)動程序usb-storage 為基礎(chǔ),整理出了一個粒度更大的 U盤訪問函數(shù),稱為my_Bulk_transport 。主要借鑒了如下幾個文件 :drivers/usb/storage/transport.cdrivers/usb/storage/transport.hdrivers/scsi/scsi.h該函數(shù)的原型如下所示 :intmy_Bulk_transport(structusb_device*udev,structusb_interface*interface,structcmnd_struct*cs,unsignedchar*bulk_buffer,intbulk_size,__u8bulk_in_endpointAddr,__u8bulk_out_endpointAddr);其功能是向USB設(shè)備(udev)的接口(interface) 發(fā)送一個命令(cs),進行相應(yīng)的數(shù)據(jù)傳遞(bulk_buffer),并獲取狀態(tài)反饋信息。內(nèi)部封裝了復雜的USB大規(guī)模存儲設(shè)備的傳輸協(xié)議,學生只需要掌握命令的格式和一些基本的USB設(shè)備知識即可,從而有效控制了實驗的復雜性。教學組織及效果本實驗一人一組,課內(nèi)安排8個學時的上機時間,學生需要在課外查閱一些相關(guān)資料。要求提交實驗上機報告和驅(qū)動程序源程序 ,實驗成績由現(xiàn)場上機檢查成績和上機報告成績兩部分構(gòu)成。在2007年和2008年秋季學期的“操作系統(tǒng)課程設(shè)計課”中 ,本實驗作為一個實驗單元進行了教學實踐。從實驗效果看 ,有約15%的學生能夠比較獨立地完成實驗 ,實現(xiàn)U盤的掛載、讀寫、容量信息讀取操作;有約60%的學生在老師進一步給出參考驅(qū)動程序的合并雛形后,能夠順利完成合并,并實現(xiàn)部分功能,如容量信息的讀取;剩下的大概25%只能進行部分合并工作,不能完成U盤驅(qū)動的有效功能。此外,對于fdisk操作和多分區(qū)功能的支持,很少有學生能夠?qū)崿F(xiàn)??傮w來看,雖然有U盤幫助函數(shù)的輔助,本實驗仍然具有較高的難度,其主要困難在于:(1)許多學生對Linux下的程序開發(fā)、調(diào)試不熟悉,對于內(nèi)核模塊更是如此;(2)參考資料支持不夠,這方面的參考資料比較分散,且大部分都是英文資料。完成情況好的學生,大都比較積極主動,自學能力
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年專業(yè)經(jīng)銷住宅合同
- 2025年住宅購買居間合同標準文本
- 2025年船舶涂料項目規(guī)劃申請報告模板
- 2025年加工鹽項目規(guī)劃申請報告模式
- 2025年水利設(shè)施開發(fā)管理服務(wù)項目提案報告模板
- 2025年專業(yè)軟件技術(shù)支持合同示范文本
- 2025年石膏行業(yè)誠信購銷協(xié)議
- 2025年絕緣材料:絕緣套管項目提案報告模稿
- 2025年人才發(fā)展合作框架協(xié)議
- 2025年兒童監(jiān)護權(quán)放棄協(xié)議范例
- (一模)烏魯木齊地區(qū)2025年高三年級第一次質(zhì)量語文試卷(含答案)
- 2024年第四季度 國家電網(wǎng)工程設(shè)備材料信息參考價
- 1.北京的春節(jié) 練習題(含答案)
- 抗震支架安裝工程施工方案范文
- 2025年中煤科工集團北京華宇工程限公司中層干部公開招聘高頻重點提升(共500題)附帶答案詳解
- GB/T 17145-2024廢礦物油回收與再生利用導則
- 人教版小學英語單詞表(按首字母排列)
- GB/T 45006-2024風電葉片用纖維增強復合材料拉擠板材
- 婦科常見病的護理常規(guī)
- 《銀行案件防控培訓》課件
- 炎癥性腸病共識2024
評論
0/150
提交評論