cpu组成: 运算器, 寄存器, 控制器, 缓存(Cache), 内存管理单元(MMU)
连续内存分配:分区的动态分配
当一个程序准许运行在内存中时,分配一个连续的区间
分配一个连续的内存区间给运行的程序以访问数据
分区的动态分配策略
- 首次适配
内容:现在想分配n字节,从低地址开始找,碰到的第一个空间比n大的空闲块就使用它。
要想实现首次分配,需要满足以下条件:
1.需要存在一个按地址排序的空闲块列表
2.分配需要找一个合适的分区
3.重分配需要检查,看看自由分区能不能与相邻的空闲分区合并(形成更大的空闲块)
优点
1.简单
2.易于产生更大的空闲块,向着地址空间的结尾
缺点
1.外部碎片的问题会加剧
2.不确定性
- 最佳适配
内容:为了分配n字节,使用最小的可用空闲块,以致块的尺寸比n大。
目的:避免分割大的空闲块;最小化外部碎片产生的尺寸。
要想实现最佳分配,需要满足以下条件:
1.按尺寸排列的空闲列表
2.分配需要寻找一个合适的分区
3.重分配需要搜索和合并于相邻的空闲分区,若有
优点:
1.大部分分配是小尺寸时很有效
2.简单
缺点:
1.外部碎片
2.重分配慢
3.易产生很多没用的微小碎片
- 最差适配
内容:为了分配n字节,使用最大的可用空闲块,以致块的尺寸比n大。
目的:避免太多的微小碎片
要想实现最差分配,需要满足以下条件:
1.按尺寸排列的空闲列表
2.分配很快(获得最大的分区)
3.重分配需要合并于相邻的空闲分区,若有,然后调整空闲块列表
优点:
假如分配时是中等尺寸效果最好
缺点:
1.重分配慢;外部碎片
2.易于破碎大的空闲块以至大分区不能被分割
连续内存分配:压缩式与交换式碎片整理
- 压缩式碎片整理(紧致)
重制程序以合并孔洞
要求所有程序是 动态可重置的
问题:
1.何时重置
2.开销
- 交换式碎片整理
运行程序需要更多的内存
抢占等待的程序或回收它们的内存(把暂时不用的内容挪到磁盘里)
虚拟内存
- 虚存技术的目标
解决覆盖技术给程序员负担大和交换技术处理器开销大的问题。
像覆盖技术一样,不是把程序的所有内容都放在内存中,因而能够运行比当前的空闲内存空间还要大的程序。但做得更好,能由操作系统自动完成,无需程序员介入
能像交换技术那样,能够实现进程在内存和外存之间的交换,因而获得更多的空闲内存空间。但能做得更好,只对进程的部分内容在内存和外存之间进行交换。
- 程序的局部性原理(principle of locality)
指程序在执行过程中的一个较短时间,所执行的指令地址和指令的操作数地址分别局限于一定区域,表现为:
时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短的时间里
空间局部性:当前指令和领近的几条指令,当前访问的数据和领近的几个数据都集中在一个较小区域内
程序的局部性原理表明,从理论上来说,虚拟存储技术是能够实现的,而且在实现了以后应该能够取得一个满意的效果的。
- 虚存技术的基本概念
程序局部性原理在段式或页式内存管理的基础上实现。
缺页中断/异常
页面置换算法
- 功能目标
功能:当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换。
目标:尽可能减少页面的换入换出次数(即缺页中断的次数)。把未来不再使用的或短期内较少使用的页面换出,通常只能在局部性原理的指导下依据过去的统计数据来进行预测。
页面锁定(frame locking):用于描述必须常驻内存的操作系统的关键部分或时间关键(time-critical)的应用进程。实现方法是,在页表中添加锁定