版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OS操作系统原理·核心章节2026春季学期操作系统段式存储管理与虚存Segmentation&VirtualMemoryManagement从地址空间到物理内存的映射机制CHAPTER07OS段式存储与虚拟内存CONTENTS课程导航CourseNavigation·四幕递进,从分段到虚实01连续分配到分段存储从固定分区、动态分区的痛点出发,理解分段动机与逻辑地址空间的诞生02段式管理机制深入地址变换流程、段表结构、共享与保护策略,以及外部碎片的治理方案03虚拟内存与请求调页讲解按需调页原理、页面置换算法比较与工作集模型的局部性分析04段页式融合与现代实践探讨段页式结合方案、TLB加速机制,以及Linux/x86系统的真实内存管理实例CHAPTER01从连续分配到分段为什么需要段式存储管理OPERATINGSYSTEMSPROBLEM连续分配的三大困境ContiguousAllocation:ThreeCriticalDilemmas连续分配虽然实现简单,但其对物理内存连续性的硬性要求与程序逻辑结构的灵活性需求根本冲突,导致外部碎片、动态扩展困难和共享保护僵化三大顽疾,成为推动非连续分配机制发展的核心驱动力。外部碎片与内存浪费进程频繁装入撤出后,空闲区被切割成大量不连续小孔洞,总空闲量虽足却无法容纳稍大的新进程,内存利用率急剧下降。紧凑技术可合并碎片但需移动所有进程,开销巨大且必须暂停执行,在多道程序环境下几乎不可行。动态增长与共享障碍堆栈等数据结构运行时大小不确定,连续分配预留过多则浪费、预留过少则溢出,缺乏弹性伸缩能力。多进程共享库函数时要求各副本位于相同偏移,地址绑定死板,无法按逻辑单元独立设置读写执行权限。演进方向连续分配的三大困境共同指向一个根本矛盾:物理内存的连续性约束≠程序逻辑的模块化需求这直接催生了分段、分页及段页式等非连续内存分配方案的发展。OS操作系统原理SEGMENTATION分段:贴合程序员视角的内存组织Segmentation—MemoryOrganizationAlignedwithProgrammer'sView分段以程序的逻辑模块为基本单位分配和管理内存,使内存组织与程序员思维一致,天然支持按模块共享、按类型保护和按需动态伸缩,解决了连续分配语义缺失的根本缺陷。逻辑单元划分程序被划分为代码段、数据段、堆栈段等逻辑单元,每段独立编址、独立管理,反映程序内在结构而非物理约束。精确共享粒度共享粒度精确到单个库函数或数据表,无需整页对齐,不同进程可将同一共享段映射到各自地址空间的不同位置。段级保护属性保护属性绑定到段级别,代码段可设为只读可执行、数据段可读写、栈段可读写向下增长,越界访问由硬件自动拦截。动态伸缩能力段长可随运行动态调整,堆段扩容只需修改段表中该段的长度字段并检查相邻空闲区,不影响其他段的地址映射。段表结构示意图段表包含段号、段基址、段长字段每个逻辑段对应一条表项核心区别:分段让内存管理从「物理导向」转向「逻辑导向」,每个段拥有独立的基址和长度,共享可精确到函数库,保护可区分代码只读与数据可写。SEGMENTTABLE段表:分段管理的核心数据结构段表是连接逻辑段与物理内存的桥梁。段表项关键字段字段名位数示例作用说明段基址20–32位该段在物理内存中的起始地址段长16–20位该段允许的最大偏移量存在位1位1表示段已在内存保护位3–4位读写执行权限组合修改位1位段被写入后置1访问位1位段被访问后置1小结段表项以紧凑的位域编码承载了地址映射、边界检查、状态追踪和访问控制四重职责。OS操作系统原理ADDRESSTRANSLATION段式地址变换:从逻辑到物理的四步段式地址变换将逻辑地址的二维结构通过段表映射为一维物理地址。01拆分逻辑地址—逻辑地址被拆分为段号S和段内偏移d,段号用于索引段表。02第一重越界防护—段号与段表长度比较,若段号≥段表长度则触发异常。03存在位检查—段表项的存在位决定是否需要OS介入进行页面调入。04第二重越界防护—段内偏移与段长比较,若偏移≥段长则触发越界异常。图:段式地址变换流程图MECHANISMSEGMENTATION段级共享与保护的实现机制分段以逻辑模块为单位实施共享与保护。共享的实现方式段表项指向同一物理地址:多个进程段表中指向同一物理地址的段表项即实现共享。只读可执行共享段:共享段通常设为只读可执行,各进程可用不同段号引用。动态链接库映射:动态链接库在加载时将共享段映射到各进程地址空间。保护的多层防线保护位权限校验:段表项保护位定义读写执行权限组合,MMU每次访存自动校验。段长边界检查:段长边界检查防止偏移越界,提供硬件级内存隔离。特权级保护:特权级保护与段保护正交,内核通过DPL字段控制访问层级。DYNAMICLINKING动态链接与段的按需装入动态链接依托分段的逻辑单元边界和按需调入能力。01编译时生成间接引用桩编译时为外部符号生成间接引用桩而非直接地址,保留符号解析的延迟空间。02加载阶段主程序段优先装入加载阶段仅装入主程序段,共享库段驻留外存待命,节省内存与启动时间。03运行时缺段中断触发调入首次调用库函数时触发缺段中断,OS调入对应段并更新桩地址,完成绑定。SEGMENTATION外部碎片:分段的主要代价外部碎片是分段机制为语义灵活性付出的必然代价。碎片成因段的可变长度使分配后剩余的空闲区大小不一,形成大量无法利用的小孔洞。碎片演化碎片程度随运行时间非线性增长,最佳适应算法虽减少单次浪费但加速小碎片积累。对策与局限紧凑技术可一次性合并所有空闲区,但需移动全部已分配段,开销大。MEMORYALLOCATIONSEGMENT段分配算法的性能权衡段分配算法在搜索速度、碎片形态和大块保留三者间做取舍。三种段分配算法对比算法策略优点缺点适用场景首次适应选第一个足够大的空闲区搜索快,保留大块在尾部低地址碎片集中通用系统最佳适应选最小的足够空闲区单次浪费最小微小碎片多,搜索慢内存紧张最差适应选最大的空闲区剩余块仍可利用大块消耗快段大小均匀结论:没有绝对最优的分配算法,需根据系统负载特征与段大小分布选择合适策略。CHAPTER02虚拟内存的设计哲学让程序超越物理内存的限制Principle局部性原理:虚拟内存的理论基石局部性原理揭示了程序访存行为的高度集中性。时间局部性的表现1循环体内的指令和变量在短时间内被反复访问。2函数调用栈的栈顶区域在返回前持续活跃。3最近使用的页面大概率在近期再次使用。空间局部性的表现1数组和结构体的顺序访问使相邻内存位置被连续触及。2函数体内指令地址连续,取指操作天然具有空间局部性。3页面大小通常为4KB,一次缺页调入覆盖空间邻域。VIRTUALMEMORY虚拟内存:逻辑与物理解耦的抽象虚拟内存通过地址翻译和按需调入将逻辑地址空间与物理内存彻底解耦。1独立虚拟地址空间—每个进程拥有独立的虚拟地址空间,彼此隔离互不干扰。2地址总线决定容量—虚拟内存容量由地址总线宽度决定,远超任何实际物理配置。3按需调入机制—物理内存仅存放当前活跃页面,其余驻留外存交换区。MECHANISMDEMANDPAGING请求调页:虚拟内存的核心机制请求调页将内存分配从预分配转变为按需分配。1缺页异常检测MMU检测页表项存在位为0时触发缺页异常,CPU陷入内核态。2定位外存页面OS在外存交换区找到该页面的备份,准备回传至物理内存。3页面置换选择若无空闲帧,置换算法选出牺牲页,释放物理帧供新页使用。4磁盘I/O调入启动磁盘I/O将所需页面读入空闲帧,更新页表后恢复用户进程。按需分配页面仅在首次访问时调入,避免预加载浪费物理帧。置换回收LRU/CLOCK等算法选出牺牲页,保证帧资源复用。PAGINGVIRTUALMEMORY页表项:虚拟内存的元数据载体页表项以固定格式的紧凑位域承载了映射、状态、保护和置换四类信息。典型页表项字段解析字段作用硬件/软件使用方物理帧号指定页面对应的物理内存帧起始地址硬件地址转换存在位(P)1=在内存,0=在外存硬件异常生成修改位(D)1=页面被写过,换出时需回写OS换出决策访问位(R)1=页面被访问过OS置换参考保护位读/写/执行权限组合硬件权限校验软件可用位OS自定义用途OS内部管理小结:页表项字段设计体现了硬软协同原则。OS操作系统原理PAGEREPLACEMENTAlgorithmFIFO置换算法与Belady异常FIFO以最低实现成本换取了最差的置换质量。FIFOQueueVisualizationIN→P3队头P7P1P5队尾→EVICTP3最先调入,无论是否仍被访问,均被优先淘汰3FRAMES9缺页次数4FRAMES10缺页次数↑队列机制:FIFO维护一个调入顺序队列,置换时淘汰队头页面——即最早进入内存的那一帧。历史盲区:完全忽略页面访问历史,可能将循环体中持续使用的老页面换出,导致不必要的缺页中断。Belady异常:增加物理帧数后缺页率反而上升,证明FIFO不满足栈算法性质——更多资源不等于更好性能。非栈算法·无最优性保证·实际极少单独使用OS操作系统原理PAGEREPLACEMENT算法原理LRU:基于时间局部性的最优近似LRU以历史访问时间为代理逼近不可实现的OPT算法。维护访问时间戳或顺序链表LRU维护每个页面的最后访问时间戳或访问顺序链表。栈算法保证单调性作为栈算法,LRU保证增加帧数不会增加缺页次数。精确实现开销极高精确LRU每次访存需更新全局数据结构,开销极高。工程近似方案实际系统采用Clock、NFU等近似方案,开销降至O(1)。ALGORITHMPAGEREPLACEMENTClock算法:LRU的工程实用近似Clock算法以环形扫描加引用位清除的极简机制逼近LRU效果。1环形链表结构—所有驻留页面排成环形链表,钟针单向循环扫描。2引用位判定—R=1表示近期被访问过,清除R并跳过;R=0立即选为牺牲页。3性能边界—最坏情况下退化为FIFO,但平均情况远优于此下界。4增强型优化—增强型Clock额外考虑修改位M,减少不必要的磁盘写回。环形链表结构与钟针扫描过程示意MEMORYMANAGEMENTVIRTUALMEMORY工作集模型:预防抖动的理论框架工作集模型将进程的瞬时内存需求量化为时间窗口内的活跃页面集合。工作集定义工作集W(t,Δ)是进程在最近Δ时间内访问过的不同页面集合。抖动触发条件当分配帧数低于|W|时缺页率指数级上升,系统陷入抖动。动态帧分配策略OS定期采样估算各进程工作集大小,据此动态增减帧分配。窗口参数权衡窗口Δ需权衡灵敏性与稳定性,通常取经验值并自适应调整。CoreFormulaW(t,Δ)={p|pagepreferencedin(t−Δ,t]}帧分配≥|W|方可避免抖动;Δ过小遗漏活跃页,Δ过大引入陈旧页。OS操作系统原理VIRTUALMEMORYThrashing抖动现象及其系统级防治策略抖动是虚存系统在过载时的灾难性退化。01抖动的成因与症状总工作集超过物理内存时,每个进程都在频繁缺页,形成无效的I/O循环。CPU利用率随并发度增加反而下降,系统响应时间从毫秒级恶化到秒级。02多层次防治策略预防:基于工作集或页错误频率限制并发进程数,从源头避免过载。检测与恢复:监控缺页率和磁盘利用率,超阈值时挂起低优先级进程释放内存。ADDRESSTRANSLATIONSEGMENTEDPAGING段页式地址转换:三次访存的代价段页式以三次内存访问为代价换取了逻辑语义与物理效率的统一。逻辑地址拆分逻辑地址拆分为段号S、页号P和页内偏移d三段。三次访存查询无TLB时每次数据访问需三次内存查询,TLB命中可压缩至单次。共享与保护机制共享和保护在段级别实施,物理分配和置换在页级别实施。对齐约束段长必须是页大小的整数倍,段起始地址必须页对齐。THREEMEMORYACCESSESSTEP1查段表S→页表基址STEP2查页表P→物理块号STEP3访问数据块号+d→数据ArchitectureX86-64SEGMENTATIONx86-64架构中分段的演化与现状x86-64将分段从核心寻址机制降级为兼容性遗留。01BYPASS分段机制被实质性旁路64位长模式下CS/DS/ES/SS基址强制为0,分段机制被实质性旁路。02PRESERVEDFS/GS段寄存器保留能力FS/GS段寄存器保留非零基址能力,用于TLS和per-CPU数据。03PAGING四级页表取代两级页表支持48位虚拟地址空间和2MB/1GB大页,分页成为主寻址机制。04LEGACY分段的历史理解价值分段的历史价值在于理解x86保护模式的GDT/LDT结构。MEMORYMANAGEMENTLinux虚拟内存管理的工程实践Linux以VMA抽象替代硬件分段、以按需调页和COW优化常见工作负载。VMA与按需调页VMA链表描述地址空间——每个进程地址空间由VMA链表描述,是软件层面的逻辑段抽象。延迟物理分配——物理页面仅在首次访问时分配,进程启动瞬间内存占用极低。COW与内存回收写时复制机制——fork()时父子共享物理页并标记只读,写入时才复制。异步页面回收——kswapd后台监控内存水位,低于阈值时异步回收页面。VIRTUALMEMORYTLB:地址转换的高速缓存TLB将页表遍历的百周期代价压缩至个位数周期。命中加速:TLB以虚拟页号为键缓存页表项,命中时1–3周期返回物理帧号。多级结构:现代处理器采用多级TLB:L1分ITLB/DTLB小而快,L2统一大而慢。替换策略:TLB替换策略多用LRU或伪LRU,组相联结构平衡了冲突率和查找速度。一致性维护:TLB一致性由TLBShootdown机制维护,是多核系统的必要开销。TLB在MMU中的位置与多级结构示意ARCHITECTUREOS·PAGING多级页表:空间与时间的精妙权衡多级页表以额外的遍历层级为代价,将页表内存从固定巨量降至按需微量。x86-64四级页表结构示意(PGD→PUD→PMD→PTE)四级地址分割:x86-64将48位虚拟地址拆分为4个9位索引加12位页内偏移,每级索引定位一层页表项。按需分配:未使用的虚拟地址区间对应的中间页表不存在,页表总内存与实际使用量成正比。TLB缓解延迟:无TLB时四级遍历需四次内存访问,但TLB命中率高使平均转换延迟仍维持在个位数周期。大页优化:2MB/1GB大页可跳过中间页表层级,减少遍历深度与TLB压力。MEMORYOS·SEGMENTEDSTORAGE大页技术:降低TLB压力的利器大页以牺牲分配粒度为代价换取TLB容量的数量级提升。大页的收益与代价TLB覆盖倍增:2MB/1GB大页将TLB覆盖范围扩大512/262144倍,显著降低miss率。内部碎片代价:内部碎片随页大小线性增长,小对象密集分配时浪费严重。Linux中的大页实现静态HugePages:在启动时预留连续物理内存,适合数据库等已知需求的场景。THP透明大页:由khugepaged后台线程自动合并连续4KB页,对应用透明但可能引起延迟尖峰。ARCHITECTURECACHE·TLBCache与TLB的协同与冲突Cache与TLB的交互方式决定了地址转换与数据访问能否并行。三种寻址模式权衡VIVTCache延迟最低但有别名问题,PIPT无别名但串行化访问,VIPT取得工程最优平衡。VI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络安全教育课件图文完美版
- 合规转利润:降本增效全指南(2026)《GBT 39300-2020含铬电镀污泥处理处置方法》
- 标识设施安装实施方案
- 合规转利润:降本增效全指南(2026)《GBT 39183-2020消费品中亚硝胺迁移量的测定 气相色谱-串联质谱法》
- 2026年浙江省人教版初中数学下册概率统计综合测试题
- 合规转利润:降本增效全指南(2026)《GBT 39043-2020游乐设施风险评价 危险源》
- 合规转利润:降本增效全指南(2026)《GBT 38697-2020块菌(松露)鲜品质量等级规格》从合规成本到利润增长全案:避坑防控+降本增效+商业壁垒构建
- 运动康复概论与分类
- 《生产运作与生产率管理》-第九章
- JJF(晋) 178-2026新能源汽车检验用底盘测功机校准规范
- 2027届高考语文复习:厘清语法逻辑 解锁语用考题 课件
- 2026天津地铁1号线综合站务员招聘笔试备考试题及答案详解
- 培智数学16册全册教学设计
- 2026年中国广电5g试题及答案
- 电梯装修施工方案
- GB/T 47911-2026小微型企业安全生产标准化管理体系要求
- 自动化胰岛素输注系统临床应用护理专家共识(2026版)
- 2026年秋季小学数学苏教版六年级上册数学教学计划含教学进度表
- SYT 6696-2025《储油罐机械清洗作业规程》
- 2026年部编版新教材道德与法治小学三年级上册全册教案(含教学计划)
- 英语报刊选读第一章文体概述
评论
0/150
提交评论