這篇文章主要介紹了Linux操作系統中的塊設備是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Linux操作系統中的塊設備是什么文章都會有所收獲,下面我們一起來看看吧。
網站建設哪家好,找創新互聯!專注于網頁設計、網站建設、微信開發、小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了平山免費建站歡迎大家使用!
在Windows操作系統下磁盤設備似乎是一個實實在在的設備,我們可以通過圖形界面對磁盤設備進行管理。如圖1是Windows下的磁盤管理界面,可以通過這個界面清晰的看到磁盤設備,并且可以對其進行格式化等操作。
圖1 Windows磁盤設備
Linux操作系統的磁盤設備并不直觀,在LInux系統中“一切皆文件”的理念下,磁盤設備其實是一個文件,只不過是一個比較特殊的文件。如圖2是某些磁盤和分區的文件路徑,其中黃色字體部分是磁盤的路徑(類似文件路徑),而前面紅色方框內的b表示這個文件是磁盤設備文件,而非普通文件。
圖2 Linux系統下磁盤設備
磁盤設備文件也是位于VFS(虛擬文件系統)下面,與Ext4等文件系統類似(參考圖3)。用戶層面可以用訪問普通文件的接口(API)訪問磁盤。如下代碼是用Python實現的一個向磁盤寫入字符串的程序。代碼很簡單,就是打開磁盤所在的路徑(path),然后調用write函數寫數據。
Linux系統中磁盤的本質
通過上面的描述我們知道對于Linux操作系統來說,磁盤就是一個文件。而磁盤本身就是一個線性存儲空間(可以理解為一個大數組),這種方式與文件也是非常類似的。鑒于上述相似性,Linux將磁盤設備抽象為一個文件并沒有任何不妥之處。
實質上,在Linux操作系統磁盤設備是基于一個稱為bdev的偽文件系統來管理的,bdev文件系統是一個在內存中的偽文件系統(在內存的文件系統,無持久化的數據),位置與Ext4等文件系統相同。如圖3所示,bdev文件系統的位置為圖中紅色區域。
圖3 bdev文件系統位置
理解了塊設備的管理方式,再結合我們之前對文件系統的相關介紹,這樣就很容易理解后續的內容了。在文件系統相關文章介紹中我們知道,不同文件系統數據處理的關鍵是其提供的函數集,而這個函數集是在打開文件的時候確定的。磁盤設備也是如此,當我們打開磁盤設備時,操作系統根據磁盤設備的特性,會初始化inode中的函數集。而后續對該磁盤設備的讀寫操作就能通過該函數集完成。如下代碼所示 ,塊設備連同字符設備和管道都作為特殊的文件進行處理,并初始化對應的函數集。
完成函數集的初始化后,當用戶調用VFS層的接口時,VFS層就可以找到具體的處理函數,進而完成用戶的操作。這里的函數集與本地文件系統的函數集別無二致,差異在于普通文件系統需要管理目錄和文件,而bdev偽文件系統是將磁盤看作一個大文件,更簡單一些。
磁盤的緩存
既然磁盤偽文件系統bdev本身也是一個文件系統,因此自然也可以有緩存。這個緩存就是用于提升磁盤性能的緩存系統。磁盤的緩存系統與文件系統的緩存系統類似,也是通過頁緩存來實現的。當然,Linux磁盤的緩存是可以關閉的,此時將調用另外一套函數集。
這樣說起來可能比較抽象,下面我們以一個具體的例子來看一下磁盤緩存的具體實現。如下是磁盤偽文件系統的函數集,我們以寫數據為例進行介紹。
圖4 磁盤函數集
寫數據的函數為blkdev_write_iter,該函數會調用generic_perform_write函數。如果大家閱讀過本號關于文件系統的文件的話,很清楚后者就是VFS中向頁緩存寫數據的函數。也就是說塊設備偽文件系統的邏輯與本地文件系統完全一致。
關于“Linux操作系統中的塊設備是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Linux操作系統中的塊設備是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道。
網頁標題:Linux操作系統中的塊設備是什么
網址分享:http://vcdvsql.cn/article46/pegphg.html
成都網站建設公司_創新互聯,為您提供網站設計、定制網站、定制開發、移動網站建設、網站改版、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯