1.导入
在介绍文件管理之前,我们不妨联系之前学过的进程管理、存储管理。我发现,进程管理是对抽象的CPU的具体表现,而存储管理又是内存的具体体现,所以不难推出,文件管理是对外存的具体表现。
进程管理——CPU
存储管理——内存
文件管理——外存
言归正传。计算机的作用之一是准确、高速地处理大量信息。计算机程序要存储信息、检索信息。那么对信息的存储要由一些基本的要求:
- 能存储大量的信息(储存容量大,内存虽然可以做大,但是费钱呀)
- 长期保存信息(就算断电了也没事)
- 可以共享(操作系统真的无时无刻不在强调共享呀)
铺垫到这,文件呼之欲出。
1.1文件和文件系统
【文件】一组带标识的、在逻辑上有完整意义的信息项的序列。
【文件系统】是操作系统中统一管理信息资源的一种软件,它管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。
好吧,上面的定义苦涩难懂,来个易懂的版本
文件是以计算机硬盘为载体的存储在计算机上的信息集合。
那作为用户我们关心的是如何命名、分类和查找文件,如何保证文件数据的安全性以及能对文件进行哪些操作。涉及到如何存储在辅存上、如何管理文件辅存区域我们不太关心。不慌,文件系统会管。
【文件的组成】
(1)存储空间中的数据(2)“标签”:方便分类和检索(3)访问权限
【文件的结构】
(1)数据项:文件系统重最低级的数据组织形式
- 基本数据项:描述一个对象的某种属性的一个值,例如姓名、日期等
- 组合数据项:多个基本数据项的组合
(2)记录:记录是一组相关的数据项的集合,用于描述一个对象在某方面的属性的一个值,例如考生的报名信息
(3)文件:文件是由创建者所定义的一组相关信息的结合,逻辑上分为有结构文件(记录式文件)和无结构文件(流式文件)。
1.2文件的属性
主要包括以下:
- 名称:人取的
- 标识符:系统分辨的根据
- 类型
- 位置:设备和设备上文件的指针
- 大小
- 保护:对文件进行保护的访问控制信息
- 时间、日期和用户标识:打开“我的电脑”可以看到
所有文件的信息保存在目录结构中,而目录结构保存在外存中。文件信息在需要时才调入内存。
1.3文件的基本操作
- 创建文件
- 写文件:写指针
- 读文件:读指针
- 文件重定位:基于文件新的位置
- 删除文件:删除文件的目录项,再回收该文件所占用的存储空间
- 截断文件:文件属性不变,并删除文件内容,将其长度设为0并释放空间。(在目录中还是有目录项)
2.文件的逻辑结构
- 无结构文件(流式文件):基本单位是一个字节(Byte)
2.有结构文件(记录式文件) :基本单位是记录
- 顺序文件
- 索引文件
- 索引顺序文件
3.文件的物理结构
3.1顺序结构
连续结构,把逻辑上连续的文件信息依次存放在连续编号的物理块中。
例如:文件A的信息存放在第1、2、3块磁盘块中,文件B的信息存放在 第7、8块磁盘块中。
【优点】存取速度快,因为是连续顺序存放的,磁头移动得少
【缺点】(1)文件不能动态增长。比如文件A占了1-5块,文件B占了第7和第八块,文件A不能增长2块,因为没有位置了(2)产生外部碎片:第六块是外部碎片
3.2链接结构
文件可以存放在不连续的物理块中,每个物理块设有指向后续物理块的指针。
【优点】解决外部碎片问题;有利于文件动态扩充;有利于文件插入和删除,提高磁盘空间利用率
【缺点】(1)存取速度慢,不适合随机存取;(2)磁头移动多,寻道次数和寻道时间增加,效率相对较低;(因为不连续存储了,那么磁头一会移到这个磁道,一会移到那个磁道)(3)存在可靠性问题,一个指针出错,全毁了;(4)指针也占空间
3.3索引结构
把每个磁盘块的指针字取出,放在内存的表或索引中,就够成了索引结构。
3.4I节点结构
4.文件目录
从用户的角度看,目录要在所需要的文件名和文件之间提供一种映射,要实现“按名存取”。
4.1文件目录组成
联系进程管理,为了实现目录管理,操作系统引入了文件控制块这个数据结构,FCB存放了控制文件需要的各种信息,用来实现“按名存取”。FCB的有序集合称为文件目录。一个FCB就是一个文件目录项。为了创建一个新文件,系统分配一个FCB并存放在文件目录中,成为一个目录项。
4.2文件目录结构
1.一级目录结构
在整个文件系统中只建立一张目录表,每个文件占一个目录项。
缺点:文件不能重名,不便于共享,对多用户的操作系统是不适用的
2.两级目录结构
我想要新建一个文件叫“test”,巧了,你也将新建一个文件也取名叫“test”,操作系统就会默认这两个文件是一个,你能答应吗?所以,可以采用两级方案,将文件目录分成主文件目录(MFD)和用户文件目录(UFD)
主文件目录:记录用户名及相应文件目录所在的存储位置。
用户文件目录:记录该用户文件的FCB信息
优点:解决了文件不能重名的问题,检索速度加快
缺点:不能对文件分类
3.多级目录结构(树形目录结构)
优点:分便文件分类
缺点:在树形目录中查找一个文件时,按路径名逐级访问中间结点,这些结点存在外存中,访问磁盘次数多,影响查询速度。不便于实现文件共享。
4.3文件目录的改进
一个文件控制块很大要占很多空间,这样导致目录文件也很大。在检索目录时,为了找到所需的目录项,要将存放目录文件的多个物理块逐块读入内存进行查找,降低了检索速度。为了加快目录检索的速度,可以采用目录项分解法:目录项(FCB)分成两部分:符号目录项(次部)和基本目录项(主部)。
【符号目录项】
文件名+文件内部号
【基本目录项】
原来FCB中除去文件名其他部分
按名查取的时候检索由符号目录项构成的文件,找到后根据文件内部号找到文件内部具体的信息。
举个例子:家庭人员调查的时候,我们会根据户主名册找到目标户主(文件名),找到户主后根据房号(文件内部号)找到这家人的位置,接着再进行详细的调查。没必要把一家人全部的进行全部记录到整个名册中。
【例题】
5.存储介质
5.1支持顺序存取——磁带
5.2支持随机存取——磁盘
【一次读写数据的时间】
5.2.1磁盘调度算法
(1)先来先服务算法
(2) 最短寻找时间优先
(3)扫描算法(电梯调度算法):选择一个方向要进行到底,电梯不会上一下再下一下吧
(4)循环扫描算法
(6)LOOK调度
6.文件系统的实现
6.1文件的实现
6.1.1文件分配方式
(1)连续分配
(2)链接分配
(3)索引分配
6.1.2文件存储空间管理
(1)空闲表法
(2)空链表法
(3)位示图法
(4)成组链接法