1 基本概念

1.1 文件系统和文件

  •  文件系统: 一种用于持久性存储的系统抽象
    • 在存储器上:组织、控制、导航、访问和检索数据
    • 大多数计算机系统包含文件系统
    • 个人电脑、服务器、笔记本电脑
    • iPod、 Tivo /机顶盒、手机/掌上电脑
    • Google 可能是由一个文件系统构成的
  • 文件:文件系统中一个单元的相关数据在操作系统中的抽象

1.1.1 文件系统的功能

  •  分配文件磁盘空间
    • 管理文件块(哪一块属于哪一个文件)
    • 管理空闲空间(哪一块是空闲的)
    • 分配算法(策略)
  • 管理文件集合
    • 定位文件及其内容
    • 命名:通过名字找到文件的接口
    • 最常见:分层文件系统
    • 文件系统类型(组织文件的不同方式)
  • 提供的便利及特征
    • 保护:分层来保护数据安全
    • 可靠性/持久性:保持文件的持久即使发生崩溃、媒体错误、攻击等

1.1.2 文件和文件块

  •  文件属性
    • 名称、类型、位置、大小、保护、创建者、创建时间、最近修改时间
  • 文件头/文件块
    • 在存储元数据中保存了每个文件的信息
    • 保存文件的属性
    • 跟踪哪一块存储块属于逻辑上文件结构的哪个偏移

1.2 文件描述符

1.2.1 文件使用

操作系统(十二)- 文件系统

1.2.2 管理文件需要的东西

 需要元数据数据来管理打开文件:

  • 文件指针: 指向最近的一次读写位置,每个打开了这个文件的进程都这个指针
    • 文件打开计数:记录文件打开的次数  当最后一个进程关闭了文件时,允许将其从打开文件表中移除
  • 文件磁盘位置:缓存数据访问信息
  • 访问权限:每个程序访问模式信息

1.2.3 系统的视图来看

  •  用户视图: .
    • 是一个持久的数据结构
  • 系统访问接口
    • 字节的集合(UNIX)
    • 系统不会关心你想存储在磁盘上的任何的数据结构!
  • 操作系统内部视角
    • 块的集合(块是逻辑转换单元,而扇区是物理转换单元)
    • 块大小<>扇区大小;在UNIX中,块的大小是4KB

例如

操作系统(十二)- 文件系统

1.2.4 怎末访问文件

  •  用户怎么访问文件
    • 在系统层面需要知道用户的访问模式
  • 顺序访问:按字节依次读取
    • 几乎所有的访问都是这种方式
  • 随机访问:从中间读写
    • 不常用,但是仍然重要.例如,虚拟内存支持文件:内存页存储在文件中
    • 更加快速-不希望获取文件中间的内容的时候也必须先获取块内所有字节。
  • 基于内容访问:通过特征
    • 许多系统不提供此种访问方式,相反,数据库是建立在索引内容的磁盘访问上更需要高效的随机访问)

1.2.5 基于内容访问的例子

操作系统(十二)- 文件系统

 

1.2.6 文件内存的结构

  •  无结构.
    • 单词、比特的队列
  • 简单记录结构
    • 固定长度
    • 可变长度
  • 复杂结构
    • 格式化的文档(如,MS Word, PDF)
    • 可执行文件

操作系统(十二)- 文件系统

操作系统(十二)- 文件系统

1.3 目录

1.3.1 为什么要有目录

操作系统(十二)- 文件系统

1.3.2 典型操作

  •  典型操作
    • 搜索文件
    • 创建文件
    • 删除文件
    • 枚举目录
    • 重命名文件
    • 在文件系统中遍历一个路径
  • 操作系统应该只允许内核模式修改目录
    • 确保映射的完整性
    • 应用程序能够读目录(如1s)

1.3.3 数据结构

  •  文件名的线性列表,包涵了指向数据块的指针
    • 编程简单
    • 执行耗时
  • Hash表- hash数据结构的线性表
    • 减少目录搜索时间
    • 碰撞-两个文件名的hash值相同
    • 固定大小

1.3.4 路径的遍历

操作系统(十二)- 文件系统

1.3.5 挂载

操作系统(十二)- 文件系统

1.4 文件别名

操作系统(十二)- 文件系统

1.4.1 删除有别名的文件

操作系统(十二)- 文件系统

 1.4.2 别名可能出现环

操作系统(十二)- 文件系统

1.5 文件系统种类

操作系统(十二)- 文件系统

1.5.1 分布式文件系统的补充说明

  •  文件可以通过网络被共享
    • 文件位于远程服务器
    • 客户端远程挂载服务器文件系统
    • 标准系统文件访问被转换成远程访问
    • 标准文件共享协议: NFS for Unix, CIFS for Windows
  • 分布式文件系统的问题
    • 客户端和客户端.上的用户辨别起来很复杂
    • 例如,NFS是不安全的
    • 一致性问题
    • 错误处理模式

 

2 虚拟文件系统

2.1 为什么要有虚拟文件系统

  •  目的
    • 对所有不同文件系统的抽象
  • 功能
    • 提供相同的文件和文件系统接口
    • 管理所有文件和文件系统关联的数据结构
    • 高效查询例程,遍历文件系统
    • 与特定文件系统模块的交互

操作系统(十二)- 文件系统

2.2 属性

操作系统(十二)- 文件系统

2.3 结构图

操作系统(十二)- 文件系统

2.4 怎么保存

  •  文件系统数据结构
    • 卷控制块(每个文件系统一个)
    • 文件控制块(每个文件一个)
    • 目录节点(每个目录项一个)
  • 持续存储在二级存储中
    • 在分配在存储设备中的数据块中
  • 当需要时加载进内存
    • 卷控制模块:当文件系统挂载时进入内存
    • 文件控制块:当文件被访问时进入每次
    • 目录节点:在遍历-一个文件路径时进入内存

2.5 结构图二

操作系统(十二)- 文件系统

 

3 数据块的数据缓存

操作系统(十二)- 文件系统

3.1 缓存各种方式

  •  数据块按需读入内存
    • 提供read() 操作
    • 预读:预选读取后面的数据块
  • 数据块使用后被缓存
    • 假设数据将会再次被使用
    • 写操作可能被缓存和延迟写入
  • 两种数据块缓存方式
    • 普通缓冲区缓存
    • 页缓存:统一缓存数据块和内存页

3.2 基于分页的缓存

操作系统(十二)- 文件系统

3.3 怎末提高缓存效率,尽量减小对硬盘的访问次数

操作系统(十二)- 文件系统

 

4 打开文件的数据结构

4.1 打开文件的实现流程

  •  打开文件描述
    • 每个被打开的文件一个
    • 文件状态信息
    • 目录项、当前文件指针、文件操作设置等
  • 打开文件表
    • 一个进程一个
    • 一个系统级的
    • 每个卷控制块也会保存一个列表
    • 所以如果有文件被打开将不能被卸载

4.2 图示

操作系统(十二)- 文件系统

4.3 注意

  •  一些操作系统和文件系统提供该功能
  • 调节对文件的访问
  • 强制和劝告:
    • ➢强制:根据锁保持情况和需求拒绝访问
    • ➢劝告:进程可以查找锁的状态来决定怎么做

 

 

5 文件分配

5.1 对文件空间的管理

  •  大多数文件都很小
    • ➢需要对小文件提供强力的支持
    • ➢块空间不能太大
  • 一些文件非常大
    • ➢必须支持大文件(64-bit 文件偏移).
    • 大文件访问需要相当高效

5.2 怎末分配数据块

  •  如何为一个文件分配数据块
  • 分配方式
    • 连续分配
    • 链式分配
    • 索引分配
  • 指标
    • 高效:如存储利用(外部碎片)
    • 表现:如访问速度

5.3 连续分配

操作系统(十二)- 文件系统

5.4 链式分配

操作系统(十二)- 文件系统

5.5 索引分配

操作系统(十二)- 文件系统

5.5.1大文件的索引分配(索引分级)

操作系统(十二)- 文件系统

5.5.2 unix就采取了多级索引

操作系统(十二)- 文件系统

5.6 问题

操作系统(十二)- 文件系统

 

6 空闲空间列表

问题:

  • 跟踪在存储中的所有未分配的数据块
  • 空闲空间列表存储在哪里?
  • 空闲空间列表的最佳数据结构是什么样的?

6.1 简单方法,位图来表示

操作系统(十二)- 文件系统

6.2 为了保证一致性

操作系统(十二)- 文件系统

6.3 其它管理空闲空间数据块的数据结构

操作系统(十二)- 文件系统

 

7 多磁盘管理 - RAID

操作系统(十二)- 文件系统

操作系统(十二)- 文件系统

7.1 raid的原理--冗余磁盘阵列

操作系统(十二)- 文件系统

7.2 提高了带宽

操作系统(十二)- 文件系统

7.3 可靠性的提高

操作系统(十二)- 文件系统

7.4 即提高了性能,又提高了可靠性

操作系统(十二)- 文件系统

7.5 奇偶校验块,分布到每一个disk中

操作系统(十二)- 文件系统

7.6 进一步改进

操作系统(十二)- 文件系统

简单的实现

操作系统(十二)- 文件系统

 

8 磁盘调度

8.1 硬件结构

操作系统(十二)- 文件系统

8.2 磁盘性能的表示

操作系统(十二)- 文件系统

8.3 访问时间组成

操作系统(十二)- 文件系统

8.4 寻道时间开销最大

操作系统(十二)- 文件系统

8.4 按照进程的顺序处理

操作系统(十二)- 文件系统

示例

操作系统(十二)- 文件系统

8.5 最短寻道

操作系统(十二)- 文件系统

8.6 scan方法(电梯)

操作系统(十二)- 文件系统

8.7 改进(一直由低到高循环)

操作系统(十二)- 文件系统

8.8 改进(只到达最后一个请求,并非磁盘末尾)

操作系统(十二)- 文件系统

8.9 分区

操作系统(十二)- 文件系统

操作系统(十二)- 文件系统

 

相关文章: