• <tr id='nyjf'><strong id='nyjf'></strong><small id='nyjf'></small><button id='nyjf'></button><li id='nyjf'><noscript id='nyjf'><big id='nyjf'></big><dt id='nyjf'></dt></noscript></li></tr><ol id='nyjf'><table id='nyjf'><blockquote id='nyjf'><tbody id='nyjf'></tbody></blockquote></table></ol><u id='nyjf'></u><kbd id='nyjf'><kbd id='nyjf'></kbd></kbd>
  • <span id='nyjf'></span>

      <acronym id='nyjf'><em id='nyjf'></em><td id='nyjf'><div id='nyjf'></div></td></acronym><address id='nyjf'><big id='nyjf'><big id='nyjf'></big><legend id='nyjf'></legend></big></address>

      <code id='nyjf'><strong id='nyjf'></strong></code>
      1. <fieldset id='nyjf'></fieldset>

        <ins id='nyjf'></ins>
      2. <dl id='nyjf'></dl>

      3. <i id='nyjf'></i>

            <i id='nyjf'><div id='nyjf'><ins id='nyjf'></ins></div></i>

            linux块设备,字符设备

            • 时间:
            • 浏览:3
            • 来源:124软件资讯网

              字符装备照旧块装备的界说属于操作系统的装备会见层 ,与现实物理装备的特征无一定联系  。

              装备会见层下面是驱动法式  ,以是只要驱动法式提供的方式  ,都可以  。也就是说驱动法式支持stream方式  ,那么就可以用这种方式会见  ,驱动法式若是还支持block方式 ,那么你想用哪种方式会见都可以 ,典型的好比硬盘式的裸装备  ,两种都支持块装备(block device):是一种具有一定结构的随机存取装备  ,对这种装备的读写是按块举行的 ,他使用缓冲区来存放暂时的数据  ,待条件成熟后 ,从缓存一次性写入装备或从装备中一次性读出放入到缓冲区  ,如磁盘和文件系统等

              字符装备(Character device):这是一个顺序的数据流装备 ,对这种装备的读写是按字符举行的 ,而且这些字符是一连地形成一个数据流  。他不具备缓冲区  ,以是对这种装备的读写是实时的 ,如终端、磁带机等  。
              系统中能够随机(不需要按顺序)会见牢固巨细数据片(chunks)的装备被称作块装备  ,这些数据片就称作块  。最常见的块装备是硬盘 ,除此以外  ,另有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块装备  。注重 ,它们都是以安装文件系统的方式使用的——这也是块装备一样平常的会见方式 。

              另一种基本的装备类型是字符装备  。字符装备根据字符流的方式被有序会见  ,像串口和键盘就都属于字符装备  。若是一个硬件装备是以字符流的方式被会见的话  ,那就应该将它归于字符装备;反过来  ,若是一个装备是随机(无序的)会见的  ,那么它就属于块装备  。

              这两种类型的装备的基础区别在于它们是否可以被随机会见——换句话说就是  ,能否在会见装备时随意地从一个位置跳转到另一个位置  。举个例子  ,键盘这种装备提供的就是一个数据流 ,当你敲入“fox”这个字符串时 ,键盘驱动法式会根据和输入完全相同的顺序返回这个由三个字符组成的数据流 。若是让键盘驱动法式打乱顺序来读字符串  ,或读取其他字符  ,都是没有意义的 。以是键盘就是一种典型的字符装备 ,它提供的就是用户从键盘输入的字符流  。对键盘举行读操作会获得一个字符流 ,首先是“f”  ,然后是“o”  ,最后是“x” ,最终是文件的竣事(EOF)  。当没人敲键盘时  ,字符流就是空的  。硬盘装备的情形就不大一样了 。硬盘装备的驱动可能要求读取磁盘上恣意块的内容  ,然后又转去读取此外块的内容  ,而被读取的块在磁盘上位置纷歧定要一连  ,以是说硬盘可以被随机会见  ,而不是以流的方式被会见  ,显然它是一个块装备  。

              内核治理块装备要比治理字符装备详尽得多  ,需要思量的问题和完成的事情相比字符装备来说要庞大许多  。这是由于字符装备仅仅需要控制一个位置—当前位置—而块装备会见的位置必须能够在介质的差别区间前后移动  。以是事实上内核不必提供一个专门的子系统来治理字符装备  ,可是对块装备的治理却必须要有一个专门的提供服务的子系统 。不仅仅是由于块装备的庞大性远远高于字符装备  ,更主要的缘故原由是块装备对执行性能的要求很高;对硬盘每多一分使用都市对整个系统的性能带来提升  ,其效果要远远比键盘吞吐速率成倍的提高峻得多  。另外 ,我们将会看到 ,块装备的庞大性会为这种优化留下很大的施展空间