设为首页 加入收藏

TOP

【操作系统】再谈文件
2023-07-23 13:27:19 】 浏览:65
Tags:谈文件

写在前面

  本系列的文章是博主边学边记录的,可能不是特别的正确,因为会加上博主自己的理解,仅供参考。

 

正文

一、文件的物理组织方式

目前常用的外存组织方式有:

  1.连续组织方式

    为每个文件分配一篇连续的磁盘空间,称为连续组织方式。

  2.链接组织方式

    在对文件采取链式组织方式时,可以为每个文件分配不连续的磁盘空间。通过链接指针将一个文件的所有盘块链接在一起。形成链式组织方式

  3.索引组织方式

    在对问文件采取索引组织方式时,形成的就是索引式文件结构。

下面讲解展开来说下这三种文件存储方式:

  连续组织方式:

  连续组织方式是针对于文件来说的,给每一文件分配一块连续的空间。如果这个文件比较大的话,那么需要给他分配n块连续的磁盘块。所以说,连续存储方式并不是说所有文件存放的位置是相邻接的。

 

 

 通过图我们可以看到,连续文件的目录中包含是文件名开始地址以及文件大小

连续存储方式的优点:

  1.顺序访问很容易,根据目录,可以很方便的往下读取文件数据

  2.顺序访问速度块。因为每个文件的空间是连续的,读取的时候不用再跳转到其他盘块,所以读取速度快。

连续存储方式缺点:

  1.因为每个文件存储的时候,需要确定大小。再分配磁盘的时候,可能会导致一部分小的磁盘空间得不到利用,造成外部碎片

  2.对于动态增长的文件,没有办法去处理,大小已经固定了,可能造成内部碎片

补充下:

  内部碎片:已被分配出去但是由于一些原因得不到使用。

  外部碎片:未被分配出去但是得不到使用的空间。

2.链式分配方式

  为了提高空间的利用率,降低碎片的情况。可以使用离散的分配方式,也就是链式分配。可以为每个文件分配多个不连续的盘块,再通过盘块上的链接指针,将属于同一个文件多个离散的盘块链接成一个链表

链式分配方式又分为两种实现方式:

  1.隐式链接

  文件目录中的每个目录相中,都含有指向连接文件的第一个盘块最后一个盘块的指针

  

 

 这种方式就和链表一样,当你要访问这个文件的第n个盘块的时候,需要从头部开始查找。算是一个缺点吧。

2.显示链接

  这种方式把链接文件各个物理块的指针显示地存放在内存的一张链表中,该表在整个磁盘中仅设置一张。也把这个表称为文件分配表(FAT)

这样做和上面相比,只不过是把查找过程放在了内存中,最后再去启动磁盘。降低了访问磁盘的次数。

 

 

  FAT方式在文件较多的时候需要占用较大的内存空间。当过大的时候,内存不一定能够存储的下该表,且在一张较大的FAT表中查询文件也是比较的慢。 

3.索引组织方式

通过对FAT方式的改进,出现了索引组织方式。在我们打开某个文件的时候,只需要把该文件占用的盘块编号调入内存即可。完全没有必要将整个FAT调入内存。因此,出现了索引组织方式。基本思想:

1.为每个文件分配一个索引表,把分配给该文件的所有盘块号都记录在这个索引表中。

2.再建立一张索引表,用于组织1中的各个索引表,当然这种方式是针对于该文件过大的情况。

 

 3.如果文件过大,还可以有多级索引。

像这种方式能够大大加快对大型文件的查找速度,但是访问一个盘块的时候,需要启动磁盘的次数随着索引级数的增加而增多尤其是对于一些小文件,还要单独分配一个索引表,这并不是理想的效果。

为了能够全面地照顾小、中、大以及特大型地作业,可以采取多种组织方式来构成文件的物理结构:

2.增量式索引组织方式

  1.基本思想

  设立不同等级的索引:

  直接索引:对于小文件,通常采用直接索引。直接将文件占用的盘块地址放入FCB中,可以直接从FCB中获取该文件的盘块的地址

  一次间址:对于中等大小的文件,可以采取单级索引的组织方式,直接从FCB中获取该文件对应的索引表即可

  二次/三次间址:对于大型文件,可以采取两级或者三级索引的组织方式。

    

 

 

  

 二、文件存储空间管理

前面说的都是文件分配时候的组织方式,但是如何分配文件? 磁盘上哪些盘块是可以被分配的呢?,这就涉及文件存储空间的管理。下面一起来看看吧!

1.空闲表法

  空闲表法属于连续分配方式,为每一文件分配一块连续的存储空间。即系统为外存上的所有空闲分区建立一张空闲表,每个空闲区对应一个空闲表项。

 

 采用空闲表法给文件分配盘块的时候,和内存空间的分配差不多,也就是采用一些算法(最佳适应、首次适应等)进行分配,回收的时候也是按照和当前执行点的位置关系采取不同的方式回收。

2.空闲链表法

空闲链表法是将所有空闲盘区拉成一条空闲链。空闲链表法可以分成以下两种形式:

1.空闲盘块链

  顾名思义,以盘块为单位组成一张链表。长度较长

2.空闲盘区链

  将若干个盘块作为一个区,链接起来,形成一张链表。长度较短

3.位示图

 位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。0代表盘块空闲,1代表已经分配。磁盘上所有盘块都有一个二进制位与之对应,这样,所有盘块所对应的位构成了一个集合。称为位示图。

 

文件这方面涉及的知识点,算是完结了。本文章主要讲了文件物理组织方式以及盘块的空间管理,我们下篇文章再见。

 

不骄不躁,保持学习

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【操作系统】文件 下一篇Windows项目里的图像识别框架Airt..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目