外存管理与文件系统

第99篇

极客时间《许式伟的架构课》课程笔记。

外存的分类(依据功能特性)

  1. 顺序读写型
  • 典型产品:磁带
  • 应用场景:归档,数据备份
  • 不常见
  1. 随机只读型
  • 典型产品:光盘
  • 应用场景:资料分发和归档
  • 日常应用较多,如软件、电影、音乐的发布
  1. 随机读写型
  • 典型产品:软盘、硬盘、U盘、SSD等
  • 应用场景:几乎所有电脑类的设备都会使用
  • 最常见的外存,PC、笔记本、手机、手表、汽车等都会用到

外存的数据格式

  • 与内存管理不同,外部存储的管理需要文件系统
  • 文件系统把存储设备中的数据组织成一棵树,节点可以是文件夹,也可以是文件
  • 树的根节点为根目录,文件时叶节点,保存希望存储的资料
  • 每个节点,无论是目录还是文件,都有自己的名字、创建时间、最后编辑时间、最后访问时间等信息

常见文件系统

  1. 随机只读型存储的文件系统


    随机只读
  2. 随机读写型存储的文件系统


    随机读写
  • 文件系统种类很多,但设计思路基本相似,大部分现代文件系统都基于日志来改善文件系统的防灾难能力,基于B树或B+树组织元数据
  • FAT文件系统是例外,它直接把目录当一个特殊文件,里面一次列出目录里所有子节点的元信息,缺点是当目录树深、子节点数量多时性能会大幅降低
  • 随机读写型存储支持分区,分区的本质是把一个存储设备模拟成多个存储设备使用

外存的使用接口

  1. 命令行工具
    最简单的方式是用操作系统提供的命令行工具。例如:
    目录相关:ls, mkdir, mv, cp, rmdir 等。
    文件相关:cat, vi, mv, cp, rm 等

  2. 系统调用
    最原始的方式是 “系统调用”。但大部分编程语言对此都有相应的封装,如 Go 语言中的相关功能如下:
    目录相关:os.Mkdir, os.Rename, os.Remove 等。
    文件相关:os.Open/Create/OpenFile, os.Rename, os.Remove 等。

虚拟内存支持

  • 在物理内存不足的时候,操作系统会利用外存把一些很久没有使用的内存页的数据,保存到外存以进行淘汰
  • 在 UNIX 系的操作系统中,操作系统为此分配了一个磁盘分区叫 swap 分区,专门用于内存页的保存和恢复
  • 在 Windows 操作系统中则通过一个具有隐藏属性的 .swp 文件来实现
  • 在缺页发生比较频繁时,内存页的数据经常性发生保存和恢复,这会发生大量的磁盘 IO 操作,非常占用 CPU 时间,所以可以非常明显感觉到计算机变得很慢

你可能感兴趣的:(外存管理与文件系统)