码迷,mamicode.com
首页 > 其他好文 > 详细

虚拟存储

时间:2016-05-23 21:14:52      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

为解决日益增长的内存需要,有以下几种解决办法:

  1.覆盖:

   将程序划分成几个模块,将没有调用关系的模块(即不会同时运行的模块)分成一组,其中每组所占的内存大小为组内所需内存最大的模块的内存,然后一组内的模块可以进行替换,这样可以减小程序所占内存大小。

    技术分享

   示例:

   技术分享

   有两种分组方法:

    1)A一组,B,C一组,D,E,F一组。所需空间为20+50+40=110K

    2)A一组,B,E,F一组,C,D一组。所需空间为20+50+30=100K

   所以第二种方法比较好。

       2.交换:

    把当前在内存里的且处于非运行状态的进程移到外存中,然后就空出内存中的区域给运行状态的进程使用。不考虑进程的空间大于内存总空间的情况。

    技术分享

  覆盖和交换的特点:

    技术分享

      3.虚拟存储:

   1)局部性原理:

     就是说 一段时间内 访问的数据是在一个小区域内的,且一个数据的一次访问和下次访问的间隔很短,对于跳转指令,两次跳转的内存地址很可能相         同,这就算是局部性原理。

     因为局部性原理的存在,使得在内存中的数据的命中率较高,从而虚拟存储能获得较好的性能,所以虚拟存储才得以实现。

    技术分享

    2)虚拟存储概念:

     把目前用不到的进程快暂移到外存。与交换不同的是,交换是把整个进程都移出内存,而虚拟存储是把进程的部分模块移出去,且在最开始加载的          时候也是把进程的部分模块加载进内存,而不是整个进程都加载进去。

    技术分享

      技术分享

    3)虚拟页式存储管理:

      就是在之前的非连续内存管理中的页式存储的基础上,可以根据需要把内存中的页帧移到外存,也可以把要外存上要运行的页帧移到内存中来。

    为此在页表中加入了几个标志位:

      驻留位是说逻辑页在内存中有没有对应的页帧,根据此来确定是否发生缺页中断。

      修改位是说对应的物理页帧有没有进行过修改,这是在页面调度把此页调度到外存时用的,如果进行过修改就得把此页帧写入外存中来进行更                 新,否则直接把这页从内存中移除然后修改页表中的驻留位为0就行了。

      保护位是说该页是只读啊,可读可写啊,还是可执行等。 

      访问位是说这个页面近期有没有被访问过,用于页面置换算法的。

    技术分享

    技术分享

    技术分享

    技术分享

    技术分享

    技术分享

    4)缺页中断的处理请求:

      技术分享

    

      

 

   

 

虚拟存储

标签:

原文地址:http://www.cnblogs.com/kkkkkk/p/5521258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!