文件
定义:文件是以计算机硬盘为载体的存储在计算机上的信息集合(宽泛的)
属性:描述文件状态的信息,eg.名称,修改时间等等
基本操作:创建、打开、修改文件
文件的逻辑结构
1、无结构文件(流式文件)
- 以字节为单位
- 没有具体结构
- 使用穷举的方式搜索
eg.我们常用的txt文件,图片都是流式文件
2、有结构文件(记录式文件)
- 顺序文件
- 索引文件
- 索引顺序文件
- 直接文件或散列文件(hash file)
文件的目录结构
1、文件控制块
- 基本信息
- 存取基本信息(权限)
- 使用信息
实际上我们在window系统中打开一个目录时,如下图所示,展现的就是各个文件控制块的信息
2、索引结点
如上图所示,索引结点是根据文件名创建的结点,可以方便我们对文件进行检索
3、目录结构
目录结构实际上类似数据结构中的树形结构
对于公用文件,其中实现的原理是:各个用户对该目录建立一个连接用于访问
文件系统的层次结构
如上图所示,从上到下各个层次的作用分别为:用户对文件进行打开、读写、删除等操作,文件系统对用户操作的文件进行打开(可以理解为获取到该文件的索引结点),检验文件权限,将文件的逻辑地址转换为物理地址,最后到物理地址读取到文件
目录实现
首先需要明确的是目录实际上也可以被看作为一个文件,并且是一个包含多个FCB的文件,因此对目录的实现即对这些FCB存储结构的实现
- 线性列表
- 哈希表
文件的实现(在磁盘上)
首先需要知道的是磁盘的最小单位是 扇区
1、连续分配
即将文件存储在磁盘上的空间分布是连续,这样分配的优点是方便顺序和直接访问速度快,但是如果我们想要在原先文件中新增内容的话则需要在原先磁盘位置的后面新增块进行存储,此时可能需要的块已经被占用了,这时操作起来就比较麻烦了
2、链接分配
- 隐式链接:将磁盘块之间的指针存储在块中
优点是支持顺序访问,方便扩展,不会产生碎片
缺点是不支持直接访问即不能像顺序分配那样可以直接计算得到所有块,效率较低,同时块与块之间的链接较为容易丢失
- 显式链接
与隐式链接不同的是,显式链接将指针从盘块中拿了出来,以一个表的形式进行存储
此外,我们可以将该文件分配表在一开始就将其加载到内存当中,因此该种显式分配方式的效率较高,且支持顺序访问,无外部碎片,方便扩展