操作系统之文件系统笔记

原创 2013年12月03日 14:40:30

 首先,文件文件系统是两个不同的概念,文件系统是管理,组织,存取文件和目录的方法系统。而文件则是数据按照不同的组织方式的集合。

     根据文件在逻辑上和物理上组织结构的不同分为逻辑文件和物理文件,本质上都是数据的集合。

     逻辑文件按照文件内容的组织方式:分为顺序文件流式文件

    顺序文件:文件内容由结构相同性质相同的记录组成的文件。如数据库文件等。

    流式文件:文件内容由字符二进制形式存在,无规则。如源文件,二进制文件,目标文件等。unix中的所有文件都是为流式文件。


    其中顺序文件由于记录中项内容的不同导致记录的长度差异又分为:定长记录顺序文件,不定长记录顺序文件

   为什么要分这么细呢?你一定会问!分这么细的原因是因为我们在查找文件的内容是可以根据不同的情况来使用不同的查找算法,这样更加灵活,时间更快,效率更高。尤其是在海量的数据查询时,效果更加明显,这些理由足够使你信服了吧!!


  1:  对于定长记录顺序文件,我们在查找某些文件内容时,只需知道文件首地址D,记录长度L。就可很快得出n条记录的地址!  M=D+(n*L)


   2:这时,问题出现了,对于不定长顺序文件,我们如果再用这种方法就不行了。因为记录长度不定!公式不再适 用。如果再用上述公式,查找第n条记录的地址,则要依次计算前n条记录的地址,这样做效率太低了!

    解决办法:很简单,就像我们平时翻字典一样,为记录创建一个索引就行了!索引中包含每条记录的首地址长度。这时新的问题出现了!当索引的数据量很大时,查找速度又会很低了。这时,我们可以再为索引创建一个二级索引。

创建索引的优点:使查找的速度大大提高!缺点:提高的存储的成本。这时典型的以空间换时间的做法


流式文件的查找不使用索引方式,对于流式文件采用指针指向当前字符的方式。这里不详叙。



讲完了文件内容的查找接下来是文件到底如何在磁盘上进行分配的呢!和内存相似,磁盘空间分配总共有三种分配方式:

  连续分配方式

     分配以盘块为单位(盘块即为扇区),一个盘块的数据大小为512B,当我们创建一个文件时,操作系统为这个文件在磁盘上分配连续的一定个数的盘块,然后将文件的第一个盘块的地址存入FCB(文件控制块中的物理地址字段),注意:FCB存放在磁盘上的!

   优点:在所有的分配形式中,连续分配的查找读取速度是最快的!

   缺点:由于,连续分配要事先知道文件的大小,现实中往往不是这样。这种分配方式容易导致文件小则碎片多,文件过大,则分配不成功,非常的不灵活。

     

    链接分配方式(os中使用的方式):

     隐式链接分配:

         当创建一个文件时,操作系统为文件分配若干个盘块,每个盘块中有一个链接指针,占4byte,所以一个盘块的实际数据大小为508Byte。指针指向下一个扇区。FCB中存放文件的第一个盘块的地址和最后一个盘块的地址。(存放最后一个盘块的地址是为了增加数据的方便)。

       优点:减小了磁盘碎片的空间,更加灵活。

       缺点:当指针断裂,文件就被破坏,非常不安全!查找某个盘快,要逐个的查找,查找效率极低!

 

    显式链接分配:

         相对隐式分配的缺点,显示分配在磁盘上创建一个文件分配表(FAT),按照盘块号从小到大排好序。当系统为一个文件分配多个盘块时,当前序号的盘块中的数据填入下一个盘块的序号,这样就将各个盘块链接起来。每当操作系统查找文件时,可以将FAT(file allocation system)调入内存,这样查找的速度大大提升!

       对于物理磁盘一个磁盘在这种方式下可以换分四个分区,每个分区都有相应的FAT。

       MS-DOS中使用的就是这种方式!FAT12指的就是分配表的宽度为12位,这样盘块大小为512b的磁盘分区容量为2MFAT16的磁盘分区容量为32M。但是这样对现代计算机的大硬盘容量来说远远不够用!

       因此,我们提出一个簇的概念。将簇作为分配的单位,一个簇可以包含1个盘块,2个盘块,4个盘块,8个,16个32个直到64个。这样FAT16的容量增加到2^16*64*512=2048M


      现代计算机的硬盘容量动辄上百个G,所以我们又将长度拓宽为FAT32,这就是windows中常用的文件系统。这样FAT32的容量可以达到2T至此FAT分配方式为最终模式。FAT32中簇的大小一般为4个盘块

       FAT32不能向下兼容FAT12和FAT16的文件系统,而且FAT32的最小分区为512M,最大单个文件容量为4G


   NTFS(new technology file system)是微软的一种全新的文件系统,它不与物理盘块直接关联,而是通过关联簇来管理磁盘,这样就可以适应不同大小扇区的磁盘。通常NTFS中的默认簇大小为4k也就是8个盘块。NTFS相比FAT32用来存储记录相关簇的信息更小。它使用一个叫MFT(主控文件表)来记录的簇的。MFT以文件的方式存在磁盘上。比FAT32的信息更小,查询更快。具体原理我也不清楚!

 

 

索引分配方式(linux中文件系统)

         如果稍加思考就会发现,FAT分配方式的缺点。首先,当文件分配表很大时,将表加载到内存会占用大量而且宝贵的内存资源!而且还要从表中顺序查找所有的盘块,耗费了大量的时间和空间。基于这种现实,我们又提出了另一种方法,索引分配方式

          索引分配方式将属于一个文件的所有盘号集中存放到一个叫索引块的数据结构中,然后我们只需在索引结点中加入一个指针指向索引块即可!当操作系统创建一个文件时,就为文件分配一个索引块,划分的基本单位为一个扇区,如果一个扇区的空间太小,一次递增。

       问题1:当文件过大时,一个索引块不够用,需要多个索引块时,我们就为索引块创建二级索引,甚至三级索引。 

       问题2:当文件过小时,不是会造成磁盘碎片吗?因为只要创建一个文件系统就分配一个索引块。其实实际中使用的混合模式,在索引结点中加入了直接地址,一级索引,多级索引指针。直接地址存放文件所在盘块的物理地址。大概可以存放十个地址。这样当文件占用的盘块少于十个时,我们就可以不用分配索引块。

 

 

 

 

 

相关文章推荐

操作系统原理读书笔记之文件系统

磁盘空间管理 有三种管理方式,对应三种数据结构 位图,每一位对应一个物理块,显而易见,位图本身会占用大量空间空闲块表,将所有空闲块记录在一个表中,每个表项纪录起始块号和空闲的块数...

操作系统概念--读书笔记之第十章文件系统接口

1 文件概念 概念 文件是记录在外存上的相关信息的具有名称的集合。 文件是逻辑外存的最小单元。 文件外部结构 因为文件类型过多,所以一般操作系统只支持少数几种必须的文件结构(避免操作系统过大)。...

操作系统学习笔记:分布式文件系统

分布式系统是一组不共享内存和时钟的处理器的集合,即每个处理器都有它自己的内存,处理器之间的通信可通过各种通信网络加以实现。...

[现代操作系统笔记][第四章文件系统]

第四章 文件系统4.1 文件从用户角度来考察文件。用户如何使用文件,文件有那些特性。4.1.1 文件命名文件一种抽象机制,提供了一种在磁盘上保留信息而且以后方便读取的方法。 有的文件系统区分大小写,有...

操作系统学习笔记:文件系统接口

计算机设备之间差异很大,所以操作系统需要提供一组功能以便于应用程序控制这些设备。操作系统的IO子系统的重要目的之一是为系统其它部分提供最简单的接口。文件接口是接口之一。一、文件概念 1、文件属性 ...

《现代操作系统4th》英文版阅读笔记 4.3章 文件系统实现

《现代操作系统4th》英文版阅读笔记 4.3章 文件系统实现

《现代操作系统》读书笔记---文件系统篇

《现代操作系统》读书笔记—文件系统篇文件是进程创建的信息逻辑单元.一个磁盘一般含有几千甚至几百万个文件,每个文件是独立于其他文件的.文件不仅仅被用来对磁盘建模,以替代对随机存储器(RAM)建模.事实上...

读书笔记-现代操作系统-4文件系统-4.1文件4.2目录

4. 文件系统长期储存大量信息的三个基本要求: 1. 能够储存大量信息。 2. 使用信息的进程终止时,信息仍旧存在。 3. 必须能够使多个进程并发存取有关信息。文件的概念: 文件是进程创建的信...

读书笔记-现代操作系统-7多媒体操作系统-7.6多媒体文件系统泛型7.7文件存放

7.6 多媒体文件系统泛型多媒体系统和传统的文件系统有很大的不同,采用的是类似VCR工作方式一样的拉取型服务器(pull server): 用户进程发出start系统调用,指定要读取的文件和其他各种...

读书笔记-现代操作系统-4文件系统-4.4文件系统管理和优化

4.4 文件系统管理和优化4.4.1 磁盘空间管理几乎所有的文件系统都是把文件分割成固定大小的块来储存的(各块之间不一定相邻) 块大小 通常需要在空间利用率和磁盘数据率之间提供一定平衡,通常用4KB...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:操作系统之文件系统笔记
举报原因:
原因补充:

(最多只允许输入30个字)