塊設備驅(qū)動程序介紹_第1頁
塊設備驅(qū)動程序介紹_第2頁
塊設備驅(qū)動程序介紹_第3頁
塊設備驅(qū)動程序介紹_第4頁
塊設備驅(qū)動程序介紹_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

塊設備驅(qū)動程序Linux0.11內(nèi)核包含3個塊設備的驅(qū)動:ramdisk,硬盤,軟盤。首先需要注意的塊設備的操作方式:在系統(tǒng)(內(nèi)核)與硬盤進行IO操作時,需要考慮三個對象之間的交互作用。它們是系統(tǒng)、控制器和驅(qū)動器(例如硬盤或軟盤驅(qū)動器)。系統(tǒng)可以直接向控制器發(fā)送命令或等待控制器發(fā)出中斷請求:控制器在接受到命令后就會控制驅(qū)動器的操作,讀/寫數(shù)據(jù)或者進行其他操作。因此我們可以把這里控制器發(fā)出的中斷信號看作是這三者之間的同步操作信號,所經(jīng)歷的操作步驟為:首先系統(tǒng)指明控制器在執(zhí)行命令結(jié)束而引發(fā)的中斷過程中應該調(diào)用的C函數(shù),然后向塊設備控制器發(fā)送讀、寫、復位或其他操作命令。當控制器完成了指定的命令,會發(fā)出中斷請求信號,引發(fā)系統(tǒng)執(zhí)行塊設備的中斷處理過程,并在其中調(diào)用指定的C函數(shù)對讀/寫或其他命令進行命令結(jié)束后的處理工作。塊設備表項和請求項數(shù)組構(gòu)成的數(shù)據(jù)結(jié)構(gòu)是塊設備部分的核心數(shù)據(jù)結(jié)構(gòu)。請求隊列數(shù)組與塊設備結(jié)構(gòu)為如下關系請求項數(shù)組存放所有系統(tǒng)中對塊設備的請求,原因估計是塊設備一般都是低速外設,所以處理時間較長,來不及的請求先存儲起來。每個塊設備表項的current_request指向當前需要處理的請求項數(shù)組中的請求項,在請求項數(shù)組中的請求項之間用指針相鏈接,這樣就構(gòu)成了對某一設備的請求隊列。僅下面惡分唉析增ll熟_r粉w_椒bl蹈k.教c芒程序涼,它饅是塊導設備隙(軟晴硬盤父,直ra咽md呢is拐k浴)與艇緩沖將管理零之間芽的接稻口程慧序,逼主要互功能專是為歇塊設下備創(chuàng)估建塊轟設備形讀寫挨請求南項,匆并插腿入到銹指定病塊設禮備請姑求隊秧列中西。實告際的跌讀寫憐操作派由請陳求項祖處理巷函無數(shù)肅re傷qu吧es伐t_孔f父n鵲完成故。肅re用q奶ue粘st裁_f州n蹲通低過擇bl軟k.嗓h裹的宏念定義獸映射筋到實厲際設通備的魄操作免(傍do盲_h戒d_芒re灰qu透es聯(lián)t括,刺do覽_f辟d_黑re默qu臘es農(nóng)t徑,蜻do俗_r沉d_隊re類qu值es筑t添)點ll婆_r免w_帝bl撿oc叉k伙調(diào)用策序列傘如上渠圖芽,問ll痛_r浸w_滋bl窄oc掉k景程序迅為左燈半邊姻圖,好作用牽是往派請求歸項鏈友表中往插入灘請求明項,征插完兇后調(diào)攪用程re福qu雨es乒t_竄fn董(辣)佛會引畝發(fā)中攀斷逐君個處寸理某介設備枕的所梁有請?zhí)箜椪?。插剛?cè)胝埡羟箜椏檬抢⒂秒娋G梯算波法插掙入到攏對應茫某個賊設備冊的請你求鏈區(qū)表中愧。甩對于灰硬盤節(jié),首他先涉持及的外是硬濃盤的獅知識作,悠0.避1屈1晴內(nèi)核澡支持商的高是飄A劍T汁硬盤任。秤硬盤痛的仿分區(qū)嚷結(jié)構(gòu)懼如下謠:陵與代澤碼聯(lián)碌系較雪緊密允的是綁主引杏導記氏錄的匆分區(qū)附表,蜻內(nèi)核嗚中礙pa金rt網(wǎng)it怨io形n忌結(jié)構(gòu)誤完全翁對應業(yè)了分掠區(qū)表拐的字劉段。勢硬盤姓參數(shù)襯及富類型駐(減Li不nu鼻x0悟.1淺1厲只支壽持最籠多兩蜻個硬記盤)免hd序_i握nf貫o禾錫0兼1干hd村_i速_s個tr攝uc哨t{幕磁頭魚數(shù)享每磁東道扇獨區(qū)數(shù)疊柱面縱數(shù)道寫前野預補遵償柱廣面號重磁頭訓著陸匠柱面印號愉控制蕩字節(jié)}要硬盤沫分區(qū)豪結(jié)構(gòu)執(zhí)(構(gòu)0櫻,宜5踐代表尸第可1嘴,芝第摘2私個硬本盤至,根1~籮4般,豎6~纏9候為兩球硬盤面的分卸區(qū)跡)及0除1眨2溪3統(tǒng)4割5每6顧7彈8攝9旨hd疼_s枕tr每uc傾t{怎物理亡起始嗎扇區(qū)惹號揭分者區(qū)超扇區(qū)鳥數(shù)}見sy梳s_斥se刊tu考p匙函數(shù)輝在系嶄統(tǒng)初譜始化趁時被船調(diào)用背,以薦下為片其步橫驟:從從0x90080讀入setup.s創(chuàng)建的硬盤參數(shù)表設置硬盤起始扇區(qū)號和扇區(qū)總數(shù)通過讀取CMOS信息的方法重新確定系統(tǒng)中硬盤數(shù)和扇區(qū)信息通過bread讀取硬盤主引導記錄分區(qū)表讀入每個硬盤分區(qū)信息加載(創(chuàng)建)RAMDISKrd_load()安裝根文件系統(tǒng)mount_root()奶硬盤申操作葉的核逝心函抓數(shù)娃是猴do惜_h磚d_向re刻qu雹es皇t貨函數(shù)絮,曠hd慚.馳c歷中其錄余函縣數(shù)均顆為其嶺服務怕。以泛下沙為找do完_h延d_島re澆qu圖es衣t催流程檢查請求合法性檢查請求合法性換算硬盤的扇區(qū)號、柱面號和磁道號若要執(zhí)行復位硬盤,則復位硬盤若重新校正標志置位,則重新校正硬盤若當前請求是寫扇區(qū)命令,循環(huán)讀取狀態(tài)寄存器看是否就緒若規(guī)定時間(次數(shù))內(nèi)讀取成功,發(fā)送1個扇區(qū)數(shù)據(jù)到數(shù)據(jù)寄存器,否則寫盤失敗,去處理下一個硬盤請求若當前請求是讀扇區(qū)命令,發(fā)送讀扇區(qū)命令豐詳炊見綱p1產(chǎn)3偽7就解釋害和特p1乏3豆8麻圖縱6-揚3茄下面圈分析去硬盤悅驅(qū)動耍程泥序稀li制nu摩x/縱ke腫rn家el嫂/b絮lk環(huán)_d蔑rv娛/h季d.鴉c騎該文仗件內(nèi)基容分松兩部誦分忙1衰.雀硬盤慰初始補化出2幼.智硬盤忘驅(qū)動總以下民關注爬硬盤易驅(qū)風動的饑實現(xiàn)帶。塔其主朝流程久是機do刮_h罷d_跪re倦qu欠es遼t家,由拒于該敵流程撒也在爬中斷何中被到調(diào)用壇,所寺以該贊函數(shù)戰(zhàn)被反甩復調(diào)殺用,那用來奸處理豆硬盤霧復位越、重三校、率讀、繭寫的村請求村。下伶面分張三部嗓分對南該函辛數(shù)拆趙解:遙復位往、重基校統(tǒng)喪稱為埋錯誤鄉(xiāng)處理燭(因國為復儉位流異程保敲含了桿重校資流程加)墳2呈.徑寫警盤春3殘.饑讀盤并錯誤節(jié)流程碑處理皂:1.1.若reset置1,置重校標志。2.診斷復位硬盤控制器3.向硬盤控制器發(fā)送命令塊(重建參數(shù))4.中斷指針do_hd指向硬盤重校函數(shù)時間監(jiān)測硬盤執(zhí)行命令后的狀態(tài),1.若出錯看是否超出最多允許出錯數(shù),則結(jié)束對該請求項的處理,若出錯數(shù)大于最多允許錯誤數(shù)一半,則置reset=12.不出錯則繼續(xù)處理硬盤請求do_hd_requestCPU硬盤控制器復位硬盤控制器中斷過程喂對于泥結(jié)束這對該筒請求陽項的夾處理躺見綠bl鄭k.鋒h湊p1被36散e蟲nd屬_r瑞eq因ue慰s搏t本函數(shù)跨,執(zhí)飛行流擇程為股:關閉設備關閉設備置當前處理中的請求設備對應緩沖區(qū)更新標志若更新標志為0,顯示出錯信息喚醒等待該請求項的進程,喚醒等待請求的進程釋放該請求項,指向下一請求項福錯誤助處理盾流程狡屬于煩輔助公流程稼,每迫次起處理辰讀、羽寫請摘求都蹦可能毯會經(jīng)圖歷,曉是滋保疾證操減作成黃功的飛必要虹步驟甲。喪中斷底過程導是由而硬盤姥控制孝器觸憐發(fā)的史中斷批引起源的,塌中斷房會傳歌入陷82哄5盛9宵中斷削控制承器再叉?zhèn)髹櫧o酸CP習U星,操哭作系脊統(tǒng)會毅調(diào)疊用鴨do葡_h瞧d碌指向倉的函港數(shù)作蝶為中侵斷過幫程執(zhí)狼行。掩因此憲程序雕中擋把藏do顫_h籌d挎賦值香給某睛函數(shù)染指針獄,等謊到硬短盤控泥制器捉中斷慌被詞CP源U狼接收塔后,束中斷緒過程飾就送“防自新動著”攤執(zhí)行沸。至襖于如川何擾“寶自冷動灣”原,即最中斷赤實現(xiàn)遭原理讓,將稈在進睬程調(diào)脫度與遲系統(tǒng)共調(diào)用衡一章錫討論鉆。愛讀寫摧硬默盤的番流程憲大致美如下與:憤寫盤搖流程塞處理11.發(fā)送寫命令及扇區(qū)等命令,中斷指令do_hd同時指向?qū)懮葏^(qū)中斷函數(shù)2.循環(huán)讀取狀態(tài)寄存器信息并判斷請求服務標志DRQ_STAT是否置位3.若循環(huán)結(jié)束仍未置位,執(zhí)行錯誤處理流程。否則進行硬盤第一次寫數(shù)據(jù)時間CPU硬盤控制器1.若硬盤控制器返回錯誤信息,執(zhí)行錯誤處理流程并返回2.否則置中斷函數(shù)指針do_hd為寫硬盤函數(shù),并向數(shù)據(jù)寄存器端口寫256字即512B,一個扇區(qū)3.若全部扇區(qū)數(shù)據(jù)已寫完,處理請求結(jié)束事宜,執(zhí)行下一硬盤請求硬盤控制器執(zhí)行寫一個扇區(qū)數(shù)據(jù)硬盤控制器執(zhí)行寫一個扇區(qū)數(shù)據(jù)中斷中斷過程…正讀盤鏡流程泳處理11.發(fā)送讀命令及扇區(qū)等命令,中斷指令do_hd同時指向?qū)懮葏^(qū)中斷函數(shù)時間CPU硬盤控制器1.若硬盤控制器返回錯誤信息,執(zhí)行錯誤處理流程并返回2.將數(shù)據(jù)從數(shù)據(jù)寄存器口讀到請求結(jié)構(gòu)緩沖3.若所需讀出數(shù)據(jù)還未讀完,則置中斷指針do_hd為讀硬盤函數(shù)并返回,否則處理請求結(jié)束事宜,執(zhí)行下一硬盤請求硬盤控制器執(zhí)行讀一個扇區(qū)數(shù)據(jù)中斷中斷過程…醋可以蓮看出臭,寫療盤、背讀盤由流程情差別種不大哀,區(qū)泰別就四在于義寫盤膠要先慕讀狀判態(tài)寄友存器鹿信息薯并進扶行第母一次墨寫盤峽。辰下面覺分析羊軟盤怨驅(qū)動路程植序礙li臂nu巧x/家ke振rn紐el壇/b沉lk秧_d嶄rv京/f島lo摔pp旺y.鴨c禁,其養(yǎng)主流告程同奧樣妙是蓋do兼_f手d_酷re襯qu伙es趕t丹,摸與硬餃盤驅(qū)并動最撐大的汪不同給是用更到了面一些濁定時骨操作旺,詳協(xié)見乖p1裁5喬7而描述享,泥do庸_f總d_廉re仙qu訂es垂t欄同樣仿分碼為市1.藥復位緊、重吊校統(tǒng)蠅稱錯拴誤處莫理雙2.博寫屢盤雁3.掏讀燒盤錦三部重分捎錯誤蝶處理裙流程1.1.關中斷2.置重置軟盤操作后的中斷調(diào)用函數(shù),即do_floppy指向reset_interrupt3.延遲等待后啟動軟盤控制器4.開中斷時間CPU硬盤控制器1.檢測中斷狀態(tài),讀取命令執(zhí)行結(jié)果字節(jié)2.發(fā)送設定軟驅(qū)參數(shù)命令啟動軟盤控制器中斷中斷過程復位1.當前磁道號歸零2.置校正軟盤操作后的中斷調(diào)用函數(shù),即do_floppy指向recal_interrrupt3.發(fā)送校正命令及參數(shù):磁道號和驅(qū)動器號4.如復位標志被置位,繼續(xù)執(zhí)行復位流程1.檢測中斷狀態(tài),讀取命令執(zhí)行結(jié)果字節(jié),若異常結(jié)束,復位標志置位2.返回do_fd_request中斷過程校正設定軟盤控制器參數(shù)校正軟盤控制器中斷樓讀盤誼、寫箱盤操鳥作僅紙有細刊微差瓦別,胞并在樂一起趴分析蹦:1.1.根據(jù)請求項,置軟盤讀寫命令碼2.添加定時器,指定驅(qū)動器到能正常運行需要的時間(秒),當定時時間到時調(diào)用函數(shù)floppy_on_interrupt時間CPU硬盤控制器1.置已選擇當前驅(qū)動器標志2.設置數(shù)字輸出寄存器DOR為當前驅(qū)動器3.執(zhí)行讀寫傳輸函數(shù)transfer()定時中斷中斷過程do_fd_request1.設置當前驅(qū)動器參數(shù),發(fā)送命令和參數(shù)2.設置指定驅(qū)動器的數(shù)據(jù)傳輸速率3.若復位標志被置位,執(zhí)行錯誤處理流程并返回4.若不需要尋道,執(zhí)行setup_rw_floppy,否則發(fā)送磁頭尋道命令及參數(shù)并置軟盤中斷指針do_floppy為seek_interrupt1.檢測中斷狀態(tài)命令,若出錯執(zhí)行錯誤處理流程否則設置當前磁道為尋道號2.執(zhí)行setup_rw_floppy中斷過程transfer設置當前驅(qū)動器設置驅(qū)動器參數(shù)中斷floppy_on

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論