操作系统(5)--文件系统学习笔记

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。主要文件系统有Ext,FAT,NTFS,ZFS等

文件管理的要素


磁盘基础知识

  • 磁道(Track):磁盘上划分了很多个同心圆,这些同心圆就是磁道。但打开硬盘,用户不能看到这些,实际上磁道是被磁头磁化的同心圆。磁道之间是有间隔的,因为磁化单元太近会产生干扰;
  • 磁头(Head):是硬盘读取数据的关键部件,它的主要作用就是将存储在硬盘盘片上的磁信息转化为电信号向外传输,而它的工作原理则是利用特殊材料的电阻值会随着磁场变化的原理来读写盘片上的数据,磁头的好坏在很大程度上决定着硬盘盘片的存储密度;
  • 扇区(Sector/):磁盘中最小的物理存储单位,通常是512字节,存储数量总是2的幂;
  • 柱面(Cylinder):硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面;
  • 1024个柱面 x 63个扇区 x 256个磁头 x 512byte = 8455716864byte(即8.4G)
  • 卷(Volume):不同操作系统概念会不一样。本质上是一个逻辑盘,最简单的情况下一个独立的磁盘就是一个卷。通常一个磁盘会被分为几个分区,每个分区都是独立卷,卷不需要物理连续,只需要对操作系统或者应用程序来说是连续的;
文件结构

文件结构常使用域、记录、文件、数据库4个术语。
  • 域:基本数据单元,一个域包括一个值;
  • 记录:一组相关域的集合;
  • 文件:一组相似记录的集合;
  • 数据库:一组相关的数据集合,数据库本身是一种或多种类型的文件组成;
注意:不是所有的文件系统都呈现这些特性,例如C程序以文件形式存储,而没有物理域、记录等;

文件系统软件架构


在最底层,设备驱动程序直接与外围设备通信,负责启动该设备的IO操作,处理IO请求的完成。对于文件系统来说,典型的控制设备就是磁盘或者磁带;
基本文件系统,也可以成为物理IO层,处理磁盘间交换的数据块,因此,它关注的是二级存储和内存缓冲区的位置,而不是文件结构内容;
基本IO管理程序负责IO的初始和终止,IO缓冲区制定的辅存也在这一层,是操作系统的一部分;
逻辑IO层使用户和应用程序更否访问到记录,维护关于文件的基本数据;


文件组织和访问
原则:访问快速、易于修改、节约存储空间、维护简单、可靠。
常用文件组织方法:堆、顺序文件、索引顺序文件、索引文件。

堆:组织方式最简单,数据按到达顺序被采集,访问方式只能穷举,对大多数应用不适用;
顺序文件:记录按关键字域来存储,对于查询或更新记录的交互式应用性能很差;
索引顺序文件:按照关键字域存储,支持随机访问文件索引和溢出文件,当文件插入一个新记录时,它被添加到溢出文件,然后修改主文件中逻辑顺序位于新记录之前的记录,使其包含指向溢出文件新记录的指针(怀疑cassandra也是用顺序索引文件的方式实现的,后面可以深究一下);
索引文件:于索引顺序文件相似,每种可能成为查询条件的域都有一个索引;
直接文件:直接文件基于关键字的散列;

文件目录:
一般用树状结构,目录与子目录可以是顺序文件或者用散列表;

记录组块:在大多数系统中,块的长度是固定的,组织方法有固定组块、可变长度跨越式组块、可变长度非跨越式组块三种。一般采用固定组块;


文件分配:

连续分配可以同时堕入多个块,容易检索,但是需要用紧缩算法来处理外部碎片,且需要在创建时申明文件大小;
链接分配解决了连续分配的问题,最适合处理顺序的文件,但局部性原理已经不在适用,可能需要连续访问磁盘的不同区域(可以通过后期合并来解决);
索引分配以上问题,文件索引保存在一个单独的块中,基于块的分配可以消除外部碎片,按大小分块可以提高局部性;

空闲空间管理
位表:位表驻留在内存中,穷举是查找,大多数使用位表的文推荐系统都有一个辅助数据结构;
链接空闲区:通过使用指向每个空闲区的指针和它们的长度值,空闲区可以被链接在一起,空闲开销可以忽略不计。缺点是对导致磁盘的碎片化;
索引:把空闲区看做一个文件,在文件分配时使用索引表;
空闲块列表:每个块都指定一个顺序号,所有空闲块的顺序号保存在磁盘中的一个保留区中。

猜你喜欢

转载自blog.csdn.net/woshizuxi/article/details/52701551
今日推荐