這一節我們來看下rmosldr中硬碟驅動的各個介面
首先我們需要乙個c++塊裝置介面。這個介面將實現裝置的分塊讀取。硬碟驅動器,光碟驅動器,usb驅動器都要實現這個介面。換句話說,只要某個裝置實現了這個介面,就可以在其上建立檔案系統。
這個介面個各個方法都很容易理解。開啟裝置、關閉裝置,得到裝置的塊大小,得到裝置的總塊數,以及讀和寫。
除此之外,某些儲存裝置(如硬碟,u盤)還提供了分割槽功能。所以我們還必須有乙個介面來支援儲存裝置分割槽。可想而知,這個介面應該可以建立分割槽,刪除分割槽,修改分割槽,列舉分割槽。由於我暫時只關心硬碟,所以這個介面基本上是為硬碟設計的。
上面用到分割槽表結構:
對於硬碟來說,分割槽可以分為主分割槽,擴充套件分割槽,和邏輯分割槽。我們暫時不打算管邏輯分割槽,因此我們定義了主分割槽乙個個類。主分割槽上可以建立檔案系統,因此,主分割槽類應該實現iblockdevice介面。
最後就是我們的硬碟裝置類了。硬碟自然是乙個塊裝置,同時也可以在其上分割槽。所以硬碟應該實現iblockdevice介面和ipartitionable介面。
為了更方便大家理解這些介面和類的物件關係,我們可以畫出下面的uml圖
訪問硬碟(四)
下面我們來實現ideharddrive這個類。ideharddrive將真正和硬碟硬體打上交道,假如你已經忘了該如何操作硬碟,請參考前面的介紹 廢話少說,我們先來看建構函式 大家看到這裡我們include了乙個叫intrin.h的標頭檔案。這個標頭檔案是乙個vc標準標頭檔案。裡面宣告了一些編譯器內建...
理解硬碟 二
一 我的磁碟引數 我們知道硬碟裡面重要的幾個概念 磁頭 head 柱面 cylinder 扇區 sector 下圖是我電腦的這幾項的資料,用diskgenius檢視的 共有60801個柱面,255個磁頭,每道扇區數63個,總扇區數 976773168,這裡說明兩點 1 磁頭數為奇數 我們知道磁碟裡面...
dma訪問主存時 為什麼 CPU 訪問硬碟很慢
機械硬碟 hard disk drive hdd 和固態硬碟 solid state drive ssd 是兩種最常見的硬碟,作為計算機的外部儲存,cpu 想要訪問它們儲存的資料需要很長時間,如下表所示,在 ssd 中隨機訪問 4kb 資料所需要的時間是訪問主存的 1,500 倍,機械磁碟的尋道時間...