*** 作系统笔记:虚拟内存

 *** 作系统笔记:虚拟内存,第1张

*** 作系统笔记

第三部分:虚拟内存 1.虚拟内存的概念

具有请求调入和置换的功能,从逻辑上对内容容量加以扩充的一种存储器系统

主存加辅存(或者内存加外存)就是虚拟内存,平常说的内存就单指主存储器,从固定磁盘划分的硬盘缓存作为外存,这部分是狭义的虚拟内存
局部性原理:时间局部性(同样的指令 *** 作多次);空间局部性(被 *** 作指令的相邻指令有可能被执行)
正是由于这个局部性,我们始终执行的是一部分指令,所以不需要执行的指令可以被挂起移到外存或者放到缓冲区或者不加载

2.虚拟内存的特征

多次性(作业分成多部分载入内存)、对换性(换入换出)、虚拟性(逻辑上扩充容量)

3.请求分页管理方式

与之前基本分页的区别是基本分页是一次性加载所有,而请求分页是加载部分,即查存储管理页表时找所需的内容,如果所需内容还没加载到内存,就去外存找

为了实现请求调入和请求调出才新增四个字段

4.缺页中断机构

要加载某个进程到内存时,此时进程处于阻塞状态,(另外此时也会进入中断,会有一些中断 *** 作,如保护上下文,分析中断原因,保存镜像,注意这个中断是由CPU产生的,属于内部中断)
通过查找存储管理页表找到还未加载到内存的部分,将其对应的外存地址的内容调入当前空闲内存块,调入成功后,更新存储管理页表,待整个完成调度后,进入就绪队列等待CPU给执行权
如果当前内存没有空闲块,需要页面置换算法从存储管理页表中选择一块内存进行淘汰,通过修改位判断这部分内容在内存是否修改过,修改过就采用覆盖技术,覆盖原来对应的外存内容
内中断(CPU内部)如下:

外中断:I/O中断请求(如一些文件 *** 作,流 *** 作),人工干预(程序员控制并发过程中出现的一些情况)

5.地址变换机构

与之前基本分页的区别:
(1)基本分页是将全部内容都加载到内存中,没有请求调页的 *** 作,而请求分页是先请求调页来判断是否在内存,如果不在再从外存调入(基本分页是静态调入,而请求分页是动态调入)
(2)由于请求分页是需要时再加载,所以会存在内存块已占满的情况,因此可能需要页面置换
(3)因为请求分页是多次调入调出,因此需要增加多个页表项记录状态,修改变化这些情况
(4)热点表项同步到快表

6.页面置换算法

因为置换到外存的 *** 作是I/O *** 作,I/O *** 作的效率都是很低的,如果需要频繁地置换,则需要一个合理的置换算法
置换就是淘汰一个页面,得到这个页面所占的内存块来使用

上图的补充说明:
(1).Belady异常是指淘汰了经常使用的页面;
(2).注意两种时钟置换算法都是在查找队列过程中,也对页面的访问位进行修改的,它是先修改再对比淘汰条件进行淘汰的
(3).时钟置换算法只考虑了访问的问题,没考虑修改的问题,这个算法是将页面淘汰,而页面中满足可以淘汰的页面可能有修改过和未修改过的,如果淘汰修改过的页面就有回写外存的 *** 作,而回写 *** 作是属于I/O *** 作(I/O *** 作效率很低)
(4).改进型时钟置换算法就考虑了修改问题,淘汰优先级:淘汰未访问未修改的页面 > 淘汰未访问已修改的页面 > 淘汰已访问未修改的页面 > 淘汰已访问已修改的页面

7.页面分配策略

(OS给进程分配多个页框)
在主存中,OS给进程的分配空间小,意味着可以有更多的进程可以并发,CPU时间利用率就高
在主存中,OS给进程的分配空间大,意味着并发减少
如果进程在主存中页数少(就是固定在内存的部分,对应上面的分配空间小),错页率就高(错页就是页缺失,查表得到的所需内容在外存,进程在内存的固定部分小,那进程的大部分就放在外存)
如果进程在主存中页数多,错页率无明显改善
分配策略(物理块就是内存):
策略1:固定分配局部置换:,为进程分配在内存固定的物理块(存在问题:不能确定不同进程的物理块数目)
策略2:可变分配全局置换:为进程分配一定量的物理块,如果不够用了再向OS请求新的物理块(这种策略下OS会管理一个空物理块队列来分配,如果队列用完了有可能剥夺别人的物理块来分配给当前进程,又或者将当前进程一些不需要的内容置换出去,得到这部分的物理块再分配)
策略3:可变分配局部置换:为进程分配一定量的物理块
注:策略2的全局置换就是从全局去得到空物理块以供进程使用,会因为剥夺其他进程的物理块影响其他进程,而且是一请求就给(导致并发减少)
策略3的局部置换就是通过当前进程自身的部分内容进行置换得到对应的物理块使用,而且是考虑哪部分内容缺页率高才分配物理块,不是请求就给

8.调入页面的时机

(1)预调页策略:多用于进程首次调入,一次调入若干相邻页面
(2)请求调页策略:运行时发现缺页时调入
OS从外存调入内容是从外存的对换区中调度的,如果对换区没有足够的空间,就会对一个进程频繁修改的部分放在外存的对换区,不修改的放在外存的文件区
驻留集是驻留在内存中页框,工作集是短时间内使用的页框

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/877676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存