一、存储系统
在操作系统中,存储系统(Storage System) 是计算机系统的核心组成部分之一,它负责数据的存储、组织、管理和访问。
它不仅包括物理设备(如内存、硬盘),还包括操作系统提供的逻辑抽象(如文件系统、缓存、虚拟内存等)。
存储系统通常划分为以下层次:
在存储层次中,层次越高(越靠近CPU),存储介质的访问速度越快,价格也越高,相对所配置的存储容量也越小。
操作系统需要协调这些存储层次,在速度和成本之间做平衡。
二、存储系统的主要组成
组成部分 | 描述 |
---|---|
主存(RAM) | 运行时存储程序和数据,是 CPU 的直接工作区 |
磁盘(Disk) | 永久性数据存储设备,如 HDD 、SSD |
文件系统 | 管理磁盘数据的结构,如 FAT32 、NTFS 、ext4 |
缓存(Cache) | 提高内存/磁盘访问速度的高速缓冲区 |
虚拟内存(VM) | 使用磁盘空间模拟主存,支持更大的程序运行 |
页表与地址映射 | 实现虚拟地址 → 物理地址的转换 |
三、主存(RAM)管理
在操作系统中,主存(RAM)管理是核心功能之一,它决定了多个程序如何高效、安全地共享内存资源。主存管理直接关系到系统的性能、稳定性和多任务处理能力。
主存可被视为一个线性字节数组,但在 OS 中常分为如下部分:
+-----------------------+
| 操作系统核心(内核区)|
+-----------------------+
| 应用程序1 |
+-----------------------+
| 应用程序2 |
+-----------------------+
| 空闲空间(碎片) |
+-----------------------+
主存(RAM)管理的目标:
目标 | 描述 |
---|---|
多道程序支持 | 允许多个程序并发驻留内存 |
内存保护 | 防止程序互相干扰 |
内存利用率高 | 减少内存碎片,提高空间利用率 |
快速访问 | 支持快速的地址转换和访问 |
虚拟内存支持 | 程序可使用比物理内存更大的空间 |
操作系统需要负责对主存进行分配与回收,主要策略包括:
1. 连续分配管理
- 将内存分成若干连续块;
- 程序一次性分配一整块。
常见算法:
算法 | 说明 |
---|---|
首次适应 | 从头开始找第一个能装下的空块 |
最佳适应 | 找最小但足够的空块(减少浪费) |
最差适应 | 找最大的空块(减少碎片) |
缺点:易产生外部碎片。
2. 分页管理(Paging)
- 将物理内存划分为固定大小的页帧(Page Frame);
- 将程序划分为同样大小的页(Page);
- 使用页表记录虚拟页到物理页的映射。
虚拟地址结构:
虚拟地址 = 页号 + 页内偏移
优点:
- 消除外部碎片;
- 支持虚拟内存。
3. 分段管理(Segmentation)
- 把程序分成逻辑段:如代码段、数据段、栈段;
- 每段独立映射到内存。
优点:
- 支持逻辑结构清晰的内存管理;
- 易于保护和共享。
4. 段页式管理(Segmentation + Paging)
- 将每个段再分页;
- 结合分页的空间利用率和分段的逻辑清晰性。
内存碎片问题:
类型 | 说明 |
---|---|
外部碎片 | 连续分配造成的内存空洞 |
内部碎片 | 分配的内存比程序实际使用大 |
四、虚拟内存(Virtual Memory)
虚拟内存是操作系统提供的一种抽象,允许程序使用比实际内存更大的地址空间。
1. 实现机制
- 将进程虚拟地址空间划分为页(Page);
- 利用页表(Page Table)记录虚拟页与物理页的映射;
- 不常用页存入磁盘(Swap 区)。
2. 页置换算法(换出旧页)
算法 | 描述 |
---|---|
FIFO | 最早进入内存的页先被换出 |
LRU | 最近最少使用的页被换出 |
Clock | 改进型的近似 LRU 算法 |
Optimal | 理论最优(实际难以实现) |
五、缓存机制(Cache)
缓存是位于处理器和主存之间的高速存储区域,用于缓冲频繁访问的数据。
1. 目标
- 降低访问主存的频率(主存速度较慢);
- 提高 CPU 的执行效率。
2. 缓存的层级结构(多级缓存)
现代计算机通常采用分级缓存结构:
缓存级别 | 位置 | 容量 | 速度 | 特点 |
---|---|---|---|---|
L1 Cache | CPU 内部 | 最小(32~64KB) | 非常快 | 每个核心私有,分数据/指令 |
L2 Cache | CPU 内部或共享 | 中等(256KB~1MB) | 很快 | 常为每核心独享 |
L3 Cache | 多核心共享 | 较大(2~32MB) | 快 | 多核心共享资源 |
主存(RAM) | 外部 | GB级别 | 较慢 | 所有程序共享 |
通过缓存机制,数据可以提前预取、减少磁盘访问次数、提高性能。
3. 缓存命中与未命中
- 命中(Hit):请求的数据已在 Cache 中,直接返回;
- 未命中(Miss):数据不在 Cache,需要从主存读取,代价较大。
命中率 = 命中次数 / 总访问次数
命中率越高,CPU 性能越好。
六、磁盘管理
操作系统需要对磁盘进行组织和访问控制,包含以下内容:
1. 磁盘结构管理
- 使用逻辑块(block) 组织物理扇区;
- 每个磁盘通常有:MBR、分区表、数据区域等。
2. 磁盘调度算法
优化磁盘访问时间:
算法 | 描述 |
---|---|
FCFS | 先来先服务 |
SSTF | 最短寻道时间优先 |
SCAN | 磁头来回扫描 |
C-SCAN | 只单向扫描,回头不服务 |
七、文件系统(File System)
文件系统是操作系统在磁盘上组织、命名、存储、保护和访问数据的机制。
1. 功能
- 文件和目录管理;
- 权限控制(读/写/执行);
- 空间分配与释放;
- 目录层级结构;
- 元数据维护(文件名、大小、时间等)。
2. 常见文件系统类型
系统 | 适用平台 | 特点 |
---|---|---|
FAT32 | Windows | 简单,兼容性好,但不支持大文件 |
NTFS | Windows | 支持权限、压缩、大文件 |
ext3/ext4 | Linux | 稳定、支持日志 |
APFS | macOS | Apple 专用,支持快照 |
八、存储保护与安全
机制 | 描述 |
---|---|
内存保护(Memory Protection) | 防止一个进程访问另一个进程的内存 |
文件权限(如 chmod) | 控制用户对文件的访问 |
虚拟地址隔离 | 每个进程独立地址空间 |
加密文件系统(EFS) | 对文件内容进行加密 |
九、存储系统面临的挑战
挑战 | 描述 |
---|---|
性能瓶颈 | 磁盘和内存访问速度差距大 |
一致性问题 | 断电或异常退出可能造成文件系统损坏 |
空间碎片化 | 文件不断增删导致磁盘空洞 |
访问延迟 | 特别是传统机械磁盘 |
安全性与隐私 | 数据可能被恶意软件窃取 |