虚拟内存-逻辑地址,物理地址,分段,分页
早期的计算机内存使用:
直接使用物理地址,如果多个程序都放入内存中会引发很多问题:
1.进程之间地址不隔离,容易互相修改,引发安全问题 2. 内存效率太低,因为进程是随机分配地址,所以零散的空间不能合并起来利用 3.程序运行地址不确定
分段-------为了解决地址隔离以及地址不确定的问题
分段---中间层,也就是间接寻找物理地址,即虚拟内存(引入逻辑地址)
为每个进程分配一个虚拟的4GB空间
此时分段还是将一整个程序导入内存中使用,时间空间效率都底下
分页则可以只导入要使用的部分(页)
重点还分页:请求页(怎能请求页面),置换页(该换谁怎么换),页面分配(一次要读多少页)
请求页有点看不懂
页面置换算法:
最佳置换算法:(无法实现只能作为参考),淘汰以后都不用或者长时间不用的页面
先进先出算法
最近最久未使用置换算法:加载进来的页面,每个都有个时间标记,记录自从上次被访问到现在的时间
时钟置换算法:第一次进来的全置为1,之后被访问到的时候也置为1,寻找0的页面,其中遇到的1都置为0,某一页被替换时指针指向下一帧,
页面分配策略:
驻留集大小(调入多少页)
调入页面的时机:1.预测调页(猜测可能哪个用的多,由程序员控制用于进程首次调入),2.请求调入(运行期间需要的时候请求调入)
外存分为文件区与对换区(用来进程页面调用的),文件区零散分布,对换区连续分布所以快
从何处调入页面:1.系统对换区空间足够:只使用对换区调用,2.系统对换区空间不足:不修改的使用文件区,需要修改的使用对换区
静,静,静