999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

“操作系統”實驗教學之U盤驅動程序開發

2009-08-28 09:09:14文艷軍鄧勝蘭尹俊文
計算機教育 2009年14期
關鍵詞:設備管理

文艷軍 羅 宇 鄧勝蘭 尹俊文

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

關鍵詞:設備驅動程序;U盤;設備管理

中圖分類號:G642 文獻標識碼:B

1引言

設備管理是操作系統的一個關鍵內容,在實際操作系統的開發中,有相當多的代碼是各類設備的驅動程序。因此,在操作系統實踐環節中設計一個合適的設備驅動程序開發實驗具有非常重要的意義。

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

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

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

本文第二節介紹此實驗的內容設計情況,包括實驗過程和思路的描述,第三節介紹實驗的組織情況和實驗效果分

析,最后是小結。

2實驗內容設計

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

2.1實驗基礎和思路

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

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

簡言之,本實驗的思路是:合并sbull和usb-skeleton這兩個參考驅動程序,以構造出U盤驅動程序的整體框架;調用幫助函數my_Bulk_transport以實際訪問U盤。從而開發出一個簡潔的U盤驅動程序。下面分別對參考驅動程序和幫助函數分別進行簡要介紹。

2.2參考驅動程序

文獻[2]第16章以一個Ramdisk設備為例講解了塊設備驅動程序的一般編寫方法。包括用到的主要數據結構(如下圖所示)和關鍵函數(如register_blkdev、add_disk和blk_init_queue等)。從中可以知道如何向操作系統登記一個塊設備、以及操作系統是如何調用所提供的相關函數來支持塊設備的打開、關閉、讀寫、控制等操作的。這些是塊設備驅動程序編寫的基礎知識。尤其需要說明的是,該驅動程序針對的并不是一個真實物理設備,而是一個Ramdisk設備。所謂Ramdisk,是指使用計算機內存作為存儲介質的盤。一旦加載該驅動,就會從內存中劃分出一些空間,虛擬出幾個磁盤,并且可以對這個虛擬磁盤進行格式化、文件復制和查看等操作。因此,這個驅動程序只是提供了塊設備驅動程序的一般框架。如果要驅動實際的U盤,還需要給學生提供一些其他知識。

文獻[2]的第13章講述了USB字符設備驅動程序的一般編寫方法。所用的例子是Linux內核源碼目錄中的文件driver/usb/usb-skeleton.c。它提供了一個最基礎的USB字符驅動程序,稱為USB骨架。其中包括了對USB字符設備的注冊、打開、關閉、讀寫等操作的支持。特別地,usb_register、probe、disconnect和usb_unregister這幾個函數是USB設備才有的,支持熱插拔等操作。其中的其它一些函數,如skel_read、skel_write、skel_open和skel_release,是針對字符設備的,并不適用于U盤驅動程序。因此,需要與前一個參考驅動程序合并考慮,才能構造出USB塊設備的驅動程序。

2.3U盤驅動的幫助函數

在參考驅動程序usb-skeleton.c中,當需要對USB設備進行讀寫的時候,調用了usb_bulk_msg和usb_submit_ urb等函數。要使用它們來操作U盤,需要對USB大規模存儲設備的相關協議非常清楚,會涉及到大量底層細節,對于本科學生而言,需要花大量時間,會非常困難。

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

① drivers/usb/storage/transport.c

② drivers/usb/storage/transport.h

③ drivers/scsi/scsi.h

該函數的原型如下所示:

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設備(udev)的接口(interface)發送一個命令(cs),進行相應的數據傳遞(bulk_buffer),并獲取狀態反饋信息。內部封裝了復雜的USB大規模存儲設備的傳輸協議,學生只需要掌握命令的格式和一些基本的USB設備知識即可,從而有效控制了實驗的復雜性。

3教學組織及效果

本實驗一人一組,課內安排8個學時的上機時間,學生需要在課外查閱一些相關資料。要求提交實驗上機報告和驅動程序源程序,實驗成績由現場上機檢查成績和上機報告成績兩部分構成。

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

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

4結束語

本文介紹了一個USB塊設備驅動程序開發實驗的內容設計、教學組織和實驗效果,對實驗的關鍵環節和應注意的事項進行了分析,可供開展同類操作系統實驗的同行借鑒,從而加深學生對操作系統的設備管理技術的理解,進一步提高“操作系統”課程的教學效果。

參考文獻:

[1] 羅宇,陳燕輝,文艷軍,等. 操作系統實驗教程[M]. 北京:電子工業出版社,2009.

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

猜你喜歡
設備管理
企業基于自動化設備管理與維修的分析
規范化管理抽油機提高設備運行
現代施工企業物資設備管理問題探究
醫療設備的管理與維護系統的設計
數據庫軟件在設備管理中的應用
電力安全管理中常見的問題及措施
物聯網技術在設備管理中的應用
當前鐵路工務線路設備管理對安全生產的作用分析
科技資訊(2016年19期)2016-11-15 10:09:29
鐵路設備管理系統的設計與應用
從報廢處置角度探討設備管理工作
主站蜘蛛池模板: 尤物在线观看乱码| 在线观看视频99| 亚洲中文在线看视频一区| 國產尤物AV尤物在線觀看| 国模视频一区二区| 欧美午夜性视频| 激情视频综合网| 午夜一区二区三区| 欧美一级视频免费| www.精品国产| 亚洲中文字幕无码mv| 欧美黄色网站在线看| 国产成人免费视频精品一区二区 | 91视频精品| 看av免费毛片手机播放| 在线无码av一区二区三区| 91精品国产综合久久不国产大片| a在线亚洲男人的天堂试看| 久久不卡精品| 国产美女免费| 中国一级毛片免费观看| 国产区精品高清在线观看| 日韩精品资源| 韩日午夜在线资源一区二区| 91在线中文| 亚洲第一页在线观看| 国产亚洲精品自在久久不卡| 欧美日韩另类国产| 精品1区2区3区| 综合五月天网| 99国产精品国产| 亚洲人成网站色7777| 男女性午夜福利网站| 国产午夜不卡| 波多野结衣视频一区二区| 国产网站免费观看| 老色鬼久久亚洲AV综合| 97av视频在线观看| 亚洲欧美国产高清va在线播放| 91小视频在线| 久久久亚洲国产美女国产盗摄| 国产18在线播放| 亚洲福利一区二区三区| 国产精品私拍在线爆乳| 538国产视频| 男人天堂亚洲天堂| 国产精品浪潮Av| 米奇精品一区二区三区| 国产成人综合久久| 国产丝袜啪啪| 9cao视频精品| 日本午夜精品一本在线观看| 在线观看免费国产| 久久综合色播五月男人的天堂| 视频一区视频二区日韩专区 | 亚洲成AV人手机在线观看网站| 亚洲欧美成人综合| 国产精品亚洲五月天高清| 欧美日韩精品在线播放| 91美女视频在线| 高h视频在线| 亚州AV秘 一区二区三区| 亚洲AⅤ波多系列中文字幕| 国产农村妇女精品一二区| 极品私人尤物在线精品首页| 成人午夜天| 日韩中文字幕亚洲无线码| 精品成人免费自拍视频| 一级毛片在线播放| 夜精品a一区二区三区| 色噜噜综合网| 亚洲欧美天堂网| 亚洲第一成年人网站| 精品国产一区91在线| 亚洲无线国产观看| 91久久偷偷做嫩草影院电| 亚洲AⅤ综合在线欧美一区| 国内精品一区二区在线观看| 国产成年女人特黄特色大片免费| 99久久精品国产麻豆婷婷| 亚洲浓毛av| 性欧美在线|