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