linux 文件系统与文件之间的关系,块设备文件与文件系统之间的关系解析

下面随笔给出块设备文件与文件系统之间的关系解析。node

Linux操做系统秉承“一切皆文件”的设计思想,将全部的设备页看做文件来进行处理。目前的Linux版本中,当内核发现一个块设备时,用户空间会利用udev这一数据结构以及相关的操做来为块设备建立其所需的块设备文件。程序员

关于块设备文件,能够从两方面来进行理解。从块设备文件的外部表现来看,它是属于某个外部文件系统上的一个文件。一般Linux内核将其存放在/dev目录下,用户像对常规文件同样来对其进行访问。从块设备文件的内部实现来看,它能够看做是一种特殊文件系统的所属文件,同时该块设备文件的文件逻辑编号与块设备逻辑编号一一对应。数据结构

那如何对常规文件与块设备文件进行区分?当相似于/dev目录下的挂载在宿主系统中的块设备文件,主要经过文件所对应的inode结构中i_mode字段来进行判别,另外在inode结构中i_zone[0]字段中存储了所对应的块设备的编号。函数

而为了对块设备文件进行便捷的组织与管理,Linux内核建立了bdev文件系统,该文件系统的目的是为了创建块设备文件在外部表现与内部实现之间的关联性。bdev文件系统是一个“伪”文件系统,它只被内核使用,而无需挂载到全局的文件系统树上。操作系统

块设备文件除了与常规文件相似的在根文件系统上存在inode以外,其在bdev文件系统上也存在对应的inode。两个inode之间经过块设备编号相关联,须要注意的是,前者的inode称之为次inode,然后者称之为主inode。设计

Linux中,存在对设备抽象以后的目录,即/dev,也就是前边所描述的宿主文件系统下的块设备文件。该目录由指向系统中硬件的特殊文件组成。因此程序员能够便捷的对硬件进行访问,而不须要使用一些特殊的接口函数。接口

**这些文件其所对应的inode所具备的特征有如下几点:**内存

**1. 文件模式为块设备文件**硬件

**2. 文件内容为块设备编号,保存在inode当中**程序

**3. 文件长度为0**

虽然bdev文件系统是一个“伪”文件系统,不会挂载在全局文件系统树中,且只存在于内存中。可是Linux内核仍然根据文件系统的数据结构来对其进行建立。 对于每一个块设备,在bdev文件系统中都有一个indoe,同时磁盘和分区也会有属于本身的inode。Linux内核利用blokc_inode数据结构表示块设备的inode,其中包含了两个字段,分别是struct block_device,即块设备描述符。另外一个是struct inode,即inode描述符。可是Linux系统为了可以对总体的inode进行统一的管理,所以在宿主系统中建立了与bdev文件系统中相对应的inode。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值