• <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
            <2025年8月>
            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

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            国内精品久久久久久久久电影网| 久久er国产精品免费观看8| 国产精品久久久久久五月尺| 久久久亚洲欧洲日产国码是AV| 久久99国产精品尤物| 久久国产视屏| 久久婷婷五月综合色高清| 久久精品一本到99热免费| 久久精品www人人爽人人| 久久久无码精品午夜| 久久久久亚洲av无码专区喷水| 精品无码久久久久久久久久 | 国产一区二区精品久久凹凸| 久久精品国产乱子伦| 97久久精品人人澡人人爽| 嫩草伊人久久精品少妇AV| 久久久久久久综合狠狠综合| 97超级碰碰碰碰久久久久| 97超级碰碰碰久久久久| 国产色综合久久无码有码| 久久免费99精品国产自在现线| 国内精品伊人久久久久AV影院| 色老头网站久久网| 亚洲日本va午夜中文字幕久久| 国产精品嫩草影院久久| 一本色道久久88精品综合| 一级做a爰片久久毛片看看| 久久九色综合九色99伊人| 国产呻吟久久久久久久92| 久久青草国产手机看片福利盒子| 亚洲成色www久久网站夜月| 三级三级久久三级久久| 蜜臀久久99精品久久久久久| 久久久久亚洲AV综合波多野结衣| 亚洲国产精品久久久久| 久久精品www| 国产精品亚洲美女久久久| 久久精品国产精品亚洲下载| 久久人搡人人玩人妻精品首页| 久久久国产精华液| 思思久久精品在热线热|