存储管理3-虚拟存储技术

覆盖技术(进程内部)
通常与分区存储一起
程序划分为功能上相对独立的块,共享一块内存区域,只把当前所需指令数据放入内存,其他的保存在外存
缺点:手工分块,编程复杂度高,时间换空间;
交换技术(进程之间)
通常与分区存储一起
进程(以进程为单位)由内存换至外存(换出),或者换入


虚拟存储技术

优化覆盖技术,系统自动完成,综合交换技术,进程的部分内容交换
利用程序局部性原理:程序在执行过程的一个较短时间内,所执行的指令地址,与指令的操作数地址,分别局限在一定的区域内。包含时间,空间局限性。


虚拟页式存储管理(当前主流,windows与linux使用)
以页式存储为基础,加入请求调页与页面置换,
程序调入内存运行时,只装入部分页面,执行时,发现所需不在内存,发出缺页中断请求(MMU),外存相应页面调入内存。
管理:页表,包含页号,访问位,修改位,保护位,驻留位,内存块号;
驻留位:是否位于内存
保护位:页面的访问类型
修改位:页面在内存是否修改过

访问位:在内存中是否被访问过


页面置换算法(不满足保留最会被使用的页面的需求)
1.先进先出:有时会导致Belady奇异,不满足驻留集增大,缺页中断次数减少的规律。
2.最优页面置换法:
缺页中断发生时,对于进程在内存的页面,计算下一次访问还需要等待多长时间。适合用于评估,
3.最近最久未使用算法:
选择最近一段时间最久未被使用的页面,置换,对上一个的近似,以过去预测未来
基于计数器实现:每个页面设置计数器,使用时,计数器清零,其余计数器加一,淘太时选取计数器值做大的页面;
基于链表实现:最近使用的界面为首,最久未使用的页面为尾,访问时,相应的逻辑页面移动到链表开头,缺页时,淘汰末尾
基于栈实现:最近访问的置于栈顶,最久的置于栈底(和链表差不多)
基于时间戳实现:访问内存时,页面打上时间戳,
特点:性能好,系统开销大。
4.时钟页面置换算法:
对1的优化,考虑了页面的访问情况,
从进入内存最久远的界面内,开始查找访问位为零的页面,置换之。访问位为0,说明在一段时间内,该页面没有被访问。
性能时间的折中


缺页中断率:缺页中断次数/作业总访问次数
影响因素
1.分配给作业的主存块数,要较少缺页,工作集应在内存;windows动态进程物理块分配
工作集:某段时间内,进程实际要访问的页面集合
2.页面大小对虚拟管理的有不小影响,一般是4kb(windows与linux)
3.程序的编制(访问内存的方式)

4.页面调度算法


页表的优化
多级页表

页表太大,有时程序很小,虚拟地址很多用不到,故需优化
32位逻辑地址中,逻辑地址分逻辑页面号(20位),页内偏移(12位);
逻辑页面分为两部分,对应一级页表(10位),二级页表(10位)
每一个二级页表,不必连续存放,
反置页表

物理块号对应逻辑块号


虚拟段式存储管理

和虚拟页式差不多,把页面换成段


虚拟段页式存储管理

你可能感兴趣的:(操作系统原理初步)