【操作系统】文件管理

发布于:2024-05-17 ⋅ 阅读:(67) ⋅ 点赞:(0)

文件管理

文件

定义

  • 一组有意义信息的集合

属性

  • 文件名

  • 标识符

  • 类型

  • 位置

  • 大小

  • 保护信息

操作

  • 增删查改

文件逻辑结构

无结构文件

  • 文件的内容是二进制流或者字符流
    (txt文件)

有结构文件

  • 由相似的数据组成
    (excel表)

    • 顺序文件

      • 链式存储

        • 不能实现随机存储
      • 顺序存储

        • 串结构

          • 不按照关键字排列
        • 顺序结构

          • 按照关键字排列

          • 定长记录

            • 能够实现随机存储
          • 不定长记录

            • 一个一个顺序查找
    • 索引文件

      • 为文件建立索引,这样文件就可以离散存储,根据索引查找文件

      • 索引表本身是定长记录的顺序文件

    • 索引顺序文件

      • 当索引表比文件本身还大时,索引表中的一项会对应文件的一组内容(如:以a开头的文件)

      • 多级索引顺序文件

文件目录

文件控制块(FCB)

  • 一个FCB就是一个目录项

目录结构

  • 单级

    • 一个系统一张目录表

    • 文件不允许重名

  • 两级

    • 系统和用户的目录表分开

    • 不同用户文件可以重名

  • 多级(树形)

    • 不同目录下的文件可以重名

    • 绝对路径 & 相对路径

  • 无环图目录结构

    • 如果多个用户之间使用了同一个文件,就让他们的文件指针都指向这个文件

    • 有利于文件的共享

索引节点

  • 是对于目录表的一次 “瘦身”

  • 存放除了 文件名 的所有文件信息

  • 目录表中只需要使用一个索引节点指针就能够找到文件的信息

  • 当有用户删除这个文件的时候,只会删除这个文件结点上的计数器,只有计数器为0才会删除文件

文件存储

连续分配

  • FCB中记录 起始 和 长度 即可

链式分配

  • 显式

    • 有一张 FAT 表进行记录每个块后面的块是谁

    • 可以实现随机存取

  • 隐式

    • 每个物理块中自己存储自己的下一块是谁

    • 只能顺序读取

索引分配

  • 索引表

    • 为每个文件都建立一张索引表,用于存放这个文件使用到了哪些物理块

    • 索引表 < 块大小

  • 方案

    • 链接方案

      • 如果一个文件拥有的块一个索引表放不下,那么就让这些索引表链接起来(在最后一张项上写傻上下一张表的地址)
    • 多层索引

      • 像建立多级页表一样,对于索引表进行分割

      • 如果有k级索引,那么就需要k+1次访存

      • 缺点

        • 对于一个小文件也需要访问k+1次
    • 混合索引

      • 顶级索引表中有:

1.直接索引
2.一级间接索引
3.二级间接索引

	- FCB中存有 顶级索引表 的地址

文件共享

硬链接

  • 不创建新文件

  • 就是索引结点

软链接

  • 创建新文件(link类型)

  • 对应的文件本体被删除,软链接仍然还在,只是找不到对应的资源

  • 访问文件的时候有多次磁盘 I/O,所以比 硬链接慢

文件保护

口令保护

  • 需要输入密码才能访问

加密保护

  • 对原来的数据进行加密,需要使用密钥解锁(http加密)

访问控制

  • 对用户对于文件的访问权限阶梯控制

磁盘

”机械硬盘“

结构

  • 盘片

  • 盘面

    • 磁盘的一个切面
  • 磁道

    • 盘面上的一个轨道
  • 柱面

    • 竖着的所有同一位置的磁道组成的柱体
  • 扇区

    • 磁道切出来的一个扇形

地址

  • (柱面号,扇面号,扇区号)

    • 为什么不是(扇面号,柱面号,扇区号)?

      • 1.所有磁头是 “共进退” 的

      • 2.存储的时候如果按照先往相同的柱面存储,那就不需要移动磁头,只有这个柱面上的所有磁道都存满之后才需要移动磁头,减少了磁头的移动时间

一次读写时间

  • 寻道时间

  • 延迟时间

    • 减少延迟的办法

      • 交替编号

        • 1.因为每次磁头读完一个扇区的磁道都有反应时间,所以如果数据是连续每个磁道存放,那么磁头就需要停着等待。

2.如果是隔着道存,那就能用移动的时间避开这个 “反应时间”

	- 错位命名

		- 对于每个扇区也 “交替编号”,原理同交替编号

	- 寻址结构设计

		- 使用先确定柱面,后确定扇面;

而不是反过来(减少磁头的移动)

  • 传输时间

调度算法

  • 先来先服务(FCFS)

    • 优点

      • 公平
    • 缺点

      • 若访问的磁道分散,性能很差
  • 最短寻找时间优先(SSTF)

    • 访问离目前磁头所在位置最近的磁道

    • 优点

      • 性能好,寻道时间短
    • 缺点

      • 产生饥饿
  • 扫描算法(SCAN、电梯算法)

    • 只有到达磁盘最外道,才能向内走

    • 优点

      • 不会产生饥饿
    • 缺点

      • 1.如果进程访问到的最外道 不是磁盘的最外道,那就有白白浪费的寻道

      • 2.对于每个磁道的处理时间不均匀

    • LOOK调度算法

      • 对于扫描算法的改进,只要到达了进程访问的最外道/最内道,就更改方向
  • 循环-扫描算法(C-SCAN)

    • 单向处理每个磁道,像循环链表一样

    • C-LOOK算法

      • 不再从磁盘的0磁道一直到最外道;
        从进程访问的最内道单向访问到进程访问的最外道

磁盘管理

  • 初始化

    • 低级初始化(分扇区)

    • 逻辑初始化(创建文件系统)

  • 引导块

    • 计算机启动时,需要有一个 “自举程序”(初始化程序、开机加载的程序),来初始化CPU、寄存器、设备控制器、内存、然后启动操作系统
  • 坏块

    • 随着磁头滑动,磁道会有损坏,这时会由 “备用扇区” 对其进行逻辑替代

网站公告

今日签到

点亮在社区的每一天
去签到