linux系統(tǒng)之linux塊設(shè)備的詳解
經(jīng)過(guò)長(zhǎng)時(shí)間的學(xué)習(xí)linux操作系統(tǒng),發(fā)現(xiàn)要理解linux塊設(shè)備也是必要的,今天小編給大家搜集了關(guān)于塊設(shè)備的概念以及作用,希望大家看后會(huì)有很多收獲。
linux塊設(shè)備,字符設(shè)備
字符設(shè)備還是塊設(shè)備的定義屬于操作系統(tǒng)的設(shè)備訪問(wèn)層,與實(shí)際物理設(shè)備的特性無(wú)必然聯(lián)系。設(shè)備訪問(wèn)層下面是驅(qū)動(dòng)程序,所以只要驅(qū)動(dòng)程序提供的方式,都可以。也就是說(shuō)驅(qū)動(dòng)程序支持stream方式,那么就可以用這種方式訪問(wèn),驅(qū)動(dòng)程序如果還支持block方式,那么你想用哪種方式訪問(wèn)都可以,典型的比如硬盤式的裸設(shè)備,兩種都支持。
塊設(shè)備(blockdevice)
是一種具有一定結(jié)構(gòu)的隨機(jī)存取設(shè)備,對(duì)這種設(shè)備的讀寫是按塊進(jìn)行的,他使用緩沖區(qū)來(lái)存放暫時(shí)的數(shù)據(jù),待條件成熟后,從緩存一次性寫入設(shè)備或從設(shè)備中一次性讀出放入到緩沖區(qū),如磁盤和文件系統(tǒng)等
字符設(shè)備(Characterdevice):這是一個(gè)順序的數(shù)據(jù)流設(shè)備,對(duì)這種設(shè)備的讀寫是按字符進(jìn)行的,而且這些字符是連續(xù)地形成一個(gè)數(shù)據(jù)流。他不具備緩沖區(qū),所以對(duì)這種設(shè)備的讀寫是實(shí)時(shí)的,如終端、磁帶機(jī)等。
系統(tǒng)中能夠隨機(jī)(不需要按順序)訪問(wèn)固定大小數(shù)據(jù)片(chunks)的設(shè)備被稱作塊設(shè)備,這些數(shù)據(jù)片就稱作塊。最常見(jiàn)的塊設(shè)備是硬盤,除此以外,還有軟盤驅(qū)動(dòng)器、CD-ROM驅(qū)動(dòng)器和閃存等等許多其他塊設(shè)備。注意,它們都是以安裝文件系統(tǒng)的方式使用的——這也是塊設(shè)備一般的訪問(wèn)方式。
另一種基本的設(shè)備類型是字符設(shè)備。字符設(shè)備按照字符流的方式被有序訪問(wèn),像串口和鍵盤就都屬于字符設(shè)備。如果一個(gè)硬件設(shè)備是以字符流的方式被訪問(wèn)的話,那就應(yīng)該將它歸于字符設(shè)備;反過(guò)來(lái),如果一個(gè)設(shè)備是隨機(jī)(無(wú)序的)訪問(wèn)的,那么它就屬于塊設(shè)備。
linux快設(shè)備這兩種類型的根本區(qū)別在于它們是否可以被隨機(jī)訪問(wèn)——換句話說(shuō)就是,能否在訪問(wèn)設(shè)備時(shí)隨意地從一個(gè)位置跳轉(zhuǎn)到另一個(gè)位置。舉個(gè)例子,鍵盤這種設(shè)備提供的就是一個(gè)數(shù)據(jù)流,當(dāng)你敲入“fox”這個(gè)字符串時(shí),鍵盤驅(qū)動(dòng)程序會(huì)按照和輸入完全相同的順序返回這個(gè)由三個(gè)字符組成的數(shù)據(jù)流。如果讓鍵盤驅(qū)動(dòng)程序打亂順序來(lái)讀字符串,或讀取其他字符,都是沒(méi)有意義的。所以鍵盤就是一種典型的字符設(shè)備,它提供的就是用戶從鍵盤輸入的字符流。對(duì)鍵盤進(jìn)行讀操作會(huì)得到一個(gè)字符流,首先是“f”,然后是“o”,***是“x”,最終是文件的結(jié)束(EOF)。當(dāng)沒(méi)人敲鍵盤時(shí),字符流就是空的。硬盤設(shè)備的情況就不大一樣了。硬盤設(shè)備的驅(qū)動(dòng)可能要求讀取磁盤上任意塊的內(nèi)容,然后又轉(zhuǎn)去讀取別的塊的內(nèi)容,而被讀取的塊在磁盤上位置不一定要連續(xù),所以說(shuō)硬盤可以被隨機(jī)訪問(wèn),而不是以流的方式被訪問(wèn),顯然它是一個(gè)塊設(shè)備。
內(nèi)核管理塊設(shè)備要比管理字符設(shè)備細(xì)致得多,需要考慮的問(wèn)題和完成的工作相比字符設(shè)備來(lái)說(shuō)要復(fù)雜許多。這是因?yàn)樽址O(shè)備僅僅需要控制一個(gè)位置—當(dāng)前位置—而塊設(shè)備訪問(wèn)的位置必須能夠在介質(zhì)的不同區(qū)間前后移動(dòng)。所以事實(shí)上內(nèi)核不必提供一個(gè)專門的子系統(tǒng)來(lái)管理字符設(shè)備,但是對(duì)塊設(shè)備的管理卻必須要有一個(gè)專門的提供服務(wù)的子系統(tǒng)。不僅僅是因?yàn)閴K設(shè)備的復(fù)雜性遠(yuǎn)遠(yuǎn)高于字符設(shè)備,更重要的原因是塊設(shè)備對(duì)執(zhí)行性能的要求很高;對(duì)硬盤每多一分利用都會(huì)對(duì)整個(gè)系統(tǒng)的性能帶來(lái)提升,其效果要遠(yuǎn)遠(yuǎn)比鍵盤吞吐速度成倍的提高大得多。
【編輯推薦】