一直都搞不明白普通文件跟块文件的区别,总觉得一个普通的文件是存放在磁盘块上,那它既属于普通文件又属于块设备文件。刚好下午睡了一个大头觉,比较清醒,集中学习了下普通文件和块设备文件的区别和联系。
本文从基本概念,寻址空间,内核读写几个方面介绍普通文件和块设备文件的辩证统一。
2,基本概念
普通文件(Regular File)。指普通意义上的文件,如数据文件、可执行文件等。
设备文件(Device File)。类unix *** 作系统都是基于文件概念的,文件是由字节序列而构成的信息载体。根据这一点,可以把IO设备当作设备文件这种所谓的特殊文件来处理;因此,与磁盘上的普通文件进行交互所用的同一系统调用可直接用于IO设备。根据设备驱动程序的基本特征,设备文件可以分为两种:块和字符。这两种硬件设备之间的差异并不容易划分,但我们至少可以假定以下的差异:[1]
· 块设备的数据可以随机地被访问,而且从人类用户的观点看,传送任何数据块所需的时间都是较少而且是大致相同的。块设备的典型例子是硬盘、软盘[1]。块设备一般情况下是带缓冲区的。
· 字符设备的数据或者不可以随机访问,或者可以被随机访问,但是访问随机数据所需的时间很大程度上依赖于数据在设备内的位置[1]。
3, 寻址空间的区别
块设备文件是块设备的物理寻址空间;普通文件是块设备的虚拟寻址空间。普通文件比块设备文件多一层文件系统的地址转换机构。
在Linux系统中,一切皆为文件,所以文件类型也有很多种,那么Linux *** 作系统有什么文件类型?以下是详细的内容介绍。
第一种:普通文件。就是一般存取的文件,由ls-al显示出来的属性中,第一个属性为 [-]另外,依照文件的内容,又大致分为:
1、纯文本文件:这是Unix系统中最多的一种文件类型,之所以称为纯文本文件,是因为内容可以直接读到数据,比如数字、字母等。设置文件几乎都属于这种文件类型。
2、二进制文件:系统其实仅认识且可以执行二进制文件。Linux中的可执行文件就是这种格式的。
3、数据格式的文件:有些程序在运行过程中,会读取某些特定格式的文件,那些特定格式的文件也可以称为数据文件。
第二种:目录文件。就是目录,第一个属性为[d]。
第三种:连接文件。类似Windows下的快捷方式,第一个属性为[l]。
第四种:设备文件。与系统外设及存储等相关的一些文件,通常都集中在/dev目录,又分为两种。
1、块设备文件:就是存储数据以供系统存取的接口设备,简单而言就是硬盘,第一个属性为 [b]。
2、字符设备文件:即串行端口的接口设备,比如键盘、鼠标等,第一个属性为 [c]。
第五种:套接字文件:这类文件通常用在网络数据连接,可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为[s],常在
/var/run目录中看到这种文件类型。
第六种:管道文件:FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误,FIFO是first-in-first-out的缩写,第一个属性是[p]。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)