文件系统基础
初识文件管理
前情回顾
从最熟悉的Windows操作系统出发
一个文件有哪些属性?
文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
类型:指明文件的类型。
位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)。
大小:指明文件大小创建时间、上次修改时间文件所有者信息。
保护信息:对文件进行保护的访问控制信息。
文件内部的数据应该怎样组织起来?
无结构文件(如文本文件)–由一些二进制或字符流组成,又称“流式文件”。
有结构文件(如数据库表)–由一组相似的记录组成,又称“记录式文件”:记录是一组相关数据项的集合。
文件之间应该怎样组织起来?
操作系统应该向上提供哪些功能?
可以“创建文件”。(点击新建后,图形化交互进程在背后调用了“create系统调用”)。
可用几个基本操作完成更复杂的操作,比如:“复制文件”:先创建一个新的空文件,再把源文件读入内存,再将内存中的数据写到新文件中。
从下往上看,文件应如何放在外存?
从上往下看,文件应如何放在外存?
文件数据放在连续的几个磁盘块中。
其他需要操作系统实现的文件管理功能
知识回顾与重要考点
文件的逻辑结构
知识总览
类似于数据结构的“逻辑结构”和“物理结构”。如线性表就是一种逻辑结构,在用户角度看来,线性表就是一组有先后关系的元素序列。
无结构文件
按文件是否有结构分类,可以分为无结构文件、有结构文件两种。
无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如:Windows操作系统中的.txt文件。
有结构文件
有结构文件:由一组相似的记录组形成,又称“记录式文件”。每条记录由若干个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字(作为识别不同记录的ID)。根据个记录长度(占用的存储空间)是否相等,又可分为定长记录和可变长记录两种。
有结构文件的逻辑结构
顺序文件
顺序文件:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。
索引文件
索引顺序文件
索引顺序文件(检索效率分析)
多级索引顺序文件
知识回顾与重要考点
文件目录
知识总览
文件控制块
需要对目录进行哪些操作?
搜索:当用户要使用一个文件时,系统要根据文件名搜索目录,找到该文件对应的目录项。
创建文件:创建一个新文件时,需要在其所属的目录中增加一个目录项。
删除文件:当删除一个文件时,需要在目录中删除响应的目录项。
显示 目录:用户可以请求现实目录的内容,如显示该目录中的所有文件及相应属性。
修改目录:某些文件属性保存在目录中,因此这些属性变化时需要修改相应的目录项(如:文件重命名)
目录结构–单级目录结构
目录结构–两级目录结构
目录结构–多级目录结构
又称树形目录结构
目录结构–无环图目录结构
索引结点(FCB的改进)
知识点回顾与重要考点
文件的物理结构
(文件的分配方式)
知识总览
文件块、磁盘块
在内存管理中,进程的逻辑地址空间被分为一个一个页面。
同样的,在外存管理中,为了方便对文件数据的管理,文件的逻辑地址空间也被分为了一个一个的文件“块”。
于是文件的逻辑地址也可以表示为(逻辑块号,块内地址)的形式。
文件分配方式–连续分配
连续分配方式要求每个文件在磁盘上占有一组连续的块。
物理块号 = 起始块号 + 逻辑块号
可以直接算出逻辑块号对应的物理块号,因此连续分配支持顺序访问和直接访问(即随机访问)。
读取某个磁盘块时,需要移动磁头。访问的两个磁盘块相隔越远,移动磁头所需时间就越长。
结论:连续分配的文件在顺序读/写时速度最快。
物理上采用连续分配的文件不方便拓展。
文件分配方式–链接分配
链接分配方式采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接和显示链接两种。
链接分配–隐式链接
只支持顺序访问,不支持随机访问,查询效率低。另外,指向下一个盘快的指针也需要耗费少量的存储空间。
链接分配–显式链接
把用于链接文件的各物理快的指针显示地存放在一张表中。即文件分配表。
显示链接–把用于链接文件各物理块的指针显式地存放在一张表中,即文件分配表(FAT)。一个磁盘只会建立一张文件分配表。开机时文件分配表放入内存,并常驻内存。
优点:很方便文件拓展,不会有碎片问题,外存利用率高,并且支持随机访问。相比于隐式链接来说,地址转换时不需要访问磁盘,因此文件的访问效率更高。
缺点:文件分配表需要占用一定的存储空间。