虚拟存储

虚拟存储为解决日益增长的内存需要,有以下几种解决办法:1.覆盖:将程序划分成几个模块,将没有调用关系的模块(即不会同时运行的模块)分成一组,其中每组所占的内存大小为组内所需内存最大的模块的内存,然后一组内

大家好,又见面了,我是你们的朋友全栈君。

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

1.覆盖:

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

    <span role="heading" aria-level="2">虚拟存储

 示例:

   <span role="heading" aria-level="2">虚拟存储

 有两种分组方法:

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

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

  所以第二种方法比较好。

2.交换:

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

    <span role="heading" aria-level="2">虚拟存储

  覆盖和交换的特点:

    <span role="heading" aria-level="2">虚拟存储

3.虚拟存储:

 1)局部性原理:

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

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

    <span role="heading" aria-level="2">虚拟存储

   2)虚拟存储概念:

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

    <span role="heading" aria-level="2">虚拟存储

      <span role="heading" aria-level="2">虚拟存储

3)虚拟页式存储管理:

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

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

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

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

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

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

    <span role="heading" aria-level="2">虚拟存储

    <span role="heading" aria-level="2">虚拟存储

    <span role="heading" aria-level="2">虚拟存储

    <span role="heading" aria-level="2">虚拟存储

    <span role="heading" aria-level="2">虚拟存储

    <span role="heading" aria-level="2">虚拟存储

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

      <span role="heading" aria-level="2">虚拟存储

    

      

 

   

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155535.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm双击打不开_pycharm社区版双击没反应

    pycharm双击打不开_pycharm社区版双击没反应方法一:出现这个问题应该是想永久使用pycharm然后修改了pycharm的Help”->“EditCustomVMOptions文件,导致打不开pycharm,无论怎么下载重新下载还是打不开,原因就是我们所修改的文件,在最后一行添加路径的时候出现了错误。打开C盘用户名下的文件夹,按图中步骤找到pycharm,打开.vmoptions文件,删除最下面这一行自己添加的语句,。然后重启pycharm就可以了。方法二:我们可以在Windows10系统的开始菜单上,单击

    2022年8月27日
    3
  • 圆桌游戏_圆桌游戏txt

    圆桌游戏_圆桌游戏txt【问题描述】有一种圆桌游戏是这样进行的:n个人围着圆桌坐成一圈,按顺时针顺序依次标号为1号至n号。对1#include#includeusingnamespacestd;intn,f[109]

    2022年8月2日
    7
  • Python文件名后缀_python判断文件后缀

    Python文件名后缀_python判断文件后缀转自:python获取文件后缀名的方法_qingfengxd1的博客-CSDN博客_python获取文件后缀获取文件的后缀名有好几种方法:第一种:splittext()方法os.path.splittext(path)[-1]第二种:endswith()方法path=”test_user_info.py”bool=path.endswith(“.py”)print(bool)第三种:判断后缀名是否在字符串中(这种会存在误判,若是.pyx后缀,一样会打印True,前面两种不会)path=”te

    2022年9月23日
    0
  • 树:普通树(非二叉树)的遍历

    树:普通树(非二叉树)的遍历

    2022年2月7日
    56
  • 树莓派介绍以及FAQ【这是我见过最全的树莓派教程】

    树莓派介绍以及FAQ【这是我见过最全的树莓派教程】一、树莓派简介树莓派是什么?树莓派(RaspberryPi)是尺寸仅有信用卡大小的一个小型电脑,您可以将树莓派连接电视、显示器、键盘鼠标等设备使用。树莓派能替代日常桌面计算机的多种用途,包括文字处理、电子表格、媒体中心甚至是游戏。并且树莓派还可以播放高至4K的高清视频。我们希望将树莓派推广给全世界的青少年电脑爱好者,用于培养计算机程序设计的兴趣和能力。树莓派各版本发布时间和差异对照?二、购买与配送在哪里购买?(说人话京东和淘宝都可以直接购买)树莓派基金会与E络盟与…

    2022年10月14日
    0
  • java中接口(interface)详解

    java中接口(interface)详解接口(interface)有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。接口定义举例publicinterfaceRunnerintid=…

    2022年7月13日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号