首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在unix系统中,字符特殊和块特殊文件是什么?

在unix系统中,字符特殊和块特殊文件是什么?
EN

Unix & Linux用户
提问于 2013-01-02 06:22:44
回答 3查看 127.1K关注 0票数 102

字符特殊文件和块特殊文件与类Unix系统中的常规文件有何不同?为什么他们分别被称为“字符特殊”和“块特殊”?

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2013-01-03 02:23:50

当程序从文件中读取或写入数据时,请求将转到内核驱动程序。如果文件是常规文件,则数据由文件系统驱动程序处理,并且通常存储在磁盘或其他存储介质上的区域中,从文件中读取的数据就是以前在该位置写入的数据。还有其他文件类型会发生不同的事情。

当数据被读取或写入设备文件时,该请求由该设备的驱动程序处理。每个设备文件都有一个相关联的编号来标识要使用的驱动程序。设备对数据的处理是它自己的事情。

块设备(也称为块特殊文件)的行为非常类似于普通文件:它们是一个字节数组,在给定位置读取的值是最后写入的值。来自块设备的数据可以缓存在内存中并从缓存中读取;写可以被缓冲。块设备通常是可查找的(例如,应用程序可以更改文件中的位置的概念)。“块设备”的名称来自这样一个事实:相应的硬件通常一次读写整个块(例如硬盘上的扇区)。

字符设备(也称为字符特殊文件)的行为就像管道、串口等。对它们进行写入或读取是一种即时的操作。驱动程序对数据的处理是它自己的事情。将字节写入字符设备可能会导致它显示在屏幕上,输出在串行端口上,转换成声音,.从设备读取字节可能导致串口等待输入,可能返回随机字节(/dev/urandom),.“字符设备”的名称来自这样一个事实,即每个字符都是单独处理的。

有关更多信息,请参见维基百科理解/dev及其子目录和文件

票数 127
EN

Unix & Linux用户

发布于 2013-01-02 07:07:52

它们指向驱动程序,可以由mknod创建。从它的手册页面来看,似乎块设备是缓冲的,而字符设备是非缓冲的。块设备的“块大小”表示可以访问的块的大小。(对于存储设备,块大小通常在512 B到4 KiB之间)存储设备和存储器通常作为块设备访问,而诸如串行端口和终端等设备通常作为字符设备访问。

它们通常在/dev中找到(并且不能在安装有nodev选项(或其等效的)的分区上工作)。

ls -l中,对于通常可以找到大小的设备,显示了两个逗号分隔的数字。这些是主要的和次要的数字,指的是司机。它们的类型在ls -l输出的权限列中也表示为"c“或"b”。

/dev可以通过多种方式填充。在最近的Linux内核版本中,通常使用udev,在Solaris上它包含指向/devices的链接,这是一个virual文件系统。

票数 10
EN

Unix & Linux用户

发布于 2017-02-22 00:16:01

Unix/Linux中的文件类型:普通或常规文件、目录、设备(特殊)文件、链接、命名管道和套接字。

设备(特殊)文件是显示在文件系统中的设备驱动程序的接口,就好像它是一个普通文件一样。它们是字符设备、块设备和伪设备(如/dev/null).

字符驱动将发送一个字符在时间,因此您需要一个小的负载携带,但必须作出许多要求。块驱动意味着您获得了大量的字符(数据)集合,因此您有一个**更大的负载,但必须执行较少的请求。类比:基本上和用瓶子买苏打水或者用箱子买苏打水是一样的。

当您知道可以期望获得多少数据时,块驱动是非常有用的,这通常是磁盘上文件的情况。

当您不知道您的数据何时停止时,字符驱动更实用,因此您将它保持运行直到没有更多的字符通过。例如,Internet连接,因为您不知道从服务器接收到的数据流的大小。

例如,

  • 字符设备驱动程序是允许操作系统与输入/输出设备通信的特殊文件。例子:键盘,鼠标,显示器,音频或图形卡和盲文。
  • 块设备用于与存储设备通信,并能够缓冲输出和存储数据以供以后检索。例如:硬盘,内存。

礼节

票数 7
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/60034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档