第99篇
极客时间《许式伟的架构课》课程笔记。
外存的分类(依据功能特性)
- 顺序读写型
- 典型产品:磁带
- 应用场景:归档,数据备份
- 不常见
- 随机只读型
- 典型产品:光盘
- 应用场景:资料分发和归档
- 日常应用较多,如软件、电影、音乐的发布
- 随机读写型
- 典型产品:软盘、硬盘、U盘、SSD等
- 应用场景:几乎所有电脑类的设备都会使用
- 最常见的外存,PC、笔记本、手机、手表、汽车等都会用到
外存的数据格式
- 与内存管理不同,外部存储的管理需要文件系统
- 文件系统把存储设备中的数据组织成一棵树,节点可以是文件夹,也可以是文件
- 树的根节点为根目录,文件时叶节点,保存希望存储的资料
- 每个节点,无论是目录还是文件,都有自己的名字、创建时间、最后编辑时间、最后访问时间等信息
常见文件系统
-
随机只读型存储的文件系统
随机只读 -
随机读写型存储的文件系统
随机读写
- 文件系统种类很多,但设计思路基本相似,大部分现代文件系统都基于日志来改善文件系统的防灾难能力,基于B树或B+树组织元数据
- FAT文件系统是例外,它直接把目录当一个特殊文件,里面一次列出目录里所有子节点的元信息,缺点是当目录树深、子节点数量多时性能会大幅降低
- 随机读写型存储支持分区,分区的本质是把一个存储设备模拟成多个存储设备使用
外存的使用接口
-
命令行工具
最简单的方式是用操作系统提供的命令行工具。例如:
目录相关:ls, mkdir, mv, cp, rmdir 等。
文件相关:cat, vi, mv, cp, rm 等 -
系统调用
最原始的方式是 “系统调用”。但大部分编程语言对此都有相应的封装,如 Go 语言中的相关功能如下:
目录相关:os.Mkdir, os.Rename, os.Remove 等。
文件相关:os.Open/Create/OpenFile, os.Rename, os.Remove 等。
虚拟内存支持
- 在物理内存不足的时候,操作系统会利用外存把一些很久没有使用的内存页的数据,保存到外存以进行淘汰
- 在 UNIX 系的操作系统中,操作系统为此分配了一个磁盘分区叫 swap 分区,专门用于内存页的保存和恢复
- 在 Windows 操作系统中则通过一个具有隐藏属性的 .swp 文件来实现
- 在缺页发生比较频繁时,内存页的数据经常性发生保存和恢复,这会发生大量的磁盘 IO 操作,非常占用 CPU 时间,所以可以非常明显感觉到计算机变得很慢
网友评论