一步步编写操作系统 22 硬盘操作方法
硬盤中的指令很多,各指令的用法也不同。有的指令直接往command寄存器中寫就行了,有的還要在feature寄存器中寫入參數,最權威的方法還是要去參考ATA手冊。由于本書中用到的都是簡單的指令,所以對此抽象出一些公共的步驟僅供參考之用。
不管是讀硬盤還是寫硬盤,都不是一個指令就完事的。相關寄存器都需要設置。要是讀硬盤,得告訴讀哪個扇區,讀幾個扇區,用哪種模式對扇區尋址,LBA?CHS?寫硬盤也一樣,寫哪個,寫幾個,還要設置操作的是哪個通道的哪個硬盤……講了這么多寄存器,有沒有心里發怵?心想,我到底先設置哪個寄存器呢?有沒有個一般硬盤操作的基本順序呢?還真有,小弟馬上給大家呈上大概步驟。最主要的順序就是command寄存器一定得是最后寫,因為一旦command寄存器被寫入后,硬盤就開始干活啦,它才不管其它寄存器中的值對不對,一律拿來就用,有問題的話報錯就好啦。其它寄存器順序不是很重要。
那咱們可以約定個操作順序,免得有選擇恐懼癥的同學感到無所適從,哈哈,抱歉,請原諒我這么說,因為我就有選擇恐懼癥,我很理解像我這樣的同學。咱們還是約定個步驟好:
硬盤工作完成后,它已經準備好了數據,咱們該怎么獲取呢?一般常用的數據傳送方式有:
對于上面的第1種“無條件傳送方式”,應用此方式的數據源設備一定是隨時準備好了數據,cpu隨時取隨時拿都沒問題,如寄存器、內存就是類似這樣的設備,cpu取數據時不用提前打招呼。
第2種“查詢傳送方式”,也稱為程序I/O、PIO(Programming Input/Output Model)。是指傳輸之前,由程序先去檢測設備的狀態。數據源設備在一定的條件下才能傳送數據,這類設備通常是低速設備,比cpu慢很多。cpu需要數據時,先檢查該設備的狀態,如果狀態為“準備好了可以發送”,cpu再去獲取數據。硬盤有status寄存器,里面保存了工作狀態,所以對硬盤可以用此方式來獲取數據。
第3種“中斷傳送方式”,也稱為中斷驅動I/O。上面提到的“查詢傳送方式”有這樣的缺陷,由于cpu需要不斷查詢設備狀態,所以意味著只有最后一刻的查詢才是有意義的,之前的查詢都是發生在數據尚未沒準備好的時間段里,所以說效率不高,僅對于不要求速度的系統可以采用。可以改進的地方是,如果數據源設備將數據準備好后再通知cpu來取,這樣效率就高了。通知cpu可以采用中斷的方式,當數據源設備準備好數據后,它通過發中斷來通知cpu來拿數據,這樣避免了cpu花在查詢上的時間,效率較高。
第4種“直接存儲器存取方式(DMA)”。在中斷傳送方式中,雖然極大地高高了cpu的利用率,但通過中斷方式來通知cpu,cpu就要通過壓棧來保護現場,還要執行傳輸指令,最后還要恢復現場。似乎有同學說此方式已經很爽了,你還想怎樣。哈哈,其實更爽的是一點都不要浪費cpu資源,不讓cpu參與傳輸,完全由數據源設備和內存直接傳輸。cpu直接到內存中拿數據就好了。這就是此方式中“直接”的意思。不過DMA是由硬件實現的,不是軟件概念,所以需要DMA控制器才行。
第5種 “I/O處理機傳送方式”。不知大家發現了沒有,在說上面每一種的時候都把它們各自說的特別好,似乎完美不可替代了,就像電視上的廣告一樣,每次都把自己的產品描述的無與倫比甚至全宇宙第一,但該公司一出新產品,就開始自暴曾經無與倫比的老一代產品的問題以突顯現在產品更勝一籌。DMA已經是借助其它硬件了,cpu已經很輕松了,難道還有更爽的方式?是啊,DMA方式中cpu還嫌爽的不夠,畢竟數據輸入之后或輸出之前還是有一部分工作要由cpu來完成的,如數據交換,組合,校驗。如果DMA控制器再強大一點,把這些工作幫cpu做了就好了。也是哦,既然為了解放cpu,都已經引用一個硬件(DMA)了,干脆一不做二不休,再引入一個硬件吧。于是,I/O處理機誕生啦,聽名字就知道它專門用于處理IO,并且它其實是一種處理器,只不過用的是另一套擅長IO的指令系統,隨時可以處理數據。有了I/O處理機的幫忙,cpu甚至可以不知道有傳輸這回事,這下cpu才真正爽到家啦。同樣,這也是需要單獨的硬件來支持。
綜上所述,硬盤不符合第1種方法,因為它需要在某種條件下才能傳輸。第4種和第5種需要單獨的硬件支持,先不說我們的bochs能否模擬這兩種硬件,單獨學習這兩類硬件的操作方法就很頭疼,大家有興趣的話還是先放一放,以后再琢磨吧。所以在我們的系統中,我們用了第2、3這兩種軟件傳輸方式。
關于硬盤的部分介紹完了,接下來的工作是實踐,我記得當初自己做實驗時的是心情是非常忐忑的,總是擔心有些東西不可控,有些東西自己左右不了。如果您此時的心情也是這樣,那我用“過來人”的經驗告訴您,想太多也沒有用,做就是了,只有做超出自己能力的事才能提高,總做自己能力內的事,咱們大家連走路都不會呢。再說啦,即使是惡夢也會有醒來的一刻,煩事都會過去的,扛吧兄弟,我相信,艱辛過后,您會看到更加強大的自己(這是我說的嗎,好感動)。
【再續】
本書內容來自《操作系統真象還原》,請大家支持正版,多謝。
總結
以上是生活随笔為你收集整理的一步步编写操作系统 22 硬盘操作方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 粉丝突破1280万 新东方被看好:有望稳
- 下一篇: 国际油价下跌 终结七周连涨:国内油价进入