操作系统-18-文件基础

操作系统-18-文件基础

前言

mark

1. 文件的属性

  • 文件名
    主要是给用户看,同一个目录下不允许重名文件
  • 标识符
    一个系统内各文件标识符唯一,对用户毫无可读性,给操作系统看的
  • 类型
    文件扩展名
  • 位置
    文件存放路径,给用户看的,在外存中的地址用户是看不到的
  • 大小
  • 创建时间
  • 上次修改/访问时间
  • 所有者信息
  • 保护信息

2. 文件的逻辑结构

mark

2.1 无结构文件

mark

2.2 有结构文件

  • 又叫做 记录式 文件,比如数据库表,由一组相似的记录组成

  • 记录是一组相关的数据线的集合,每条记录有一个数据项可作为关键字

  • 根据记录的长度是否相等,可以分为

    • 定长记录

    mark

    • 可变长记录

mark****

有结构文件的逻辑结构

2.2.1 顺序文件

  • 链式存储
    逻辑上相邻的记录,在物理上离散存储
    ​无论是定长/可变长记录,都无法实现随机存取,只能从链头开始遍历

  • 顺序存储

    逻辑上相邻的记录,在物理上也相邻。
    没有说明的情况下,顺序文件指采用顺序存储的顺序文件

    • 可变长记录
      无法实现随机存取

    • 定长记录
      可以实现随机存储。如果采用串结构(记录顺序与关键字无关),无法快速找到某个关键字对应的记录,如果采用顺序结构(记录按关键字排序的),可以使用折半查找快速找到记录

2.2.2 索引文件

  • 索引表本身是定长记录的顺序文件
  • 索引表项包含索引号,长度,指针,真正的记录可以在物理上离散存储
  • 索引号可以是关键字,这样就能折半查找加快检索速度,用于对信息处理及时性要求高的场合,解决了顺序文件增删不便的问题 可以用不同的数据项建立多个索引表

mark

2.2.3 索引顺序文件

  • 将记录分组,每一个组对应一个索引表项
  • 检索记录时先检索索引表,找到分组,再顺序查找分组
  • 记录过多时,可以建立多级索引表 记录N的表,平均查找次数是N/2
  1. 索引文件的缺点

mark

索引顺序文件的效率分析:

mark

  • 多级索引顺序文件

mark

3. 文件的目录结构

mark

3.1 文件控制块

  • 一个FCB 对应一个文件,一个FCB就是一个目录项
  • FCB的有序集合叫“文件目录”
  • FCB包含了文件的基本信息,存取控制信息,使用信息等等,最重要的是文件名、文件存放的物理地址 对目录的操作:搜索、创建文件、删除文件、显示文件、修改文件

mark

  • 对目录的操作分类

mark

3.2 目录结构

3.2.1 单级目录结构

mark

3.2.2 两级目录结构

mark

3.2.3 多级目录结构(树形目录结构)

  • 共享不方便

  • 从根目录出发的路径叫做绝对路径

mark

  • 从当前目录出发的路径叫做相对路径

mark

3.2.4 无环图目录结构

  • 树形目录结构能够便于实现文件分类,但是不利于文件共享
  • 为此在树形目录结构的基础上增加一些指向同一节点的有向边

mark

3.3 索引节点

  • FCB 的问题

mark

  • 存放在磁盘上的索引节点叫做磁盘索引节点
  • 当文件被打开的时候,磁盘索引节点复制到内存索引节点

mark

4. 文件的基本操作

  • 创建文件(creat)
    • 在外存中找到文件所需的空间
    • 根据文件路径找到对应的目录,创建文件对应的目录项
  • 删除文件(delete)
    • 根据文件路径找到对应的目录文件,找到文件名对应的目录项
    • 回收文件占用的磁盘块
    • 删除目录项
  • 打开文件(open)
    • 根据路径找到目录文件,找到文件名对应的目录项,检测用户的权限
    • 将目录项复制到该进程在内存中的打开文件表中,返回表目编号(索引号/文件描述符FD)
  • 关闭文件(close)
    • 删除进程的打开文件表的对应项
    • 回收分配给该文件的内存空间等资源
    • 系统打开文件表的打开计数器count -= 1 (归零时删除该项)
  • 读文件(read)
    • 需要提供进程打开文件表中的索引号,读入的数据量,数据在内存中存放的位置
    • 从读指针指向的外存位置读取指定大小的数据到指定的内存区域
  • 写文件(write)
    • 需要提供打开文件表中的索引号,写出的数据量,写回外存的数据位置(写指针指向)

5. 文件共享

5.1 基于索引节点的共享(硬链接)

  • 索引节点里面放了一个链接计数器 count

mark

5.2 基于符号链的共享(软链接)

mark

  • 系统会创建一个Link 类型的新文件
    • 新文件的路径名只被视为是符号链
    • 在利用符号链实现文件共享时候
      • 只有文件的拥有者才拥有指向其索引节点的指针
      • 共享该文件的其他用户只有该为文件的路径名

6. 文件保护

mark

  1. 口令保护
  2. 加密保护
  3. 访问控制

7. 文件的系统层次结构

mark

举个例子:

mark

参考书籍:《王道考研计算机操作系统》

参考博客https://mubu.com/doc/Cd-Y4YOfkh#o-1d01735b78f18c07f

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信