⑴ 請教塊設備與字元設備的區別
Linux中I/O設備分為兩類:字元設備和塊設備。兩種設備本身沒有嚴格限制,但是,基於不專同的功能進屬行了分類。
(1)字元設備:提供連續的數據流,應用程序可以順序讀取,通常不支持隨機存取。相反,此類設備支持按位元組/字元來讀寫數據。舉例來說,鍵盤、串口、數據機都是典型的字元設備。
(2)塊設備:應用程序可以隨機訪問設備數據,程序可自行確定讀取數據的位置。硬碟、軟盤、CD-ROM驅動器和快閃記憶體都是典型的塊設備,應用程序可以定址磁碟上的任何位置,並由此讀取數據。此外,數據的讀寫只能以塊(通常是512B)的倍數進行。與字元設備不同,塊設備並不支持基於字元的定址。
總結一下,這兩種類型的設備的根本區別在於它們是否可以被隨機訪問。字元設備只能順序讀取,塊設備可以隨機讀取。
⑵ 字元設備和塊設備的區別
Linux中抄I/O設備分為兩類:字襲符設備和塊設備。兩種設備本身沒有嚴格限制,但是,基於不同的功能進行了分類。
(1)字元設備:提供連續的數據流,應用程序可以順序讀取,通常不支持隨機存取。相反,此類設備支持按位元組/字元來讀寫數據。舉例來說,鍵盤、串口、數據機都是典型的字元設備。
(2)塊設備:應用程序可以隨機訪問設備數據,程序可自行確定讀取數據的位置。硬碟、軟盤、CD-ROM驅動器和快閃記憶體都是典型的塊設備,應用程序可以定址磁碟上的任何位置,並由此讀取數據。此外,數據的讀寫只能以塊(通常是512B)的倍數進行。與字元設備不同,塊設備並不支持基於字元的定址。
總結一下,這兩種類型的設備的根本區別在於它們是否可以被隨機訪問。字元設備只能順序讀取,塊設備可以隨機讀取。
⑶ 字元驅動和字元設備驅動有什麼區別
可以講字元設備和字元設備驅動歸為一類,它們都是可以順序/隨機地進行讀取和存儲的單元,二者驅動主要在於塊設備需要具體的burst實現,對訪問也有一定的邊界要求。其他的沒有什麼不同。
網路設備是特殊設備的驅動,它負責接收和發送幀數據,可能是物理幀,也可能是ip數據包,這些特性都有網路驅動決定。它並不存在於/dev下面,所以與一般的設備不同。網路設備是一個net_device結構,並通過register_netdev注冊到系統里,最後通過ifconfig -a的命令就能看到。
不論是什麼設備,設備級的數據傳輸都是基本類似的,內核里的數據表示只是一部分,更重要的是匯流排的訪問,例如串列spi,i2c,並行dma等。
⑷ 裸設備和字元設備有區別嗎
需要自己建立分區對應的裸設備,具體方法根據Linux版本有區別
⑸ unlx/linux操作系統中將設備分為字元設備和塊設備進行管理,有什麼特點
字元設備是一些串列埠的設備,比如鍵盤、滑鼠等,它的特點是串列讀專取,不能夠截斷輸出屬(也就是不能隨機訪問)。比如滑鼠,它的移動是滑動而不是跳躍。
塊設備一般是存儲設備,比如硬碟、軟盤等。它的特點是讓系統隨機訪問,比如硬碟,你可以在硬碟的不同塊讀寫,也可以隨機訪問硬碟的數據。
⑹ 塊設備和字元設備有什麼區別
/dev/dsk對應的為塊設備,文件系統的操作用到它,如mount。/dev/rdsk對應的為字元設備(裸設備,rdsk的r即為 raw),fsck
newfs等會涉及到。一般我們的操作系統和各種軟體都是以塊方式讀寫硬碟,這里的塊是邏輯塊,創建文件系統時可以選擇,windows里叫簇。可看 newfs or
mkfs的manual。oracle是比較常見的字元方式讀寫硬碟。
字元設備還是塊設備的定義屬於操作系統的設備訪問層,與實際物理設備的特性無必然聯系。設備訪問層下面是驅動程序,所以只要驅動程序提供的方式,都可以。也就是說驅動程序支持stream方式,那麼就可以用這種方式訪問,驅動程序如果還支持block方式,那麼你想用哪種方式訪問都可以,典型的比如硬碟式的裸設備,兩種都支持塊設備(block
device):是一種具有一定結構的隨機存取設備,對這種設備的讀寫是按塊進行的,他使用緩沖區來存放暫時的數據,待條件成熟後,從緩存一次性寫入設備或從設備中一次性讀出放入到緩沖區,如磁碟和文件系統等字元設備(Character
device):這是一個順序的數據流設備,對這種設備的讀寫是按字元進行的,而且這些字元是連續地形成一個數據流。他不具備緩沖區,所以對這種設備的讀寫是實時的,如終端、磁帶機等。
⑺ linux 字元設備文件有什麼作用
/dev/audio是字元設備文件,其他的是塊設備文件 補充:對audio的存取是以位元組流方式來進行的。其它的設回備/dev/cdrom, /dev/fd0, /dev/had都是答磁碟(光碟機,軟碟機,主硬碟),它們的存取是通過數據塊來進行的
⑻ 按什麼分類可以分成塊設備和字元設備
D、信息交換單位
塊與字元屬於不同的單位 跟屬性特性啥的沒關系 (基礎)
⑼ 塊設備文件和字元設備文件的本質區別是什麼
設備文件分為Block
Device Driver和Character Device Drive兩類。 Device Drive又被稱為字元設備或裸設備raw
devices; Block Device Driver通常成為塊設備。而Block Device Driver是以固定大小長度來傳送轉移資料
;Character Device Driver是以不定長度的字元傳送資料 。且所連接的Devices也有所不同,Block
Device大致是可以隨機存取(Random Access)資料的設備,如硬碟機或光碟機;而Character
Device剛好相反,依循先後順序存取資料的設備,如印表機 、終端機等皆是。
/dev/dsk對應的為塊設備,文件系統的操作用到它,如mount。/dev/rdsk對應的為字元設備(裸設備,rdsk的r即為 raw),fsck
newfs等會涉及到。一般我們的操作系統和各種軟體都是以塊方式讀寫硬碟,這里的塊是邏輯塊,創建文件系統時可以選擇,windows里叫簇。可看 newfs or
mkfs的manual。oracle是比較常見的字元方式讀寫硬碟。
字元設備還是塊設備的定義屬於操作系統的設備訪問層,與實際物理設備的特性無必然聯系。設備訪問層下面是驅動程序,所以只要驅動程序提供的方式,都可以。也就是說驅動程序支持stream方式,那麼就可以用這種方式訪問,驅動程序如果還支持block方式,那麼你想用哪種方式訪問都可以,典型的比如硬碟式的裸設備,兩種都支持塊設備(block
device):是一種具有一定結構的隨機存取設備,對這種設備的讀寫是按塊進行的,他使用緩沖區來存放暫時的數據,待條件成熟後,從緩存一次性寫入設備或從設備中一次性讀出放入到緩沖區,如磁碟和文件系統等字元設備(Character
device):這是一個順序的數據流設備,對這種設備的讀寫是按字元進行的,而且這些字元是連續地形成一個數據流。他不具備緩沖區,所以對這種設備的讀寫是實時的,如終端、磁帶機等。
系統中能夠隨機(不需要按順序)訪問固定大小數據片(chunks)的設備被稱作塊設備,這些數據片就稱作塊。最常見的塊設備是硬碟,除此以外,還有軟盤驅動器、CD-ROM驅動器和快閃記憶體等等許多其他塊設備。注意,它們都是以安裝文件系統的方式使用的——這也是塊設備一般的訪問方式。
另一種基本的設備類型是字元設備。字元設備按照字元流的方式被有序訪問,像串口和鍵盤就都屬於字元設備。如果一個硬體設備是以字元流的方式被訪問的話,那就應該將它歸於字元設備;反過來,如果一個設備是隨機(無序的)訪問的,那麼它就屬於塊設備。
這兩種類型的設備的根本區別在於它們是否可以被隨機訪問——換句話說就是,能否在訪問設備時隨意地從一個位置跳轉到另一個位置。舉個例子,鍵盤這種設備提供的就是一個數據流,當你敲入「fox」這個字元串時,鍵盤驅動程序會按照和輸入完全相同的順序返回這個由三個字元組成的數據流。如果讓鍵盤驅動程序打亂順序來讀字元串,或讀取其他字元,都是沒有意義的。所以鍵盤就是一種典型的字元設備,它提供的就是用戶從鍵盤輸入的字元流。對鍵盤進行讀操作會得到一個字元流,首先是「f」,然後是「o」,最後是「x」,最終是文件的結束(EOF)。當沒人敲鍵盤時,字元流就是空的。硬碟設備的情況就不大一樣了。硬碟設備的驅動可能要求讀取磁碟上任意塊的內容,然後又轉去讀取別的塊的內容,而被讀取的塊在磁碟上位置不一定要連續,所以說硬碟可以被隨機訪問,而不是以流的方式被訪問,顯然它是一個塊設備。
內核管理塊設備要比管理字元設備細致得多,需要考慮的問題和完成的工作相比字元設備來說要復雜許多。這是因為字元設備僅僅需要控制一個位置—當前位置—而塊設備訪問的位置必須能夠在介質的不同區間前後移動。所以事實上內核不必提供一個專門的子系統來管理字元設備,但是對塊設備的管理卻必須要有一個專門的提供服務的子系統。不僅僅是因為塊設備的復雜性遠遠高於字元設備,更重要的原因是塊設備對執行性能的要求很高;對硬碟每多一分利用都會對整個系統的性能帶來提升,其效果要遠遠比鍵盤吞吐速度成倍的提高大得多。另外,我們將會看到,塊設備的復雜性會為這種優化留下很大的施展空間。
linux驅動程序中字元設備和塊設備的三點區別
1.字元設備只能以位元組為最小單位訪問,而塊設備以塊為單位訪問,例如512位元組,1024位元組等
2.塊設備可以隨機訪問,但是字元設備不可以
3.字元和塊沒有訪問量大小的限制,塊也可以以位元組為單位來訪問