美文网首页操作系统
文件及目录的基本操作

文件及目录的基本操作

作者: Nefelibatas | 来源:发表于2022-04-18 23:47 被阅读0次

    一个文件的属性

    • 文件名:同一个目录下不允许有重命名文件
    • 标识符:一个系统内的各文件标识符唯一
    • 类型
    • 位置
    • 大小
    • 创建时间、上次修改时间
    • 文件所有者信息
    • 保护信息

    文件基本概念

    无结构文件:由一些二进制或字符流组成,又称“流式文件”。

    有结构文件:如数据库表,由一组相似的记录组成,又称“记录式文件”

    记录是一组相关数据项的集合。

    数据项是文件系统中最基本的数据单位。

    Q:文件之间应该如何组织?

    用户可以创建一层一层的目录,各层目录中存放相应的文件,系统中的各个文件通过一层一层的目录合理有序的组织起来。目录也是一种特殊的有结构文件,由记录组成。

    文件共享:使多个用户可以共享一个文件

    文件保护:保证不同用户对文件有不同的操作权限

    Q:文件应如何存放在外存?

    • 操作系统以块为单位为文件分配存储空间,因此即使一个文件大小只有10B依然需要占用1kb的磁盘块。外存中的数据读入内存时同样以块为单位。

    • 文件的逻辑地址分为(逻辑块号,块内地址),操作系统需要将逻辑地址转换为外存的物理地址。

    • 外存也是一个个由存储单元组成,每个存储单元对应一个物理地址

    • 文件数据放在连续的几个磁盘块中,文件数据放在离散的磁盘块中并记录各个磁盘块之间的先后顺序。

    文件的逻辑和物理

    逻辑结构:在用户看来文件内部的数据应该如何组织的。

    物理结构:在OS看来文件内部的数据如何存放在外村中。

    • 无结构文件
      • 一系列二进制流或字符流组成,称为流式文件
    • 有结构文件:由一组相似的记录组成,每条记录又若干个数据项组成,每条记录有一个数据项作为关键字。
      • 顺序文件:文件中的记录一个接一个顺序排列(逻辑上),记录可以是定长或可变,各个记录在物理上可以顺序存储或链式存储。
        • 链式:无论定长或可变,都无法实现随机读取,每次只能从第一个记录开始依次查找。
        • 顺序
          • 可变:无法实现随机读取,每次只能从第一个记录开始依次查找。
          • 定长
            • 可随机存取,记录长度为L,则第i个记录存放的相对位置 i*L
            • 采用串结构,无法快速找到某关键字对应的记录
            • 若采用顺序结构可以快速找到某关键字对应的记录(比如折半查找)
      • 索引文件
      • 索引顺序文件

    索引文件

    • 索引表本身是定长记录的顺序文件,可以快速找到第i个记录对应索引项。
    • 主要用于对信息处理的及时性要求比较高的场合,可以用不同的数据项建立多个索引表。
    • 一组记录对应一个索引表项。

    文件目录

    文件控制块

    • 目录文件
    • 目录本身是一种结构文件,由一条条记录组成,每条记录对应一个在该放在该目录下的文件。

    PCB是进程存在的唯一标志。

    FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。

    FCB实现了文件名和文件之间的映射。用户程序可以实现“按名存取”。

    文件

    • 文件名放在目录表
    • 属性attr放在索引节点inode
    • 文件数据data放在磁盘block中

    单级目录结构:整个文件系统只建立一张目录表。

    • 优点:

      • 实现简单
      • 能实现按名存取
    • 缺点:

      • 查找速度慢
      • 不允许重名
      • 不便于实现文件共享

    多级目录结构:将文件目录分为主文件目录和用户文件目录。

    • 优点:
      • 提高了目录检索速度。
      • 层次清楚
      • 允许文件重名。
      • 不同用户可以使用不同的文件名来访问系统中的同一个共享文件。
    • 缺点:
      • 缺乏灵活性。
      • 无法很好满足文件多的用户的需要。

    无环图目录结构

    • 可以用不同的文件名指向同一个文件。
    • 需要为每个共享结点设置一个共享计数器,当共享计数器减为0才删除结点。
    • 共享文件不同于复制文件,在共享文件中由于各用户指向同一个文件。

    索引结点FCB的改进

    索引结点:包含除了文件名之外的文件描述信息。

    存放在外存中的索引结点称为”磁盘索引结点“。

    当索引结点放入内存后称为”内存索引结点“。

    文件共享:基于索引结点的共享方式(硬链接)

    • count>0说明由别的用户要使用文件
    • count =0时系统负责删除文件

    文件共享:基于符号链的共享方式(软链接)

    文件的基本操作

    操作系统向上提供哪些功能?

    • 创建文件

      • 在外存中找到文件所需空间
      • 根据文件存放路径找到对应的目录文件,在目录中创建该文件对应的目录项。
    • 删除文件

      • 从目录中找到文件名对应的目录项,回收文件占用的磁盘块。
      • 从目录表中删除文件对应的目录项
    • 打开文件

      • 从目录中找到文件名对应的目录项
      • 将目录项复制到内存中的”打开文件表“,用户使用”打开文件表“的编号指明要操作的文件。
    • 写入文件

      • 记录此时有多少个进程打开此文件
      • 如果声明是只读则不能对文件进行写写入操作
      • 读写指针记录操作系统对文件操作的位置
    • 关闭文件

      • 记录此时有多少个进程打开此文件
    • 读取文件

      • read调用

    相关文章

      网友评论

        本文标题:文件及目录的基本操作

        本文链接:https://www.haomeiwen.com/subject/bqwjertx.html