计算机体系结构&内存分层体系
计算机体系结构/内存分层体系
计算机硬件
基本结构
内存层次
操作系统的内存管理
在操作系统中管理内存的不同方法
1.程序重定位
2.分段
3.分页
4.虚拟内存
5.按需分页虚拟内存
地址空间&地址生成
地址空间定义
物理地址空间:硬件支持的地址空间
起始地址0,直到MAX(sys)
逻辑地址空间:在CPU运行的进程看到的地址
起始地址0,直到MAX(prog)
地址生成
逻辑地址生成
编译时
假设起始地址已知
如果起始地址改变,必须重新编译
加载时
如编译时起始位置未知,编译器需生成课重定位的代码
加载时,生成绝对地址
执行时
执行时代码可移动
需地址转换(映射)硬件支持
地址生成过程
CPU
ALU:需要逻辑地址的内存内容
MMU:进行逻辑地址和物理地址的转换
CPU控制逻辑:给总线发送物理地址请求
内存
发送物理地址的内容给CPU
或接收CPU数据到物理地址
操作系统
建立逻辑地址LA和物理地址PA的映射
地址安全检查
连续内存分配
定义:给进程分配一块不小于指定大小的连续的物理内存区域
内存碎片
内存碎片:空闲内存不能被利用
1>外部碎片:分配单元之间的未被使用内存
2>内部碎片
分配单元内部的未被使用内存,取决于分配单元大小是否要取整
动态分区分配
1.定义:当程序被加载执行时,分配一个进程指定大小课边的分区(块,内存快),分区的地址是连续的
2.操作系统需要维护的数据结构
1>所有进程的已分配分区
2>空闲分区
3.动态分区分配策略
最先匹配
最佳匹配
最差匹配
最先匹配
思路:分配n个字节,使用第一个可用的空间比n大的空闲块
示例:分配400字节,使用第一个1kb的空闲块
原理&实现:
1.空闲分区列表按地址顺序排序
2.分配过程时,搜索一个适合的分区
3.释放分区时,检查是否可与临近的空闲分区合并
优点:
1.简单
2.在高低值空间有大块的空闲分布
3.易于产生更大的空闲块,向着地址空间的结尾
缺点:
1.外部碎片
2.分配大块时较慢
3.不确定性
最佳匹配
思路
分配n字节分区时,查找并使用不小于n的最小空闲分区
示例
分配400字节,使用第3个空闲块(最小)
原理&实现
1.空间分区列表按照大小排序
2.分配时,查找一个合适的分区
3.释放时,查找并且合并临近的空闲分区(如果找到)
优点
1.大部分分配的尺寸较小时,效果很好
2.可避免大的空闲分区被拆分
3.可减小外部碎片的大小
4.相对简单
缺点
1.外部碎片
2.释放分区较慢
3.容易产生很多无用的小碎片
最差分配
思路
分配n字节,使用尺寸不小于n的最大空闲分区
示例
分配400字节,使用第2个空闲块(最大)
原理&实现
1.空闲分区列表按从小到大排序
2.分配时,选最大分区
3.释放时,检查是否可与临近的空闲分区合并,进行可能的合并,并调整空闲分区列表顺序
优点
1.中等大小的分配较多时,效果最好
2.避免出现太多小的碎片
缺点
1.释放分区较慢
2.外部碎片
3.容易破坏大的空闲分区,因此后续难以分配大的分区
连续内存分配:压缩式与交换式碎片整理
碎片整理:紧凑
碎片整理
通过调整进程占用的分区未知来减少或避免分区碎片
碎片紧凑
1.通过移动分配给进程的内存分区,以合并外部碎片
2.碎片紧凑的条件:所有应用程序课动态重定位