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