訪問硬碟(四)

2021-05-02 11:55:44 字數 697 閱讀 8332

下面我們來實現ideharddrive這個類。ideharddrive將真正和硬碟硬體打上交道,假如你已經忘了該如何操作硬碟,請參考前面的介紹 。

廢話少說,我們先來看建構函式

大家看到這裡我們include了乙個叫intrin.h的標頭檔案。這個標頭檔案是乙個vc標準標頭檔案。裡面宣告了一些編譯器內建函式,比如埠讀寫等等。我們使用了這些函式就可以不用內嵌彙編來讀寫埠了。

建構函式非常簡單,僅僅初始化了ide的埠基位址,對於第乙個ide控制器來說,這個基位址是1f0。對於第二個ide控制器來說,這個基位址是170。用這種方式,我們就避免了硬編碼埠位址,從而可以支援多個ide控制器。當然,這裡我還沒有加上主從盤的區別,這裡我們只支援硬碟掛在主盤的位置上,讀者有興趣可以將其改為支援從盤。

接下來我們來看看我們要如何開啟乙個硬碟。開啟硬碟時我們需要做什麼初始化工作呢?

這裡我們看到,當開啟乙個硬碟的時候,我們讀出了硬碟分割槽表。readblock函式我們後面會介紹到,它將把制定的乙個扇區讀到buffer處,然後從裡邊得到硬碟分割槽表資料並存入m_partitiontables陣列。

有了分割槽表資料後,我們就可以列舉分割槽了。

列舉分割槽時,我們將依次檢查4個分割槽表項。假如分割槽存在,我們就為其建立乙個主分割槽物件,並把這個主分割槽物件加入返回的分割槽集合。另外,刪除分割槽和修改分割槽暫時沒有用,我們就不實現了,大不了丟擲乙個異常了事。讀者可以自己來寫**,這裡我就不多寫了。

訪問硬碟(二)

這一節我們來看下rmosldr中硬碟驅動的各個介面 首先我們需要乙個c 塊裝置介面。這個介面將實現裝置的分塊讀取。硬碟驅動器,光碟驅動器,usb驅動器都要實現這個介面。換句話說,只要某個裝置實現了這個介面,就可以在其上建立檔案系統。這個介面個各個方法都很容易理解。開啟裝置 關閉裝置,得到裝置的塊大小...

dma訪問主存時 為什麼 CPU 訪問硬碟很慢

機械硬碟 hard disk drive hdd 和固態硬碟 solid state drive ssd 是兩種最常見的硬碟,作為計算機的外部儲存,cpu 想要訪問它們儲存的資料需要很長時間,如下表所示,在 ssd 中隨機訪問 4kb 資料所需要的時間是訪問主存的 1,500 倍,機械磁碟的尋道時間...

Linux掛載硬碟,並通過Samba訪問

1.使用root使用者登入自己的linux虛擬機器,如下圖 2.使用root使用者重啟自己的虛擬機器,執行reboot命令。3.重啟後在root使用者下用fdisk l命令檢視新磁碟,會發現多出乙個 dev sdc 根據掛盤的數量不同,可能不同 磁碟,如圖 4.在root使用者下執行parted命令...