收藏 分享(赏)

第9讲-物理内存管理:连续内存分配.ppt

上传人:weiwoduzun 文档编号:4193359 上传时间:2018-12-14 格式:PPT 页数:34 大小:2.57MB
下载 相关 举报
第9讲-物理内存管理:连续内存分配.ppt_第1页
第1页 / 共34页
第9讲-物理内存管理:连续内存分配.ppt_第2页
第2页 / 共34页
第9讲-物理内存管理:连续内存分配.ppt_第3页
第3页 / 共34页
第9讲-物理内存管理:连续内存分配.ppt_第4页
第4页 / 共34页
第9讲-物理内存管理:连续内存分配.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、,第9讲 物理内存管理: 连续内存分配,授课教师:马立平 联系方式:,Southwest University of Science and Technology,内容摘要,计算机体系结构/内存层次,连续内存分配,计算机体系结构,内存层次,操作系统的内存管理方式,地址空间 & 地址生成,伙伴系统,Southwest University of Science and Technology,I/O设备,总线,计算机体系结构,Intel 64 and IA-32 Architectures Software Developer Manuals,CPU,内存,Southwest University

2、 of Science and Technology,内存层次,高速缓存未命中,内存,缺页,外存(虚拟内存),操作系统,硬件 (MMU),Southwest University of Science and Technology,操作系统的内存管理,Southwest University of Science and Technology,操作系统的内存管理方式,分段(segmentation),分页(paging),Southwest University of Science and Technology,内存管理方式,操作系统中采用的内存管理方式,重定位(relocation),分段

3、(segmentation),分页(paging),虚拟内存(virtual memory), 目前多数系统(如 Linux)采用按需页式虚拟内存,实现高度依赖硬件,与计算机存储架构紧耦合,MMU (内存管理单元): 处理CPU存储访问请求的硬件,Southwest University of Science and Technology,内容摘要,计算机体系结构/内存层次,连续内存分配,地址空间的定义,地址生成,地址检查,地址空间 & 地址生成,伙伴系统,Southwest University of Science and Technology,地址空间定义,Southwest Unive

4、rsity of Science and Technology,逻辑地址生成,prog P:foo(): end P,P: push . inc SP, x jmp _foo: foo: .,编译,汇编,链接,程序加载,(重定位),Southwest University of Science and Technology,地址生成时机和限制,Southwest University of Science and Technology,地址生成过程,ALU:需要逻辑地址的内存内容,MMU:进行逻辑地址和物理地 址的转换,CPU控制逻辑:给总线发送物理 地址请求,物理地址生成,总线,内存,I/O

5、设备,movl %eax, $0xfffa620e,地址映射 逻辑地址物理地址,CPU,Southwest University of Science and Technology,地址检查,movl %eax, $0xfffa620e,0,MAXsys,1000,1500,进程 P的 物理 地址 空间,0,MAXprog,段基址 寄存器,逻辑 地址,段长度 寄存器,内存异常,物理 地址,指令,yes,no,500,1000,进程P 逻辑地址空间,CPU,操作系统 设置起始(base)和最大(limit)逻辑地址空间,+,Southwest University of Science and

6、Technology,内存管理方式,操作系统中采用的内存管理方式,重定位(relocation),分段(segmentation),分页(paging),虚拟内存(virtual memory), 目前多数系统(如 Linux)采用按需页式虚拟内存,实现高度依赖硬件,与计算机存储架构紧耦合,MMU (内存管理单元): 处理CPU存储访问请求的硬件,Southwest University of Science and Technology,计算机体系结构/内存层次 地址空间 & 地址生成 连续内存分配内存碎片动态分配 最先匹配 最佳匹配 最差匹配碎片整理,内容摘要,伙伴系统,Southwest

7、 University of Science and Technology,连续内存分配和内存碎片,Southwest University of Science and Technology,连续内存分配:动态分区分配,最先匹配(First-fit),最佳匹配(Best-fit),最差匹配(Worst-fit),Southwest University of Science and Technology,思路: 分配n个字节,使用第一个可用的空间比n大的空闲块。,示例: 分配400字节,使用第一个1KB的空闲块。,为空闲块,500 bytes,2K bytes,最先匹配(First Fit

8、Allocation)策略,1K bytes,Southwest University of Science and Technology,最先匹配(First Fit Allocation)策略,分配过程时,搜索一个合适的分区,释放分区时,检查是否可与临近的空闲分区合并,Southwest University of Science and Technology,500 bytes,1K bytes,2K bytes,最佳匹配(Best Fit Allocation)策略,思路: 分配n字节分区时, 查找并使用不小于n的最小空闲分区,示例: 分配400字节, 使用第3个空闲块(最小),为空闲

9、块,Southwest University of Science and Technology,分配时,查找一个合适的分区, 可避免大的空闲分区被拆分, 可减小外部碎片的大小,释放时,查找并且合并临近的空闲分区(如果找到), 相对简单,最佳匹配(Best Fit Allocation)策略,Southwest University of Science and Technology,1K bytes,最差匹配(Worst Fit Allocation)策略,思路: 分配n字节,使用尺寸不小于n的最大空闲分区,示例: 分配400字节,使用第2个空闲块(最大),500 bytes,1K byte

10、s,2K bytes,为空闲块,Southwest University of Science and Technology,最差匹配(Worst Fit Allocation)策略,分配时,选最大的分区,释放时,检查是否可与临近的空闲分区合并,进行可能的合并,并调整空闲分区列表顺序,Southwest University of Science and Technology,计算机体系结构/内存层次 地址空间 & 地址生成 连续内存分配内存碎片动态分配碎片整理 紧凑(compaction) 分区对换(swap in/out),内容摘要,伙伴系统,Southwest University of

11、 Science and Technology,碎片整理:紧凑(compaction),Southwest University of Science and Technology,碎片整理:分区对换(Swapping in/out),通过抢占并回收处于等待状态进程的分区,以增大可用内存空间,P1,P2,P3,P4,Southwest University of Science and Technology,碎片整理:分区对换(Swapping in/out),操作系统内核,用户地址空间,进程p1,进程p2, 换入, 换出,内存,外存, 需要解决的问题交换哪个(些)程序?,Southwest

12、University of Science and Technology,伙伴系统伙伴系统的实现ucore中的伙伴系统,计算机体系结构/内存层次 地址空间 & 地址生成 连续内存分配,内容摘要,Southwest University of Science and Technology,伙伴系统(Buddy System), 整个可分配的分区大小2U, 需要的分区大小为2U-1 s 2U 时,把整个块分配给该进程;,如s 2i1,将大小为2i 的当前空闲分区划分成两个大小为2i1 的空闲分区,重复划分过程,直到2i-1 s 2i,并把一个空闲分区分配给该进程,Southwest Univers

13、ity of Science and Technology,伙伴系统的实现, 数据结构,空闲块按大小和起始地址组织成二维数组, 分配过程,由小到大在空闲块数组中找最小的可用空闲块,如空闲块过大,对可用空闲块进行二等分,直到得到合适的可用空闲块,初始状态:只有一个大小为2U的空闲块,Southwest University of Science and Technology,伙伴系统中的内存分配,Request 100K,512K,256K,128K,A=128K,B=256K,C=64K,64K,D=256K,256K,256K,128K,E=128K,128K,256K,512K,512K,

14、1M,Request 100K,Request 240K,Request 64K,Request 256K,Release B,Release A,Request 75K,Release C,Release E,Release D,Southwest University of Science and Technology,伙伴系统的实现, 合并条件,大小相同2i,http:/en.wikipedia.org/wiki/Buddy_memory_allocation,地址相邻,低地址空闲块起始地址为2i1的位数,Southwest University of Science and Techn

15、ology,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 *na

16、me;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); ;,Southwest University of Science and Technology,ucore中的伙伴系统实现,const struct pmm_manager

17、buddy_pmm_manager = .name = “buddy_pmm_manager“,.init = buddy_init,.init_memmap = buddy_init_memmap,.alloc_pages = buddy_alloc_pages,.free_pages = buddy_free_pages,.nr_free_pages = buddy_nr_free_pages,.check = buddy_check, ;,const struct pmm_manager buddy_pmm_manager = .name = “buddy_pmm_manager“,.init = buddy_init,.init_memmap = buddy_init_memmap,.alloc_pages = buddy_alloc_pages,.free_pages = buddy_free_pages,.nr_free_pages = buddy_nr_free_pages,.check = buddy_check, ;,Southwest University of Science and Technology,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报