系统架构师备考:操作系统基础 | 存储管理
一、存储系统层次结构金字塔模型计算机存储体系核心设计思想速度、容量、成本三者平衡上层作为下层的高速缓存层级越高速度越快、容量越小、成本越高。从上至下层级排序CPU寄存器 → Cache高速缓存 → 主存(内存) → 外存(磁盘/SSD)1.1 各层级核心特性寄存器CPU内置速度最快、容量最小用于存放指令操作数和中间结果硬件直接调度。CacheL1/L2/L3缓存SRAM材质硬件自动管理、对程序透明缓存热点数据解决CPU与主存速度差问题。主存内存DRAM材质CPU可直接寻址存放运行中程序与数据断电数据丢失。外存磁盘、SSD等容量大、速度慢、永久存储CPU无法直接访问需调入主存后使用。1.2 Cache三大核心考点地址映射方式直接映射固定位置存放结构简单、冲突率高全相联映射任意位置存放无冲突、成本高、速度慢组相联映射分组映射兼顾性能与成本工程主流替换算法FIFO、LRU、OPT、随机替换写策略写直达、写回、标记法二、内存管理四大分配方式内存管理核心目标高效利用内存空间、实现地址隔离、支持虚拟内存、减少内存碎片。2.1 分区存储管理早期核心原理是最早、最基础的内存管理方式将物理主存预先或按需划分为若干连续内存分区每个进程运行时单独占用一个完整分区进程地址空间与物理分区空间一一对应支持单一进程独占分区运行分为固定分区和动态分区两种模式。固定分区系统初始化时分区大小、数量、位置全部固定。优势是算法简单、系统开销小、运行稳定缺点是灵活性极差大进程无法适配小分区小进程占用大分区造成空间浪费产生大量内部碎片内存利用率极低。动态分区根据进程实际内存需求动态分配对应大小的连续分区无内部碎片内存空间利用率优于固定分区。进程频繁创建、销毁后空闲内存会被分割为零散小空间产生外部碎片需通过内存紧凑、空闲分区合并等方式优化额外增加系统算力开销。通俗类比将整块物理内存划分为若干大小不一或固定的独立房间每个房间仅允许一个进程入驻进程独占整个房间资源不与其他进程共享空间。核心特点分区为连续整块内存结构简单、硬件开销小、系统实现难度低固定分区灵活性差动态分区适配性更强但易产生内存碎片内存整体利用率偏低。地址结构逻辑地址与物理地址为一维连续地址无页号、段号拆分进程完整映射到物理分区地址转换简单无需复杂查表映射。适用场景早期单道/多道简单操作系统、功能固定的老旧嵌入式设备、实时简易控制系统不适合多任务、大内存、高并发系统。动态分区四大分配算法首次适应、循环首次适应、最佳适应、最坏适应各算法在检索效率、碎片控制上各有优劣需重点区分辨析。2.2 页式存储管理现代系统主流核心原理将进程逻辑地址空间、内存物理地址空间统一划分为固定大小的页面与页框通过页表完成逻辑地址→物理地址的精准映射。核心特点内存空间规整无外部碎片仅程序最后一页会产生少量内部碎片内存利用率极高。地址结构逻辑地址页号页内偏移物理地址物理块号页内偏移页内偏移无需转换映射效率高。适用场景通用操作系统、PC、服务器系统完美适配虚拟分页机制通用性极强。通俗类比将整块内存比作大书架均匀分割为若干大小统一的小格子页框将运行的程序拆分为同等大小的小块页面逐一存入空闲页框。进程(程序)中的地址我们称之为逻辑地址(虚地址)而内存中的地址我们称之为物理地址(实地址)每个页分为页号和页内地址页号用来和块号对应代表存储的位置大小可以代表页的数量页内地址代表的是存储的数据内容大小可以代表数据大小。2.3 段式存储管理贴合程序逻辑核心原理完全贴合程序开发逻辑按照程序逻辑模块自主分段分为代码段、数据段、栈段、常量段等各逻辑段长度不固定精准匹配程序运行需求。核心优势程序逻辑独立性强天然支持段共享、段权限保护适配模块化编程、多进程资源共享场景程序可维护性高。地址结构段号段内偏移。其中段内偏移不能超过该段号对应的段长否则越界错误而此地 址对应的真正内存地址应该是段号对应的基地址段内偏移。核心缺陷段长不统一进程释放内存后产生大量外部碎片需单独完成段地址映射转换开销高于页式存储内存利用率偏低。通俗类比摒弃统一格子按照文件类型分类收纳根据程序模块实际大小定制存储空间。2.4 段页式存储管理综合最优方案核心原理采用先分段、后分页的双层管理机制先按程序逻辑划分独立功能段再将不等长的逻辑段划分为固定大小的页面兼顾逻辑完整性与空间利用率。核心优点保留段式存储的逻辑分层、共享保护特性同时继承页式存储碎片少、利用率高的优势综合性能最佳。核心缺点需通过段表页表两次查表完成地址转换硬件结构复杂系统访问开销、算力开销更大。通俗类比结合段式、页式双重优势先按文件类型划分收纳大区逻辑段再将每个大区分割为统一小格子页面。2.5 四种方式核心对比表管理方式粒度碎片类型共享保护适用场景分区式整进程分配内/外部碎片不支持早期简单系统页式固定大小少量内部碎片弱支持通用操作系统段式可变逻辑段外部碎片强支持模块化程序、共享场景段页式段页分级极少碎片强支持高端服务器、大型系统三、虚拟内存机制3.1 基本原理虚拟内存依托局部性原理时间局部性、空间局部性将外存作为内存的延伸无需将整个程序载入内存仅加载运行所需页面实现小内存运行大程序。3.2 缺页中断当进程访问的页面不在主存时触发缺页中断系统从外存调入对应页面若内存已满则触发页面置换。缺页中断特点属于硬件中断、可嵌套、中断处理完成后返回断点继续执行。四、页面置换算法内存页框已满、需要调入新页面时淘汰旧页面的策略架构师考试高频计算题考点。4.1 四大经典算法1OPT 最优置换算法淘汰未来最久不被访问的页面理论最优、缺页率最低。仅用于算法对比无法工程实现需要预知未来访问序列。2FIFO 先进先出算法按照页面进入内存的先后顺序淘汰最早进入的页面。特点实现最简单存在Belady异常页框数增加缺页率反而升高。3LRU 最近最少使用算法⭐⭐⭐重点淘汰最近最长时间未被访问的页面贴合局部性原理缺页率接近OPT工程最常用。实现方式栈记录访问顺序、时钟算法近似实现。无Belady异常性能最优。4随机置换算法随机淘汰页面实现简单、性能不稳定仅用于低端嵌入式系统。4.2 算法优先级排序OPT(理论最优) LRU(工程最优) FIFO 随机置换五、高频考点易错点总结碎片区分页式无外部碎片、有内部碎片段式无内部碎片、有外部碎片。地址转换页式/段式均通过查表完成逻辑地址→物理地址转换页内/段内偏移量无需转换。虚拟内存前提必须具备分页机制、局部性原理、外存支持单分区无虚拟内存。Belady异常仅FIFO算法独有LRU、OPT均无此问题。Cache与主存Cache对用户透明虚拟内存对用户不透明、由操作系统管理。下期预告系统架构师备考操作系统基础 | 文件管理系统架构师备考操作系统基础 | 文件管理