




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9讲物理内存管理:连续内存分配第一页,共34页。内容摘要计算机体系结构/内存层次■连续内存分配■计算机体系结构内存层次操作系统的内存管理方式地址空间&地址生成■伙伴系统■第二页,共34页。I/O设备总线计算机体系结构算术逻辑单元(ALU)寄存器控制逻辑高速缓存存储管理单元(MMU)Intel®64andIA-32ArchitecturesSoftwareDeveloperManualsCPU内存第三页,共34页。内存层次处理器CPUL1缓存L2缓存高速缓存未命中内存缺页外存(虚拟内存)操作系统硬件(MMU)慢最快快较快访问速度3.6GHz1.3GHz5ms(查找时间)第四页,共34页。操作系统的内存管理
逻辑(虚拟)地址空间
物理地址空间MMU■抽象逻辑地址空间■保护独立地址空间■共享访问相同内存■虚拟化更大的地址空间P1进程Max
操作系统内核P2进程P3进程P4进程0
内存
外存第五页,共34页。操作系统的内存管理方式■操作系统中采用的内存管理方式重定位(relocation)分段(segmentation)分页(paging)虚拟存储(virtualmemory)·目前多数系统(如Linux)采用按需页式虚拟存储实现高度依赖硬件与计算机存储架构紧耦合MMU(内存管理单元):处理CPU存储访问请求的硬件■第六页,共34页。内存管理方式■操作系统中采用的内存管理方式重定位(relocation)分段(segmentation)分页(paging)虚拟内存(virtualmemory)·目前多数系统(如Linux)采用按需页式虚拟内存实现高度依赖硬件与计算机存储架构紧耦合MMU(内存管理单元):处理CPU存储访问请求的硬件■第七页,共34页。内容摘要计算机体系结构/内存层次■连续内存分配■地址空间的定义地址生成地址检查地址空间&地址生成■伙伴系统■第八页,共34页。地址空间定义起始地址0,直到MAXsys物理地址空间—硬件支持的地址空间■起始地址0,直到MAXprog逻辑地址空间—在CPU运行的进程看到的地址■但是地址(address)是从哪里来的?movl%eax,$0xfffa620e地址(address)是从哪里来的?movl%eax,$0xfffa620eMAXprog进程P0MAXsys0第九页,共34页。逻辑地址生成progP::foo()::endPP::push...incSP,xjmp_foo:foo:...:push...incSP,4jmp75:...075编译汇编链接程序加载(重定位):::jmp175:...1750100函数库:::jmp1175:...11001175函数库1000第十页,共34页。地址生成时机和限制■编译时假设起始地址已知如果起始地址改变,必须重新编译■加载时如编译时起始位置未知,编译器需生成可重定位的代码(relocatablecode)
加载时,生成绝对地址■执行时执行时代码可移动需地址转换(映射)硬件支持第十一页,共34页。地址生成过程■CPUALU:需要逻辑地址的内存内容MMU:进行逻辑地址和物理地址的转换CPU控制逻辑:给总线发送物理地址请求■内存发送物理地址的内容给CPU或接收CPU数据到物理地址建立逻辑地址LA和物理地址PA的映射■操作系统物理地址生成总线内存ALU寄存器高速缓存MMU控制器I/O设备movl%eax,$0xfffa620e地址映射逻辑地址<>物理地址CPU第十二页,共34页。地址检查movl%eax,$0xfffa620e0MAXsys10001500进程P的物理地址空间0MAXprog段基址寄存器逻辑地址段长度寄存器内存异常物理地址指令yesno5001000进程P逻辑地址空间CPU操作系统设置起始(base)和最大(limit)逻辑地址空间≤+指令第十三页,共34页。内存管理方式■操作系统中采用的内存管理方式重定位(relocation)分段(segmentation)分页(paging)虚拟内存(virtualmemory)·目前多数系统(如Linux)采用按需页式虚拟内存实现高度依赖硬件与计算机存储架构紧耦合MMU(内存管理单元):处理CPU存储访问请求的硬件■第十四页,共34页。计算机体系结构/内存层次地址空间&地址生成连续内存分配内存碎片动态分配·最先匹配·最佳匹配·最差匹配碎片整理内容摘要■■■伙伴系统■第十五页,共34页。进程P2地址空间连续内存分配和内存碎片■连续内存分配给进程分配一块不小于指定大小的连续的物理内存区域■内存碎片空闲内存不能被利用■外部碎片分配单元之间的未被使用内存■内部碎片分配单元内部的未被使用内存取决于分配单元大小是否要取整进程P1地址空间进程P3地址空间MAX0代码数据堆栈第十六页,共34页。进程P5进程P3进程P6进程P4进程P2进程P1连续内存分配:动态分区分配■动态分区分配当程序被加载执行时,分配一个进程指定大小可变的分区(块、内存块)分区的地址是连续的所有进程的已分配分区■操作系统需要维护的数据结构空闲分区(Empty-blocks)■动态分区分配策略最先匹配(First-fit)最佳匹配(Best-fit)最差匹配(Worst-fit)MAX0第十七页,共34页。2Kbytes500bytes思路:分配n个字节,使用第一个可用的空间比n大的空闲块。示例:分配400字节,使用第一个1KB的空闲块。为空闲块500bytes2Kbytes最先匹配(FirstFitAllocation)策略1Kbytes第十八页,共34页。最先匹配(FirstFitAllocation)策略分配过程时,搜索一个合适的分区释放分区时,检查是否可与临近的空闲分区合并空闲分区列表按地址顺序排序■
原理&实现简单在高地址空间有大块的空闲分区■
优点■
缺点外部碎片分配大块时较慢第十九页,共34页。2Kbytes1Kbytes500bytes1Kbytes2Kbytes最佳匹配(BestFitAllocation)策略思路:分配n字节分区时,查找并使用不小于n的最小空闲分区示例:分配400字节,使用第3个空闲块(最小)为空闲块第二十页,共34页。分配时,查找一个合适的分区·可避免大的空闲分区被拆分·可减小外部碎片的大小释放时,查找并且合并临近的空闲分区(如果找到)·相对简单空闲分区列表按照大小排序■
原理&实现最佳匹配(BestFitAllocation)策略大部分分配的尺寸较小时,效果很好■
优点■
缺点外部碎片释放分区较慢容易产生很多无用的小碎片第二十一页,共34页。1Kbytes最差匹配(WorstFitAllocation)策略思路:分配n字节,使用尺寸不小于n的最大空闲分区示例:分配400字节,使用第2个空闲块(最大)500bytes1Kbytes2Kbytes为空闲块第二十二页,共34页。最差匹配(WorstFitAllocation)策略■
原理&实现空闲分区列表按由大到小排序分配时,选最大的分区释放时,检查是否可与临近的空闲分区合并,进行可能的合并,并调整空闲分区列表顺序避免出现太多的小碎片中等大小的分配较多时,效果最好■
优点■
缺点释放分区较慢外部碎片容易破坏大的空闲分区,因此后续难以分配大的分区第二十三页,共34页。计算机体系结构/内存层次地址空间&地址生成连续内存分配内存碎片动态分配碎片整理·紧凑(compaction)·分区对换(s)内容摘要■■■伙伴系统■第二十四页,共34页。进程P4进程P3进程P2进程P1碎片整理:紧凑(compaction)MAX0■
碎片紧凑通过移动分配给进程的内存分区,以合并外部碎片碎片紧凑的条件·所有的应用程序可动态重定位■
碎片整理通过调整进程占用的分区位置来减少或避免分区碎片需要解决的问题·什么时候移动?·开销第二十五页,共34页。对换等待队列对换等待就绪队列等待队列等待运行就绪P4P3P2P1碎片整理:分区对换(Sin/out)
通过抢占并回收处于等待状态进程的分区,以
增大可用内存空间OS外存内存P1P2P3P4第二十六页,共34页。碎片整理:分区对换(Sin/out)操作系统内核用户地址空间进程p1进程p2①
换入②换出内存外存■需要解决的问题
交换哪个(些)程序?第二十七页,共34页。伙伴系统伙伴系统的实现ucore中的伙伴系统计算机体系结构/内存层次地址空间&地址生成连续内存分配内容摘要■■■■第二十八页,共34页。伙伴系统(BuddySystem)■整个可分配的分区大小2U■需要的分区大小为2U-1<s≤2U时,把整个块分配
给该进程;如s≤2i-1,将大小为2i的当前空闲分区划分成两个大小为2i-1的空闲分区重复划分过程,直到2i-1<s≤2i,并把一个空闲分区分配给该进程第二十九页,共34页。伙伴系统的实现■数据结构空闲块按大小和起始地址组织成二维数组■分配过程由小到大在空闲块数组中找最小的可用空闲块如空闲块过大,对可用空闲块进行二等分,直到得到合适的可用空闲块初始状态:只有一个大小为2U的空闲块第三十页,共34页。伙伴系统中的内存分配Request100K1Mbyteblock1M512K256K128KA=128KRequest240KA=128K128K512K256KB=256KRequest64KA=128KB=256K512K128KC=64K64KRequest256KA=128KC=64K64KB=256K512KD=256K256KReleaseBA=128KC=64K64KD=256K256KB=256K256KReleaseAC=64K64K256KD=256K256KA=128K128KRequest75KC=64K64K256KD=256K256KA=128K128KE=128KReleaseCC=64K64K256KD=256K256KA=128K128KE=128K128KReleaseEC=64K64K256KD=256K256KA=128K128KE=128K128K256K512KReleaseD1MC=64K64K256KD=256K256KA=128K128KE=128K128K256K512K512K1MRequest100KRequest240KRequest64KRequest256KReleaseBReleaseARequest75KReleaseCReleaseEReleaseD第三十一页,共34页。伙伴系统的实现■释放过程把释放的块放入空闲块数组合并满足合并条件的空闲块■合并条件大小相同2i128K1M512K64K256KC=64K256K64K256KD=256KA=128K地址相邻低地址空闲块起始地址为2i+1的位数第三十二页,共
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国自动化输送设备行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 中国聚丁二烯橡胶行业发展现状及投资潜力预测报告
- 2025年中国电网信息化市场发展前景预测及投资战略咨询报告
- 中国通信工程施工行业市场深度分析及投资战略研究报告
- 中国出轴结合件行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 净水剂行业深度研究分析报告(2024-2030版)
- 中国无线网卡行业发展监测及市场发展潜力预测报告
- “小小梦想家”儿童创意教育商业计划书
- 中国江西省生活垃圾清运和处理市场调查研究及行业投资潜力预测报告
- 沥青混凝土培训课件
- 排污许可证申请流程
- 药具培训培训试题及答案
- 重庆市大渡口区2023-2024学年四年级下学期数学期末测试卷(含答案)
- 2025年高考全国一卷写作范文4篇
- 2025年广西公需科目答案03
- 2025届江苏省徐州市名校七下数学期末达标检测试题含解析
- 2025年山东夏季高中学业水平合格考模拟生物试卷(含答案)
- 大连海事大学育鲲轮电机员培训课件详解
- GB/T 45577-2025数据安全技术数据安全风险评估方法
- IgG4肾病的诊断和治疗
- 中国啤酒篮行业市场发展前景及发展趋势与投资战略研究报告2025-2028版
评论
0/150
提交评论