關於linux塊裝置和字元裝置的舉例

2021-06-21 11:06:58 字數 855 閱讀 6897

字元裝置:提供連續的資料流,應用程式可以順序讀取,通常不支援隨機訪問。相反

此類裝置支援按位元組/字元來讀寫資料。舉例來說,

鍵盤是典型的字元裝置。

塊裝置:應用程式可以隨機訪問裝置資料,程式可自行確定讀取資料的位置。硬碟是

典型的塊裝置,應用程式可以定址磁碟上的任何位置,並由此讀取資料。此外,資料

的讀寫只能以塊(通常是512b)的倍數進行。與字元裝置不同,塊裝置並不支援基於字

符的定址。

鍵盤這種裝置提供的就是乙個資料流,當你敲入「fox」這個字串時,鍵盤驅動程式會按照和輸入完全相同的順序返回這個由三個字元組成的資料流。如果讓鍵盤驅動程式打亂順序來讀字串,或讀取其他字元,都是沒有意義的。所以鍵盤就是一種典型的字元裝置,它提供的就是使用者從鍵盤輸入的字元流。對鍵盤進行讀操作會得到乙個字元流,首先是「f」,然後是「o」,最後是「x」,最終是檔案的結束(eof)。當沒人敲鍵盤時,字元流就是空的。

硬碟裝置的情況就不大一樣了。硬碟裝置的驅動可能要求讀取磁碟上任意塊的內容,然後又轉去讀取別的塊的內容,而被讀取的塊在磁碟上位置不一定要連續,所以說硬碟可以被隨機訪問,而不是以流的方式被訪問,顯然它是乙個塊裝置。

核心管理塊裝置要比管理字元裝置細緻得多,需要考慮的問題和完成的工作相比字元裝置來說要複雜許多。這是因為字元裝置僅僅需要控制乙個位置—當前位置—而塊裝置訪問的位置必須能夠在介質的不同區間前後移動。所以事實上核心不必提供乙個專門的子系統來管理字元裝置,但是對塊裝置的管理卻必須要有乙個專門的提供服務的子系統。不僅僅是因為塊裝置的複雜性遠遠高於字元裝置,更重要的原因是塊裝置對執行效能的要求很高;對硬碟每多一分利用都會對整個系統的效能帶來提公升,其效果要遠遠比鍵盤吞吐速度成倍的提高大得多。另外,我們將會看到,塊裝置的複雜性會為這種優化留下很大的施展空間。

Linux中字元裝置和塊裝置

linux中i o裝置分為兩類 字元裝置和塊裝置。兩種裝置本身沒有嚴格限制,但是,基於不同的功能進行了分類。1 字元裝置 提供連續的資料流,應用程式可以順序讀取,通常不支援隨機訪問。相反,此類裝置支援按位元組 字元來讀寫資料。舉例來說,鍵盤 串列埠 數據機都是典型的字元裝置。2 塊裝置 應用程式可以...

linux 字元裝置和塊裝置的區別

linux中i o裝置分為兩類 字元裝置和塊裝置。兩種裝置本身沒有嚴格限制,但是,基於不同的功能進行了分類。1 字元裝置 提供連續的資料流,應用程式可以順序讀取,通常不支援隨機訪問。相反,此類裝置支援按位元組 字元來讀寫資料。舉例來說,鍵盤 串列埠 數據機都是典型的字元裝置。2 塊裝置 應用程式可以...

字元裝置和塊裝置區別

裝置分為兩種 字元裝置和塊裝置。不同之處在於塊裝置對於請求有緩衝區,因此它們可以選擇以什麼順序進行響應。對於儲存裝置而言這一點是很重要的,因為在讀寫連續的扇區時比遠遠的分離的扇區更快。另乙個不同就是塊裝置只能以塊為單位接受輸入和返回輸出 塊的大小根據裝置的不同而不同 而字元裝置只能使用它們可能使用的...