• <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 閱讀(402) 評論(0)  編輯 收藏 引用 所屬分類: linux kernel
            <2010年7月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(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精品成人片欧美| 国产精品女同一区二区久久| 亚洲国产精品无码久久九九| 久久福利资源国产精品999| 四虎影视久久久免费| 97香蕉久久夜色精品国产| 久久久婷婷五月亚洲97号色| 久久se这里只有精品| 97久久国产综合精品女不卡| 久久综合久久综合九色| 久久精品青青草原伊人| 91精品国产综合久久婷婷| 模特私拍国产精品久久| 久久久精品免费国产四虎| 久久婷婷色综合一区二区| 99久久精品久久久久久清纯| 2021国内久久精品| 久久久久人妻精品一区三寸蜜桃| 久久精品国产色蜜蜜麻豆| 久久久久无码中| 91精品国产91热久久久久福利| 久久精品一区二区三区AV| 久久久久久久久久久免费精品| 青青草国产成人久久91网| 久久精品九九亚洲精品| 亚洲精品无码成人片久久| 伊人久久大香线蕉综合网站| 精品综合久久久久久88小说| 成人久久精品一区二区三区| 三上悠亚久久精品| 色综合久久无码五十路人妻| 国产亚洲精品久久久久秋霞| 久久99国产精品久久99小说| 天天综合久久一二三区| 美女久久久久久| 亚洲?V乱码久久精品蜜桃 | 精品久久久久久无码中文字幕| 精品乱码久久久久久久| 久久99精品久久久久婷婷| 久久久久高潮毛片免费全部播放| 色综合久久中文字幕无码|