Linux文件系统初析(一)


1、对Linux操作系统而言,访问硬盘从软件到硬件,从上到下大致可以分为三层:
      (1)、虚拟文件系统:通用抽象接口、具体文件系统、系统文件缓存。
      (2)、设备驱动层:通用驱动接口、具体驱动接口
      (3)、设备层(具体的硬件设备,可以理解为磁盘)

 2、虚拟文件系统(VirtualFileSystem,VFS):隐藏了各种硬件的具体细节,把文件系统操作和不
同文件系统的具体实现细节分离了开来,为所有的设备提供了统一的接口,VFS提供了多达
数十种不同的文件系统。
虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件
系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

3、写方面的优化主要:是延迟批量写,也就是数据先写到页缓存中,经过积累后再磁盘驱动提
交。这种积累和延迟写主要目的是为了增加数据的连续性,也就是为了规避磁盘机械臂的摆
动,因为磁盘机械臂摆动是最耗时的。


4、读方面的优化主要:是预读功能,预读就是根据当前应用读取数据的模式,提前将数据读到内
存当中。由于应用访问数据的区域局部性特点,这种预读就可以避免应用直接从磁盘读取数
据的延时,从而提高读性能。

5、关键结构
(1)super_block
        描述一个已经挂载的文件系统,包含设备名,分区大小,blocksize等基础数据,superblock
方法集合,所包含的inode 链表等。superblock包含的信息众多,与磁盘上的实际数据对应,
常作为入参被内外部接口引用,对它的更新也会适时同步到磁盘上。
(2) inode
        描述一个文件(包括普通文件,目录,FIFO 等等),包含文件类型,大小,更新时间等数据,
inode方法集合,其包含的信息同样与磁盘上数据对应,需要适时同步。
(3) dentry
        描述系统目录树中的一个节点,通常会指向一个inode,其主要信息有该dentry的父子dentry,
文件名,指向的inode,dentry方法集合等,dentry最主要的作用是记录一个inode在目录树中的位置。dentry结构保存在内存dcache中,在磁盘中往往没有直接关联的数据。


        dentry 直译为目录项,需要与目录进行区分,例如一个路径“/var/log/txt.log",其中包含4个
目录项“/”,“var”,"log",“txt.log”,前3个目录项指向目录inode,最后一个目录项指向普通文件
inode.
        dentry 实现的方法主要是对 dentry 结构的初始化,比较,校验,删除等操作。由于dentry
通常只维护在内存中,底层文件系统驱动往往不需要实现全部方法,系统有默认处理流程。
 


参考博客:

Linux 文件系统详解_黄规速博客:学如逆水行舟,不进则退-CSDN博客在LINUX系统中有一个重要的概念:一切都是文件。其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。 和 DOS 等操作系统不同,Linux 操作系统中单独的文件...https://blog.csdn.net/hguisu/article/details/7401963

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值