Linux 字符設備和塊設備的區別

Linux的字符設備和塊設備的區別是什麼?linux

Linux的字符設備和塊設備

塊設備是系統中可以隨機(不須要按順序)訪問固定大小數據片(chunks)的設備,這些數據片就稱做塊。最多見的塊設備是硬盤,除此之外,還有軟盤驅動器、CD-ROM驅動器和閃存等等許多其餘塊設備。注意,它們都是以安裝文件系統的方式使用的——這也是塊設備的通常訪問方式。緩存

字符設備按照字符流的方式被有序訪問,像串口和鍵盤就都屬於字符設備。若是一個硬件設備是以字符流的方式被訪問的話,那就應該將它歸於字符設備;反過來,若是一個設備是隨機(無序的)訪問的,那麼它就屬於塊設備。bash

這兩種基本類型的設備的根本區別在於它們是否能夠被隨機訪問——換句話說就是,可否在訪問設備時隨意地從一個位置跳轉到另外一個位置。性能

內核管理塊設備要比管理字符設備細緻得多,須要考慮的問題和完成的工做相比字符設備來講要複雜許多。這是由於字符設備僅僅須要控制一個位置—當前位置—而塊設備訪問的位置必須可以在介質的不一樣區間先後移動。因此事實上內核沒必要提供一個專門的子系統來管理字符設備,可是對塊設備的管理卻必需要有一個專門的提供服務的子系統。不單單是由於塊設備的複雜性遠遠高於字符設備,更重要的緣由是塊設備對執行性能的要求很高;對硬盤每多一分利用都會對整個系統的性能帶來提高,其效果要遠遠比鍵盤吞吐速度成倍的提升大得多。另外,咱們將會看到,塊設備的複雜性會爲這種優化留下很大的施展空間。優化

塊設備經過系統緩存進行讀取,不是直接和物理磁盤讀取。字符設備能夠直接物理磁盤讀取,不通過系統緩存。(如鍵盤,直接相應中斷)htm

 

bash 中判斷文件字符型( -c filename),塊文件(-b filename) 。get

 

參考:file

linux公社硬件

相關文章
相關標籤/搜索