# 5.1 文件系统基础 ## 一、文件的概念 ### 1.1 什么是文件 **文件**:存储在存储介质上的具有符号名的相关信息的集合。 **文件的组成**: - 数据:文件的内容 - 属性:文件的元数据 ### 1.2 文件的属性 **基本属性**: - 文件名:文件的标识 - 文件类型:文件的种类 - 文件大小:文件占用的存储空间 - 创建时间:文件创建的时间 - 修改时间:文件最后修改的时间 - 访问时间:文件最后访问的时间 **保护属性**: - 所有者:文件的所有者 - 权限:读、写、执行权限 **存储属性**: - 物理位置:文件在磁盘上的位置 - 索引节点:文件的索引信息 --- ## 二、文件的类型 ### 2.1 按用途分类 **系统文件**: - 操作系统使用的文件 - 如:内核文件、配置文件 **用户文件**: - 用户创建的文件 - 如:文档、图片、视频 **库文件**: - 程序使用的库 - 如:标准库、第三方库 ### 2.2 按数据形式分类 **源文件**: - 源代码文件 - 如:.c, .java, .py **目标文件**: - 编译后的文件 - 如:.o, .obj **可执行文件**: - 可以运行的程序 - 如:.exe, .out ### 2.3 按存取控制分类 **只读文件**: - 只能读,不能修改 **读写文件**: - 可以读和写 **可执行文件**: - 可以执行的文件 ### 2.4 按组织形式分类 **普通文件**: - 包含用户数据的文件 **目录文件**: - 包含文件目录信息的文件 **特殊文件**: - 设备文件 - 如:/dev/null, /dev/tty --- ## 三、文件的操作 ### 3.1 基本操作 **创建**:创建一个新文件 **删除**:删除一个文件 **打开**:打开文件,建立进程与文件的连接 **关闭**:关闭文件,断开连接 **读**:从文件读取数据 **写**:向文件写入数据 **设置读写位置**:移动文件指针 **获取属性**:获取文件属性 **设置属性**:修改文件属性 **重命名**:修改文件名 ### 3.2 文件打开操作 **打开文件的目的**: - 将文件属性读入内存 - 在进程与文件之间建立连接 - 返回文件描述符(句柄) **打开后的操作**: - 通过文件描述符进行读写 - 不需要每次都查找文件 ### 3.3 文件关闭操作 **关闭文件的目的**: - 断开进程与文件的连接 - 释放文件描述符 - 将修改写回磁盘 --- ## 四、文件的逻辑结构 ### 4.1 无结构文件(流式文件) **特点**: - 文件是字节流 - 没有记录结构 - 如:文本文件、二进制文件 **优点**: - 简单灵活 - 节省存储空间 **缺点**: - 查找困难 - 只能顺序访问 ### 4.2 有结构文件(记录式文件) **特点**: - 文件由若干记录组成 - 每个记录有固定格式 **记录类型**: - 定长记录:每个记录长度相同 - 变长记录:每个记录长度不同 **优点**: - 便于查找 - 可以随机访问 **缺点**: - 存储开销大 - 不够灵活 --- ## 五、文件的物理结构 ### 5.1 连续分配 见5.2节 ### 5.2 链接分配 见5.2节 ### 5.3 索引分配 见5.2节 --- ## 六、文件控制块(FCB) ### 6.1 什么是FCB **文件控制块(File Control Block)**: - 用于描述和控制文件的数据结构 - 文件存在的标志 ### 6.2 FCB的内容 **基本信息**: - 文件名 - 文件类型 - 文件大小 **存储信息**: - 物理位置 - 索引节点号 **时间信息**: - 创建时间 - 修改时间 - 访问时间 **权限信息**: - 所有者 - 权限 ### 6.3 FCB的组织 **文件目录**:FCB的有序集合 --- ## 七、考研重点 1. **文件的概念**:什么是文件 2. **文件的属性**:基本属性、保护属性、存储属性 3. **文件的类型**:按用途、数据形式、存取控制、组织形式分类 4. **文件的操作**:创建、删除、打开、关闭、读、写 5. **文件的逻辑结构**:无结构文件、有结构文件 6. **FCB**:文件控制块的内容 --- *下一节:5.2 文件的物理结构*