美文网首页007-2271-不出局
外存管理与文件系统

外存管理与文件系统

作者: 短暂瞬间 | 来源:发表于2019-08-21 23:57 被阅读0次

    第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 时间,所以可以非常明显感觉到计算机变得很慢

    相关文章

      网友评论

        本文标题:外存管理与文件系统

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