版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第9 9讲讲 物理内存管理:物理内存管理:连续内存分配连续内存分配授课教师:马立平授课教师:马立平联系方式:联系方式:Southwest University of Science and Technology内容摘要计算机体系结构/内存层次连续内存分配计算机体系结构内存层次操作系统的内存管理方式地址空间 & 地址生成伙伴系统Southwest University of Science and Technology I/O设备总线计算机体系结构算术逻辑单元(ALU)寄存器控制逻辑高速缓存存储管理单元(MMU)Intel 64 and IA-32 Architectures Soft
2、ware Developer ManualsCPU内存Southwest University of Science and Technology 内存层次处理器CPUL1缓存L2缓存高速缓存未命中内存缺页外存(虚拟内存)操作系统硬件(MMU)慢最快快较快访问速度3.6GHz1.3GHz5ms(查找时间)Southwest University of Science and Technology 操作系统的内存管理 逻辑(虚拟)地址空间 物理地址空间MMU抽象逻辑地址空间保护独立地址空间共享访问相同内存虚拟化更大的地址空间P1进程Max 操作系统内核 P2进程 P3进程 P4进程0 内存 外存
3、Southwest University of Science and Technology 操作系统的内存管理方式操作系统中采用的内存管理方式重定位(relocation)分段(segmentation)分页(paging)虚拟存储(virtual memory) 目前多数系统(如 Linux)采用按需页式虚拟存储实现高度依赖硬件与计算机存储架构紧耦合MMU (内存管理单元): 处理CPU存储访问请求的硬件Southwest University of Science and Technology 内存管理方式操作系统中采用的内存管理方式重定位(relocation)分段(segmentat
4、ion)分页(paging)虚拟内存(virtual memory) 目前多数系统(如 Linux)采用按需页式虚拟内存实现高度依赖硬件与计算机存储架构紧耦合MMU (内存管理单元): 处理CPU存储访问请求的硬件Southwest University of Science and Technology 内容摘要计算机体系结构/内存层次连续内存分配地址空间的定义地址生成地址检查地址空间 & 地址生成伙伴系统Southwest University of Science and Technology 地址空间定义起始地址0,直到 MAXsys物理地址空间 硬件支持的地址空间起始地址0,
5、 直到 MAXprog逻辑地址空间 在CPU运行的进程看到的地址但是地址(address)是从哪里来的?movl %eax, $0 xfffa620e地址(address)是从哪里来的?movl %eax, $0 xfffa620e进程PMAXsys0Southwest University of Science and Technology 逻辑地址生成prog P : : foo() : :end PP: :push .inc SP, xjmp _foo :foo: . :push .inc SP, 4jmp 75 : .075编译汇编链接程序加载(重定位) : : :jmp 175 :
6、.1750100函数库 : : :jmp 1175 : .11001175函数库1000Southwest University of Science and Technology 地址生成时机和限制编译时假设起始地址已知如果起始地址改变,必须重新编译加载时如编译时起始位置未知,编译器需生成可重定位的代码(relocatable code) 加载时,生成绝对地址执行时执行时代码可移动需地址转换(映射)硬件支持Southwest University of Science and Technology 地址生成过程CPUALU:需要逻辑地址的内存内容MMU:进行逻辑地址和物理地址的转换CPU控制
7、逻辑:给总线发送物理地址请求内存发送物理地址的内容给CPU或接收CPU数据到物理地址建立逻辑地址LA和物理地址PA的映射操作系统物理地址生成总线内存ALU寄存器高速缓存MMU控制器I/O设备movl %eax, $0 xfffa620e地址映射逻辑地址物理地址 CPUSouthwest University of Science and Technology 地址检查movl %eax, $0 xfffa620e0MAXsys10001500进程P的物理地址空间0MAXprog段基址寄存器逻辑地址段长度寄存器内存异常物理地址指令yesno5001000进程P逻辑地址空间CPU操作系统设置起始(
8、base)和最大(limit)逻辑地址空间+指令Southwest University of Science and Technology 内存管理方式操作系统中采用的内存管理方式重定位(relocation)分段(segmentation)分页(paging)虚拟内存(virtual memory) 目前多数系统(如 Linux)采用按需页式虚拟内存实现高度依赖硬件与计算机存储架构紧耦合MMU (内存管理单元): 处理CPU存储访问请求的硬件Southwest University of Science and Technology 计算机体系结构/内存层次地址空间 & 地址生成连
9、续内存分配 内存碎片 动态分配 最先匹配 最佳匹配 最差匹配 碎片整理内容摘要伙伴系统Southwest University of Science and Technology 进程P2地址空间连续内存分配和内存碎片连续内存分配给进程分配一块不小于指定大小的连续的物理内存区域内存碎片空闲内存不能被利用外部碎片分配单元之间的未被使用内存内部碎片 分配单元内部的未被使用内存 取决于分配单元大小是否要取整进程P1地址空间进程P3地址空间MAX0代码数据堆栈Southwest University of Science and Technology 进程P5进程P3进程P6进程P4进程P2进程P1连
10、续内存分配:动态分区分配动态分区分配当程序被加载执行时,分配一个进程指定大小可变的分区(块、内存块) 分区的地址是连续的所有进程的已分配分区操作系统需要维护的数据结构空闲分区(Empty-blocks)动态分区分配策略最先匹配(First-fit)最佳匹配(Best-fit)最差匹配(Worst-fit)MAX0Southwest University of Science and Technology 2K bytes500 bytes思路:分配n个字节,使用第一个可用的空间比n大的空闲块。 示例:分配400字节,使用第一个1KB的空闲块。为空闲块500 bytes2K bytes最先匹配(
11、First Fit Allocation)策略1K bytesSouthwest University of Science and Technology 最先匹配(First Fit Allocation)策略分配过程时,搜索一个合适的分区释放分区时,检查是否可与临近的空闲分区合并空闲分区列表按地址顺序排序 原理 & 实现简单在高地址空间有大块的空闲分区 优点 缺点外部碎片分配大块时较慢Southwest University of Science and Technology 2K bytes1K bytes500 bytes1K bytes2K bytes最佳匹配(Best Fi
12、t Allocation)策略思路:分配n字节分区时, 查找并使用不小于n的最小空闲分区示例:分配400字节, 使用第3个空闲块(最小)为空闲块Southwest University of Science and Technology 分配时,查找一个合适的分区 可避免大的空闲分区被拆分 可减小外部碎片的大小释放时,查找并且合并临近的空闲分区(如果找到) 相对简单空闲分区列表按照大小排序 原理 & 实现最佳匹配(Best Fit Allocation)策略大部分分配的尺寸较小时,效果很好 优点 缺点外部碎片释放分区较慢容易产生很多无用的小碎片Southwest University
13、of Science and Technology 1K bytes最差匹配(Worst Fit Allocation)策略思路:分配n字节,使用尺寸不小于n的最大空闲分区示例:分配400字节,使用第2个空闲块(最大)500 bytes1K bytes2K bytes为空闲块Southwest University of Science and Technology 最差匹配(Worst Fit Allocation)策略 原理 & 实现空闲分区列表按由大到小排序分配时,选最大的分区释放时,检查是否可与临近的空闲分区合并,进行可能的合并,并调整空闲分区列表顺序避免出现太多的小碎片中等大
14、小的分配较多时,效果最好 优点 缺点释放分区较慢外部碎片容易破坏大的空闲分区,因此后续难以分配大的分区Southwest University of Science and Technology 计算机体系结构/内存层次地址空间 & 地址生成连续内存分配 内存碎片 动态分配 碎片整理 紧凑(compaction) 分区对换(swap in/out)内容摘要伙伴系统Southwest University of Science and Technology 进程P4进程P3进程P2进程P1碎片整理:紧凑(compaction)MAX0 碎片紧凑通过移动分配给进程的内存分区,以合并外部碎片
15、碎片紧凑的条件 所有的应用程序可动态重定位 碎片整理通过调整进程占用的分区位置来减少或避免分区碎片需要解决的问题 什么时候移动? 开销Southwest University of Science and Technology 对换等待队列对换等待就绪队列等待队列等待运行就绪P4 P3P2P1碎片整理:分区对换(Swapping in/out) 通过抢占并回收处于等待状态进程的分区,以 增大可用内存空间 OS外存内存P1P2P3P4Southwest University of Science and Technology 碎片整理:分区对换(Swapping in/out)操作系统内核用户地
16、址空间进程p1进程p2 换入 换出内存外存 需要解决的问题 交换哪个(些)程序?Southwest University of Science and Technology 伙伴系统 伙伴系统的实现 ucore中的伙伴系统计算机体系结构/内存层次地址空间 & 地址生成连续内存分配内容摘要Southwest University of Science and Technology 伙伴系统(Buddy System) 整个可分配的分区大小2U 需要的分区大小为2U-1 s 2U 时,把整个块分配 给该进程;如s 2i1,将大小为2i 的当前空闲分区划分成两个大小为2i1 的空闲分区重复划
17、分过程,直到2i-1 s 2i,并把一个空闲分区分配给该进程Southwest University of Science and Technology 伙伴系统的实现 数据结构空闲块按大小和起始地址组织成二维数组 分配过程由小到大在空闲块数组中找最小的可用空闲块如空闲块过大,对可用空闲块进行二等分,直到得到合适的可用空闲块初始状态:只有一个大小为2U的空闲块Southwest University of Science and Technology 伙伴系统中的内存分配Request 100K1 Mbyte block1M512K256K128KA=128KRequest 240KA=128
18、K128K512K256KB=256KRequest 64KA=128KB=256K512K128KC=64K64KRequest 256KA=128KC=64K64KB=256K512KD=256K256KRelease BA=128KC=64K64KD=256K256KB=256K256KRelease AC=64K64K256KD=256K256KA=128K128KRequest 75KC=64K64K256KD=256K256KA=128K128KE=128KRelease CC=64K64K256KD=256K256KA=128K128KE=128K128KRelease EC=6
19、4K64K256KD=256K256KA=128K128KE=128K128K256K512KRelease D1MC=64K64K256KD=256K256KA=128K128KE=128K128K256K512K512K1MRequest 100KRequest 240KRequest 64KRequest 256KRelease BRelease ARequest 75KRelease CRelease ERelease DSouthwest University of Science and Technology 伙伴系统的实现 释放过程把释放的块放入空闲块数组合并满足合并条件的空闲块
20、 合并条件大小相同2i/wiki/Buddy_memory_allocation128K1M512K64K256KC=64K256K64K256KD=256KA=128K地址相邻低地址空闲块起始地址为2i1的位数Southwest University of Science and Technology ucore中的物理内存管理struct pmm_manager const char *name;void (*init)(void);void (*init_memmap)(struct Page *base, size_t n);struct Page *(*alloc_pages)(size_t order);void (*free_pages)(struct Page *base, size_t n);size_t (*nr_free_pages)(void);void (*check)(void);struct pmm_manager const char *name;void (*init)(void);void (*init_memmap)(struct Page *base, size_t n);struct Page *(*alloc_pages)(size_t order)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外研八下英语Unit 6 Developing ideas《合作探究三》课件
- 2026年拉卡拉借款合同(1篇)
- 2025 高中信息技术数据结构在智能安防入侵检测中的应用课件
- 进出口贸易公司成立项目可行性研究报告
- 信息传递的生化基础
- 2026届河南高三五市一模质量监测生物+答案
- 四川省德阳市高中2023级第二次诊断考试语文(含答案)
- 社区春季防病安全课件
- 2025 高中信息技术数据与计算之数据仓库的多维数据立方体切块操作课件
- 2026年新能源装机超过电网最大负荷对储能刚性需求分析
- 2026年吉安职业技术学院单招综合素质考试题库含答案详解
- 2026年安徽林业职业技术学院单招综合素质考试题库含答案解析
- 薄抹灰施工方案
- 2026年餐饮服务标准操作流程培训
- 2026年南京交通职业技术学院单招职业技能考试题库及答案详解(基础+提升)
- 卫生院防雷安全生产制度
- 新概念英语青少版入门级A-unit1-hello课件
- 来访车辆登记表
- DB32∕T 3916-2020 建筑地基基础检测规程
- 更换风口操作规程
- SMED快速换模教程
评论
0/150
提交评论