linux中什么是块文件?
发布网友
发布时间:2022-04-21 01:59
我来回答
共2个回答
热心网友
时间:2022-06-17 05:44
1,概述
一直都搞不明白普通文件跟块文件的区别,总觉得一个普通的文件是存放在磁盘块上,那它既属于普通文件又属于块设备文件。刚好下午睡了一个大头觉,比较清醒,集中学习了下普通文件和块设备文件的区别和联系。
本文从基本概念,寻址空间,内核读写几个方面介绍普通文件和块设备文件的辩证统一。
2,基本概念
普通文件(Regular File)。指普通意义上的文件,如数据文件、可执行文件等。
设备文件(Device File)。类unix操作系统都是基于文件概念的,文件是由字节序列而构成的信息载体。根据这一点,可以把IO设备当作设备文件这种所谓的特殊文件来处理;因此,与磁盘上的普通文件进行交互所用的同一系统调用可直接用于IO设备。根据设备驱动程序的基本特征,设备文件可以分为两种:块和字符。这两种硬件设备之间的差异并不容易划分,但我们至少可以假定以下的差异:[1]
· 块设备的数据可以随机地被访问,而且从人类用户的观点看,传送任何数据块所需的时间都是较少而且是大致相同的。块设备的典型例子是硬盘、软盘[1]。块设备一般情况下是带缓冲区的。
· 字符设备的数据或者不可以随机访问,或者可以被随机访问,但是访问随机数据所需的时间很大程度上依赖于数据在设备内的位置[1]。
3, 寻址空间的区别
块设备文件是块设备的物理寻址空间;普通文件是块设备的虚拟寻址空间。普通文件比块设备文件多一层文件系统的地址转换机构。
热心网友
时间:2022-06-17 05:45
根据两者的定义就知道有什么区别:
设备文件包含如下:
linux
中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为"虚拟设备")。每个设备在
/dev
目录下都有一个对应的文件(节点)。可以通过
cat
/proc/devices
命令查看当前已经加载的设备驱动程序的主设备号。内核能够识别的所有设备都记录在原码树下的
documentation/devices.txt
文件中。在
/dev
目录下除了字符设备和块设备节点之外还通常还会存在:fifo管道、socket、软/硬连接、目录。这些东西没有主/次设备号。
链接文件:
linux中包括两种链接:硬链接(hard
link)和软链接(soft
link),软链接又称为符号链接(symbolic
link)。
我们首先来了解一下几个名词:
索引节点(inode)
要了解链接,我们首先得了解一个概念,叫索引节点(inode)。在linux系统中,内核为每一个新创建的文件分配一个inode(索引结点),每个文件都有一个惟一的inode号,我们可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。系统是通过索引节点(而不是文件名)来定位每一个文件。
硬链接(hard
link)
硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。
引用
ln
[options]
existingfile
newfile
ln
[options]
existingfile-list
directory
用法:
第一种为”existingfile”创建硬链接,文件名为”newfile”。
第二种在”directory”目录中,为”
existingfile-list”中包含的所有文件创建一个同名的硬链接。
常用可选[options]:-f
无论”newfile”存在与否,都创建链接。-n
如果”newfile”已存在,就不创建链接。
软链接(soft
link)
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。