• <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

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲中文字幕精品一区四| 久久精品中文字幕有码| 欧美激情精品久久久久久久九九九 | 一本色道久久88加勒比—综合| 伊人久久无码中文字幕| 伊人久久五月天| 中文字幕精品久久久久人妻| 色综合久久天天综线观看| 久久久久久青草大香综合精品| 久久99久久无码毛片一区二区| 国内精品久久久久久久亚洲| 国产2021久久精品| 精品久久久久久无码人妻热| 久久精品国产亚洲5555| 久久99精品久久久久久不卡 | 久久五月精品中文字幕| 久久人人爽人人爽AV片| 国产免费久久精品99re丫y| 伊人久久一区二区三区无码| 色婷婷综合久久久久中文| 国产精品久久永久免费| 99久久国产综合精品成人影院| 久久精品国产亚洲5555| 久久亚洲美女精品国产精品| 国产午夜免费高清久久影院| 国产免费福利体检区久久| 香蕉久久久久久狠狠色| 99久久国语露脸精品国产| 国产高潮久久免费观看| 久久精品无码一区二区WWW| 久久精品麻豆日日躁夜夜躁| 精品久久久久久久久久中文字幕| 久久精品国产亚洲5555| 久久成人永久免费播放| 人妻精品久久无码区| 99久久精品费精品国产| 亚洲AV无码久久寂寞少妇| 国产成人香蕉久久久久| 精品久久亚洲中文无码| 国产日韩久久免费影院| 午夜人妻久久久久久久久|