简图记录-linux文件系统基础

简图记录学习~

参考:linux内核设计与实现 鸟哥linux私房菜

文件系统这个概念很多时候大家使用起来容易混淆。最常见也是最规范的说法是文件存放在磁盘等存储设备的组织方法,也就是磁盘中数据的物理布局格式,如ext2、ext3、fat等(相对磁盘,嵌入式系统同样存在许多种类:如基于NORFLASH的jiffs2、基于NANDFLASH的yaffs、基于RAM的ramdisk、基于网络的NFS)。有时从用户使用角度也把操作系统给用户和应用对文件相关接口称为文件系统,这里往往指的是管理文件读写的内核子系统,如VFS虚拟文件系统的概念。

从用户和应用的使用角度出发,我们先学习虚拟文件系统VFS。VFS的意义在于抽象不同磁盘文件系统的差异,给予用户一个统一的Unix系统调用标准接口。用户不必关心各类磁盘数据排布格式的差异。这也是计算机技术里常用的一种手段,通过添加一个中间层消除差异统一接口。举个例子,用户调用write系统调用,内核态调用到VFS封装的sys_write,然后再调用到各类文件系统的写方法,最后调用磁盘驱动IO对磁盘数据进行读写。这里的关键点在于 要满足标准的Unix系统调用接口,需要支持Unix文件系统模型(包括 文件、 目录项、索引节点、安装点的概念)、VFS也构造了一套对应的机制去实现(超级快对象、索引节点对象、目录项对象、文件对象)。要知道,很多磁盘文件系统格式可能根本没有文件系统所需的各种对象的概念,这些工作都需要VFS去完成适配工作。

从VFS往下,需要学习磁盘的文件系统格式,如ext2。ext2是伴随linux生长流行起来的文件系统。学习磁盘文件系统,先要了解磁盘的基础概念,如什么是扇区、磁道、磁柱、了解磁盘的分区(什么是MBR、主分区、扩展分区)。在ext2磁盘格式中,将一个主分区分成启动块和多个块组构成,每个块组包含(一个负责记录操作系统基本信息的超级快,一个负责记录block bit map、inode bit map起始位置等信息的GDT块组描述信息,紧挨着是块使用信息的block bit map和inode使用信息的inode bit map,然后是inode table的索引 节点记录表,最后是数据块)



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值