文章目录
前情回顾与后期规划
- 计算机中存放了各种各样的文件,一个文件有哪些属性?
- 文件内部的数据应该怎样组织起来?
- 文件之间又应该又应该怎么组织起来?
- 从下往上看,OS应提供哪些功能,才能方便用户、应用程序使用文件?
- 从上往下看,文件数据应该怎么存放在外存(磁盘)上
文件属性
- 文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
- 标识符:一个系统内的各文件标识符唯一,对用户来说亳无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称
- 类型:指明文件的类型
- 位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)
- 大小:指明文件大小
- 创建时间、上次修改时间
- 文件所有者信息
- 保护信息:对文件进行保护的访问控制信息
文件内部数据组织
- 无结构文件:如记事本文件(
.txt
) - 有结构文件:如Ecxle表文件 (
.xlxs
)
操作系统向上提供的功能
从上往下看文件如何保持在外存
- 文件的物理结构:探讨的式文件这些数据在物理上怎么组织的问题
- 文件的逻辑结构:文件的各个记录在逻辑上怎么组织关系的问题
其他需要由操作系统实现的文件管理功能
- 文件共享:使多个用户可以共享使用一个文件
- 文件保护:如何保证不同的用户对文件有不同的操作权限
总结思维导图
文件的逻辑结构
知识总览思维导图
- 逻辑结构,就是指在用户看来,文件内部的数据应该是如何组织起来的。
- 物理结构,指的是在操作系统看来,文件的数据是如何存放在外存中的。
有结构文件
按文件是否有结构分类,可以分为无结构文件、有结构文件两种。
- 无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”.如Windows操作系统中的txt文件
- 有结构文件:由一组相似的记录组成,又称“记录式文件”.每条记录又若干个数据项组成。如数据库表文件。一般来说,每条记录有一个数据项可作为关键字(作为识别不同记录的ID)
- 根据各条记录的长度(占用存储空间)是否相等,可以分为定长记录和可变长记录两种。其中可变长的记录文件经常使用。
可变长记录如下:
顺序文件
- 顺序文件:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。
可变长记录与定长记录图示如下:
索引文件
- 对于可变长记录文件,要找到第i个记录,必须先顺序第查找前i - 1个记录但是很多应用场景中又必须使用可变长记录。如何解决这个问题?
解法:
- 索引表本身是定长记录的顺序文件。因此可以快速找到第ⅰ个记录对应的索引项。可将关键字作为索引号内容,若按关键字顺序排列,则还可以支持按照关键字折半查找。每当要增加/删除一个记录时,需要对索引表进行修改。由于索引文件有很快的检索速度,因此主要用于对信息处理的及时性要求比较高的场合
- 另外,可以用不同的数据项建立多个索引表。如:学生信息表中,可用关键字“学号”建立一张索引表。也可用“姓名”建立一张索引表。这样就可以根据“姓名”快速地检索文件了。(Eg:SQL就支持根据某个数据项建立索引的功能)
索引顺序文件
- 思考索引文件的缺点:每个记录对应一个索引表项,因此索引表可能会很大比如:文件的每个记录平均只占8B,而每个索引表项占32个字节,那么索引表都要比文件内容本身大4倍,这样对存储空间的利用率就太低了
- 索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立张索引表,但不同的是:并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项。