美國Linux服務(wù)器系統有字符設備跟塊設備的區分,但因為名稱(chēng)很接近,所以不熟悉的美國服務(wù)器用戶(hù)們對這兩個(gè)概念不是很理解,所以小編就來(lái)介紹下美國Linux服務(wù)器系統的字符設備和塊設備以及它們之間的區別。
1、美國Linux服務(wù)器塊設備
美國Linux服務(wù)器系統中能夠隨機,不需要按順序訪(fǎng)問(wèn)固定大小數據片chunks的設備被稱(chēng)作塊設備,這些數據片就稱(chēng)作塊。最常見(jiàn)的塊設備是硬盤(pán),除此以外,還有軟盤(pán)驅動(dòng)器、CD-ROM驅動(dòng)器和閃存等等許多其他塊設備。注意,它們都是以安裝文件系統的方式使用的,這也是塊設備的一般訪(fǎng)問(wèn)方式。
2、美國Linux服務(wù)器字符設備
另一種基本的設備類(lèi)型是字符設備。字符設備按照字符流的方式被有序訪(fǎng)問(wèn),像串口和鍵盤(pán)就都屬于字符設備。如果一個(gè)硬件設備是以字符流的方式被訪(fǎng)問(wèn)的話(huà),那就應該將它歸于字符設備;反過(guò)來(lái),如果一個(gè)設備是隨機無(wú)序訪(fǎng)問(wèn)的,那么它就屬于塊設備。
這兩種類(lèi)型的設備的根本區別在于,它們是否可以被隨機訪(fǎng)問(wèn),也就是說(shuō)能否在訪(fǎng)問(wèn)設備時(shí)隨意地從一個(gè)位置跳轉到另一個(gè)位置。舉個(gè)例子,鍵盤(pán)這種設備提供的就是一個(gè)數據流,當你敲入“mfy” 這個(gè)字符串時(shí),鍵盤(pán)驅動(dòng)程序會(huì )按照和輸入完全相同的順序返回這個(gè)由三個(gè)字符組成的數據流。如果讓鍵盤(pán)驅動(dòng)程序打亂順序來(lái)讀字符串,或讀取其他字符,都是沒(méi)有意義的。所以鍵盤(pán)就是一種典型的字符設備,它提供的就是用戶(hù)從鍵盤(pán)輸入的字符流。對鍵盤(pán)進(jìn)行讀操作會(huì )得到一個(gè)字符流,首先是“m”,然后是“f”,最后是“y”,最終是文件的結束。
而當沒(méi)敲鍵盤(pán)時(shí),字符流就是空的。硬盤(pán)設備的情況就不大一樣了。硬盤(pán)設備的驅動(dòng)可能要求讀取磁盤(pán)上任意塊的內容,然后又轉去讀取別的塊的內容,而被讀取的塊在磁盤(pán)上位置不一定要連續,所以說(shuō)硬盤(pán)可以被隨機訪(fǎng)問(wèn),而不是以流的方式被訪(fǎng)問(wèn),顯然它是一個(gè)塊設備。
美國服務(wù)器內核管理塊設備要比管理字符設備細致得多,需要考慮的問(wèn)題和完成的工作相比字符設備來(lái)說(shuō)也要復雜許多。這是因為字符設備僅僅需要控制一個(gè)位置,就是當前位置,而塊設備訪(fǎng)問(wèn)的位置必須能夠在介質(zhì)的不同區間前后移動(dòng)。所以事實(shí)上內核不必提供一個(gè)專(zhuān)門(mén)的子系統來(lái)管理字符設備,但是對塊設備的管理卻必須要有一個(gè)專(zhuān)門(mén)的提供服務(wù)的子系統。
不僅僅是因為塊設備的復雜性遠遠高于字符設備,更重要的原因是塊設備對執行性能的要求很高,對硬盤(pán)每多一分利用都會(huì )對整個(gè)系統的性能帶來(lái)提升,其效果要遠遠比鍵盤(pán)吞吐速度成倍的提高大得多。另外,美國服務(wù)器用戶(hù)將會(huì )看到,塊設備的復雜性會(huì )為這種優(yōu)化留下很大的施展空間。
簡(jiǎn)單來(lái)講,美國Linux服務(wù)器系統的塊設備可以隨機存取,而字符設備不能隨機存取,塊設備通過(guò)系統緩存進(jìn)行讀取,不是直接和物理磁盤(pán)讀??;字符設備可以直接物理磁盤(pán)讀取,不經(jīng)過(guò)系統緩存。