• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 297,  comments - 15,  trackbacks - 0

            字符設備還是塊設備的定義屬于操作系統的設備訪問層,與實際物理設備的特性無必然聯系。

            設備訪問層下面是驅動程序,所以只要驅動程序提供的方式,都可以。也就是說驅動程序支持stream方式,那么就可以用這種方式訪問,驅動程序如果還支持block方式,那么你想用哪種方式訪問都可以,典型的比如硬盤式的裸設備,兩種都支持塊設備(block device):是一種具有一定結構的隨機存取設備,對這種設備的讀寫是按塊進行的,他使用緩沖區來存放暫時的數據,待條件成熟后,從緩存一次性寫入設備或從設備中一次性讀出放入到緩沖區,如磁盤和文件系統等

            字符設備(Character device):這是一個順序的數據流設備,對這種設備的讀寫是按字符進行的,而且這些字符是連續地形成一個數據流。他不具備緩沖區,所以對這種設備的讀寫是實時的,如終端、磁帶機等。
            系統中能夠隨機(不需要按順序)訪問固定大小數據片(chunks)的設備被稱作塊設備,這些數據片就稱作塊。最常見的塊設備是硬盤,除此以外,還有軟盤驅動器、CD-ROM驅動器和閃存等等許多其他塊設備。注意,它們都是以安裝文件系統的方式使用的——這也是塊設備一般的訪問方式。

            另一種基本的設備類型是字符設備。字符設備按照字符流的方式被有序訪問,像串口和鍵盤就都屬于字符設備。如果一個硬件設備是以字符流的方式被訪問的話,那就應該將它歸于字符設備;反過來,如果一個設備是隨機(無序的)訪問的,那么它就屬于塊設備。

            這兩種類型的設備的根本區別在于它們是否可以被隨機訪問——換句話說就是,能否在訪問設備時隨意地從一個位置跳轉到另一個位置。舉個例子,鍵盤這種設備提供的就是一個數據流,當你敲入“fox”這個字符串時,鍵盤驅動程序會按照和輸入完全相同的順序返回這個由三個字符組成的數據流。如果讓鍵盤驅動程序打亂順序來讀字符串,或讀取其他字符,都是沒有意義的。所以鍵盤就是一種典型的字符設備,它提供的就是用戶從鍵盤輸入的字符流。對鍵盤進行讀操作會得到一個字符流,首先是“f”,然后是“o”,最后是“x”,最終是文件的結束(EOF)。當沒人敲鍵盤時,字符流就是空的。硬盤設備的情況就不大一樣了。硬盤設備的驅動可能要求讀取磁盤上任意塊的內容,然后又轉去讀取別的塊的內容,而被讀取的塊在磁盤上位置不一定要連續,所以說硬盤可以被隨機訪問,而不是以流的方式被訪問,顯然它是一個塊設備。

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

            from:

            http://os.51cto.com/art/200909/151133.htm

            posted on 2010-01-28 15:00 chatler 閱讀(425) 評論(0)  編輯 收藏 引用 所屬分類: linux kernel
            <2010年1月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品成人久久久久三级午夜电影| 精品国产乱码久久久久久浪潮 | 亚洲欧美国产精品专区久久| 久久精品国产99国产精品导航| 久久久老熟女一区二区三区| 久久精品99无色码中文字幕| 欧美黑人又粗又大久久久 | 精品久久久中文字幕人妻| 久久久久免费精品国产| 97精品依人久久久大香线蕉97 | 欧美成a人片免费看久久| 日产精品久久久久久久性色| 久久伊人五月天论坛| 精品久久久久久亚洲精品 | 婷婷久久综合九色综合绿巨人| 2021久久国自产拍精品| 日韩精品无码久久久久久| 国产精品久久久久久五月尺| 久久久久99精品成人片三人毛片 | 国产精品伊人久久伊人电影| 香蕉久久夜色精品升级完成| 久久久久无码专区亚洲av| 国产精自产拍久久久久久蜜| 久久婷婷久久一区二区三区| 久久人妻少妇嫩草AV无码专区| 久久国产AVJUST麻豆| 亚洲伊人久久综合影院| 亚洲国产精品无码久久九九| 久久本道久久综合伊人| 精品免费久久久久国产一区| 国产成人精品久久一区二区三区av | 亚洲av伊人久久综合密臀性色 | 99久久国产免费福利| 婷婷综合久久中文字幕| 品成人欧美大片久久国产欧美| 青青热久久综合网伊人| 精品久久久久一区二区三区| 久久综合日本熟妇| 久久人人爽人人爽人人片AV东京热 | 男女久久久国产一区二区三区 | 久久久久久久人妻无码中文字幕爆 |