亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        “操作系統(tǒng)”實(shí)驗教學(xué)之U盤驅(qū)動程序開發(fā)

        2009-08-28 09:09:14文艷軍鄧勝蘭尹俊文
        計算機(jī)教育 2009年14期
        關(guān)鍵詞:操作系統(tǒng)U盤設(shè)備管理

        文艷軍 羅 宇 鄧勝蘭 尹俊文

        摘要:本文介紹了一個U盤驅(qū)動程序開發(fā)實(shí)驗的設(shè)計與實(shí)施情況,包括實(shí)驗內(nèi)容、實(shí)驗基本過程和思路、實(shí)驗組織和效果等。本實(shí)驗有助于學(xué)生更真實(shí)地了解設(shè)備管理的實(shí)際情況,加深對設(shè)備管理原理的理解。

        關(guān)鍵詞:設(shè)備驅(qū)動程序;U盤;設(shè)備管理

        中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B

        1引言

        設(shè)備管理是操作系統(tǒng)的一個關(guān)鍵內(nèi)容,在實(shí)際操作系統(tǒng)的開發(fā)中,有相當(dāng)多的代碼是各類設(shè)備的驅(qū)動程序。因此,在操作系統(tǒng)實(shí)踐環(huán)節(jié)中設(shè)計一個合適的設(shè)備驅(qū)動程序開發(fā)實(shí)驗具有非常重要的意義。

        本文介紹了一個Linux環(huán)境下的U盤驅(qū)動程序開發(fā)實(shí)驗的設(shè)計與實(shí)施情況。U盤是一個典型的塊設(shè)備,這類設(shè)備種類多、使用廣泛,其驅(qū)動程序的開發(fā)也比字符設(shè)備復(fù)雜。為了降低復(fù)雜性,許多相關(guān)的實(shí)驗安排都是針對一個虛擬設(shè)備,如內(nèi)存盤(RAM disk)。但這樣做也有它的弊端,即與真實(shí)物理設(shè)備的驅(qū)動程序開發(fā)差異很大,學(xué)生不能更真實(shí)地了解設(shè)備管理的實(shí)際情況。因此,如果能夠設(shè)計一個真實(shí)塊設(shè)備(如U盤)的驅(qū)動程序開發(fā)實(shí)驗,將能夠彌補(bǔ)上述缺憾。

        在Linux環(huán)境下,已經(jīng)有一個通用的U盤驅(qū)動程序usb-storage.ko,其源程序放在目錄driversusbstorage下(相對于內(nèi)核源碼根目錄)。但這個驅(qū)動的實(shí)現(xiàn)相當(dāng)復(fù)雜,它將一個USB設(shè)備模擬成了一個SCSI設(shè)備,進(jìn)而通過SCSI設(shè)備的接口來訪問,該驅(qū)動程序很難被學(xué)生所理解。在我們設(shè)計的實(shí)驗中,希望學(xué)生開發(fā)一個相對簡單些的U盤驅(qū)動程序,不求高性能,只求結(jié)構(gòu)明朗、清晰易懂,主要是讓學(xué)生掌握一個實(shí)際塊設(shè)備的驅(qū)動方式,從而加深對設(shè)備管理原理的理解。

        事實(shí)上,本實(shí)驗開發(fā)的驅(qū)動程序應(yīng)該能夠適用于所有基于Bulkonly傳輸協(xié)議的USB大容量存儲設(shè)備(USB Mass Storage),比如USB移動硬盤和USB外置光驅(qū),U盤只是其中的一種。由于USB大容量存儲設(shè)備具有容量大、速度快、連接靈活、即插即用、總線供電等優(yōu)點(diǎn),它們得到了廣泛使用,掌握這類設(shè)備驅(qū)動程序的開發(fā)技術(shù)無疑具有很強(qiáng)的實(shí)用性。

        本文第二節(jié)介紹此實(shí)驗的內(nèi)容設(shè)計情況,包括實(shí)驗過程和思路的描述,第三節(jié)介紹實(shí)驗的組織情況和實(shí)驗效果分

        析,最后是小結(jié)。

        2實(shí)驗內(nèi)容設(shè)計

        本實(shí)驗要求學(xué)生在Linux操作系統(tǒng)下編寫一個U盤驅(qū)動程序,只要求能夠驅(qū)動某個型號的U盤,要能夠支持U盤的常規(guī)操作,如命令hexdump、mke2fs和mount等。同時,要求在系統(tǒng)內(nèi)核日志中顯示出U盤的容量。對于學(xué)有余力的學(xué)生,可增加多分區(qū)支持功能。

        2.1實(shí)驗基礎(chǔ)和思路

        在文獻(xiàn)[2]中,講解了如何編寫一個Ramdisk塊設(shè)備驅(qū)動程序,稱為sbull;也講解了如何編寫一個USB設(shè)備驅(qū)動程序,并以Linux源代碼中的usb-skeleton.c為例。雖然前者驅(qū)動的并不是一個實(shí)際的塊設(shè)備,且后者又只是針對USB字符設(shè)備,但是它們提供了一個不錯的基礎(chǔ),通過合并就能基本得到一個支持USB塊設(shè)備的驅(qū)動程序。之所以說基本得到,是因為合并后只是有了塊設(shè)備、USB設(shè)備的驅(qū)動支持框架,但還缺一樣:對U盤(USB塊設(shè)備)的實(shí)際訪問操作。

        USB塊設(shè)備的訪問方法與USB字符設(shè)備區(qū)別很大,有一套復(fù)雜的協(xié)議。把這樣一套協(xié)議研究清楚,將花費(fèi)大量時間,也遠(yuǎn)離了驅(qū)動程序開發(fā)的核心。這是一大難點(diǎn),為此我們專門編寫了一個U盤訪問函數(shù)(my_Bulk_ transport),以減輕工作量。2.3節(jié)將進(jìn)一步介紹該幫助函數(shù)。

        簡言之,本實(shí)驗的思路是:合并sbull和usb-skeleton這兩個參考驅(qū)動程序,以構(gòu)造出U盤驅(qū)動程序的整體框架;調(diào)用幫助函數(shù)my_Bulk_transport以實(shí)際訪問U盤。從而開發(fā)出一個簡潔的U盤驅(qū)動程序。下面分別對參考驅(qū)動程序和幫助函數(shù)分別進(jìn)行簡要介紹。

        2.2參考驅(qū)動程序

        文獻(xiàn)[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í)物理設(shè)備,而是一個Ramdisk設(shè)備。所謂Ramdisk,是指使用計算機(jī)內(nèi)存作為存儲介質(zhì)的盤。一旦加載該驅(qū)動,就會從內(nèi)存中劃分出一些空間,虛擬出幾個磁盤,并且可以對這個虛擬磁盤進(jìn)行格式化、文件復(fù)制和查看等操作。因此,這個驅(qū)動程序只是提供了塊設(shè)備驅(qū)動程序的一般框架。如果要驅(qū)動實(shí)際的U盤,還需要給學(xué)生提供一些其他知識。

        文獻(xiàn)[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中,當(dāng)需要對USB設(shè)備進(jìn)行讀寫的時候,調(diào)用了usb_bulk_msg和usb_submit_ urb等函數(shù)。要使用它們來操作U盤,需要對USB大規(guī)模存儲設(shè)備的相關(guān)協(xié)議非常清楚,會涉及到大量底層細(xì)節(jié),對于本科學(xué)生而言,需要花大量時間,會非常困難。

        為此,我們以Linux下的通用USB驅(qū)動程序usb-storage為基礎(chǔ),整理出了一個粒度更大的U盤訪問函數(shù),稱為my_Bulk_transport。主要借鑒了如下幾個文件:

        ① drivers/usb/storage/transport.c

        ② drivers/usb/storage/transport.h

        ③ drivers/scsi/scsi.h

        該函數(shù)的原型如下所示:

        int my_Bulk_transport(

        struct usb_device *udev,

        struct usb_interface *interface,

        struct cmnd_struct *cs,

        unsigned char *bulk_buffer,

        int bulk_size,

        __u8 bulk_in_endpointAddr,

        __u8 bulk_out_endpointAddr);

        其功能是向USB設(shè)備(udev)的接口(interface)發(fā)送一個命令(cs),進(jìn)行相應(yīng)的數(shù)據(jù)傳遞(bulk_buffer),并獲取狀態(tài)反饋信息。內(nèi)部封裝了復(fù)雜的USB大規(guī)模存儲設(shè)備的傳輸協(xié)議,學(xué)生只需要掌握命令的格式和一些基本的USB設(shè)備知識即可,從而有效控制了實(shí)驗的復(fù)雜性。

        3教學(xué)組織及效果

        本實(shí)驗一人一組,課內(nèi)安排8個學(xué)時的上機(jī)時間,學(xué)生需要在課外查閱一些相關(guān)資料。要求提交實(shí)驗上機(jī)報告和驅(qū)動程序源程序,實(shí)驗成績由現(xiàn)場上機(jī)檢查成績和上機(jī)報告成績兩部分構(gòu)成。

        在2007年和2008年秋季學(xué)期的“操作系統(tǒng)課程設(shè)計課”中,本實(shí)驗作為一個實(shí)驗單元進(jìn)行了教學(xué)實(shí)踐。從實(shí)驗效果看,有約15%的學(xué)生能夠比較獨(dú)立地完成實(shí)驗,實(shí)現(xiàn)U盤的掛載、讀寫、容量信息讀取操作;有約60%的學(xué)生在老師進(jìn)一步給出參考驅(qū)動程序的合并雛形后,能夠順利完成合并,并實(shí)現(xiàn)部分功能,如容量信息的讀取;剩下的大概25%只能進(jìn)行部分合并工作,不能完成U盤驅(qū)動的有效功能。此外,對于fdisk操作和多分區(qū)功能的支持,很少有學(xué)生能夠?qū)崿F(xiàn)。

        總體來看,雖然有U盤幫助函數(shù)的輔助,本實(shí)驗仍然具有較高的難度,其主要困難在于:(1)許多學(xué)生對Linux下的程序開發(fā)、調(diào)試不熟悉,對于內(nèi)核模塊更是如此;(2)參考資料支持不夠,這方面的參考資料比較分散,且大部分都是英文資料。完成情況好的學(xué)生,大都比較積極主動,自學(xué)能力較強(qiáng)。因此,本實(shí)驗要取得比較好的效果,需要充分激發(fā)學(xué)生的主動性,同時對參考資料的使用方法進(jìn)行較好的引導(dǎo)。

        4結(jié)束語

        本文介紹了一個USB塊設(shè)備驅(qū)動程序開發(fā)實(shí)驗的內(nèi)容設(shè)計、教學(xué)組織和實(shí)驗效果,對實(shí)驗的關(guān)鍵環(huán)節(jié)和應(yīng)注意的事項進(jìn)行了分析,可供開展同類操作系統(tǒng)實(shí)驗的同行借鑒,從而加深學(xué)生對操作系統(tǒng)的設(shè)備管理技術(shù)的理解,進(jìn)一步提高“操作系統(tǒng)”課程的教學(xué)效果。

        參考文獻(xiàn):

        [1] 羅宇,陳燕輝,文艷軍,等. 操作系統(tǒng)實(shí)驗教程[M]. 北京:電子工業(yè)出版社,2009.

        [2] Jonathan Corbert, Alessandro Rubini, Greg Kroah-Hartman,等. Linux設(shè)備驅(qū)動程序[M]. 3版. 魏永明,耿岳,鐘書毅,譯. 北京:中國電力出版社,2006.

        猜你喜歡
        操作系統(tǒng)U盤設(shè)備管理
        采用U盤文件冗余方案實(shí)現(xiàn)TSP系統(tǒng)的可靠裝載
        智能手機(jī)操作系統(tǒng)的分析與比較
        卷宗(2016年10期)2017-01-21 14:04:15
        國產(chǎn)桌面操作系統(tǒng)中虛擬化技術(shù)應(yīng)用研究
        計算機(jī)維護(hù)中操作系統(tǒng)還原技術(shù)的分析
        對計算機(jī)進(jìn)行操作系統(tǒng)重裝的維護(hù)
        當(dāng)前鐵路工務(wù)線路設(shè)備管理對安全生產(chǎn)的作用分析
        科技資訊(2016年19期)2016-11-15 10:09:29
        鐵路設(shè)備管理系統(tǒng)的設(shè)計與應(yīng)用
        從報廢處置角度探討設(shè)備管理工作
        鐵路貨車設(shè)備管理信息化建設(shè)的研究
        U盤“鬧肚子”
        日本精品一区二区三本中文| 麻豆亚洲一区| 青青草原亚洲| 男女啪啪永久免费观看网站| 国产女人精品视频国产灰线| 久久亚洲中文字幕精品一区四 | 偷拍夫妻视频一区二区| 挺进邻居丰满少妇的身体| 少妇装睡让我滑了进去| 国产精品每日更新在线观看| 女同性恋一区二区三区四区| 亚洲中文字幕九色日本| 国产综合色在线精品| 久久久天堂国产精品女人| 国产成人精品日本亚洲专区6| 精品国产97av一区二区三区| 亚洲av老熟女一区二区三区| 无码无套少妇毛多18pxxxx| 先锋影音最新色资源站| 久久久久久久久国内精品影视| 日本一区二区啪啪视频| 国产午夜视频在线观看.| 大屁股人妻女教师撅着屁股| 无码少妇一区二区三区芒果| 国产丰满乱子伦无码专| 国产蜜桃传媒在线观看| 亚洲线精品一区二区三区| 男女爽爽无遮挡午夜视频| 久久综合视频网站| 亚洲国产人成自精在线尤物| 亚洲精品中文字幕一二三区| 欧美乱人伦人妻中文字幕| 國产AV天堂| 超短裙老师在线观看一区| 国内精品少妇高潮视频| 肉体裸交137日本大胆摄影| 996久久国产精品线观看| 国产一级一片内射在线| 人妻少妇久久中中文字幕| 国产精品视频免费播放| 免费av在线国模|