4.1.2-4.1.4 文件逻辑结构,目录和物理结构

4.1.2 文件的逻辑结构

无结构文件

即常见的文本文档,".txt"文件,文件内部的数据是没有规则的字符或者字符流,又称为“流式文件”

有结构文件

又称为记录式文件,每条记录又有若干个数据项组成,每条记录又有一个数据项做关键字,比如“姓名”,“性别”等,而其他数据项记录的是实实在在的数据比如“小明”,“男”等

这里重点讲述有结构文件:

顺序文件

文件中的记录一个接一个地顺序排列(逻辑上),各个存储可以是顺序存储或者链式存储

顺序存储又分为可变长记录和定长记录。

而链式存储和顺序存储的可变长记录都无法实现随机存取(原因是可变长记录需要有记录长度和记录内容两个部分组成,所以每次都只能从第一个记录依次往后查找)

在这里插入图片描述

索引文件(计算平均查找次数)

索引表本身是定长记录的顺序文件。因而可以快速找到第i个记录对应的索引项,应用于对信息处理的及时性要求比较高的场合
在这里插入图片描述

索引顺序文件

由于索引表所占的空间太大,可能本身要存储的数据项只占4B,而每个索引项占8B,所占空间过大

若一般顺序文件有10000个数据项,关键字检索,平均需要10000/2=5000次

而索引顺序文件会将10000个记录分为100组,每组100个数据项,平均需要查找50+50=100次

结论:索引顺序文件提高了检索效率

多级索引顺序文件

假设一个顺序文件有10的6次方个数据项,就分为3级索引表,每级索引表有100个大组,每个大组又有100个小组,总共平均查找次数为50+50+50次

4.1.3文件目录

文件控制块(实现文件目录的关键数据结构)

FCB(file control block)是文件目录项,包含了文件的基本信息(文件名,物理地址等),存取控制信息(可读可写等信息),使用信息(创立时间等信息)

其中最重要,最基本的是文件名,文件存放的物理地址

由文件控制块(FCB)的有序集合就组成了文件目录。

目录结构

单级目录结构

一个系统只有一个目录表,不允许文件重名

两级目录结构

不同用户的文件可以重名,但是不能进行分类

树形目录结构

绝对路径:从根目录出发的路径称为绝对路径

eg:/2015-08/自拍.jpg

相对路径:从当前的目录出发的“相对路径”
优点:可以减少访问磁盘io的次数(原因在于每查询下一级时,都需要查询io,将外存中的文件调入内存)

eg:./2015-08/自拍.jpg "."表示当前目录

在这里插入图片描述
树形目录缺点:不易实现文件共享

无环图目录结构

用不同的文件名可以指向同一个文件:
在这里插入图片描述

为每个共享节点设置一个共享计数器,上图的共享文件设置一个共享计数器,起始为2,当删除其中一个目录下的该文件时,共享计数器的值减1

直到共享计数器的值为0,才删除文件

索引节点(优化FCB)

目录项只包括文件名和索引点指针,而索引点指针指向的索引节点的内容包括了其他所有信息
在这里插入图片描述

注意图中的例题

4.1.4 文件的物理结构(重点)

问题一:操作系统需要对哪些磁盘块进行管理:

1.对非空闲磁盘块的管理(存放了文件数据的磁盘块)
2.对空闲磁盘块的管理

主要讨论1.:

首先,在外存中,文件存储的方式和内存中的(页号,页内地址)的形式很像,在外存中,文件存储方式为(块号,块内地址)

连续分配

连续分配方式要求每个文件在磁盘上占有一组连续的块:
在这里插入图片描述
1)物理块号=起始块号+逻辑块号

2)优点:可以顺序访问和随机访问,且访问顺序较快(因为地址连续,省去了磁头移动的时间)

3)缺点:
1.采用连续分配的文件不方便拓展(因为已经分配了固定的空间,且空间连续)
2.在这里插入图片描述

链接分配

隐式链接

只支持顺序访问,不支持随机访问
在这里插入图片描述
1)逻辑块号向物理块号转变:先读入一个逻辑上的0号块(对应上图物理块号9号块),然后再访问下一个块(物理块号2),依次类推

2)缺点:只支持顺序访问,不支持随机访问

3)优点:文件方便拓展,不会有碎片问题,外存利用率高

显式链接

类似于静态链表
在这里插入图片描述
注意

一个磁盘只有一张FAT表,开机时,将FAT读入内存,并常驻内存,物理块号是隐含的

1)逻辑块号向物理块号转变:

如果要访问aaa文件的0号逻辑块,起始块号2号物理块就是用户要访问的块号

逻辑块号转化为物理块号的过程不需要读磁盘操作

2)优点:可以顺序访问,也可以随机访问

3)缺点:文件分配表(FAT)需要占用一定的空间

索引分配

索引分配允许文件离散的分配到各个磁盘块中,系统为每个文件建立一个索引表,索引表中记录了每个逻辑块对应的物理块,索引表存放的磁盘块称为索引块。
在这里插入图片描述
与FAT的对比:

FAT是每个磁盘有一个文件分配表

而索引表是每个文件对应一个,存在一个内存块中,这个内存块是一个索引块,里面存放的是文件中的数据对应的物理块号

在这里插入图片描述
共有2的30次方个磁盘块,可以用32位比特位来表示,所以一个4B就可以表示一个索引表的表项

链接方案

如果索引表太大,一个索引块装不下,将多个索引块链接起来存放:

每个索引块会有一定的空间用来存放指向下一个索引块的指针。

在这里插入图片描述
缺点:要访问最后一个块号,必须一个一个找最后一个索引块

由此提出来多级索引

多层索引(注意计算文件最大长度的题目)

在这里插入图片描述

如果采用k级索引访问目标数据块,需要访问(k+1)次磁盘io

缺点:对于小文件,也需要访问k+1次io

混合索引(计算文件最大长度)

是直接地址索引,多级间接索引的结合:
在这里插入图片描述

重点

在这里插入图片描述

对比各种分配方式

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/be_stronger/article/details/114520977