操作系统-3.6-内存(虚拟内存&&请求分页管理详解)超详解

Posted LL.LEBRON

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统-3.6-内存(虚拟内存&&请求分页管理详解)超详解相关的知识,希望对你有一定的参考价值。

操作系统-3.6-内存(虚拟内存&&请求分页管理详解)

12.虚拟内存

12.1传统存储管理方式的特征,缺点

在我们了解虚拟存储之前先知道为什么需要虚拟存储,原因就是传统存储存在许多缺点,这里我们细细道来…

  • 缺点:传统存储管理有许多暂时用不到的数据会长期占用内存,导致内存利用率不高。
  • 特征:
    1. 一次性:作业必须一次性全部装入内存后才能开始运行。
    2. 驻留性:一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。

12.2局部性原理

  • 时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)
  • 空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放的,并且程序的指令也是顺序地在内存中存放的)

如何应用局部性原理呢?

高速缓存技术就是,将近期会频繁访问到的数据放到更高速的存储器中,暂时用不到的数据放到更低速存储器中。

12.3虚拟内存的定义和特征

虚拟内存

基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。
在程序执行过程中,当所访问的信息不在内存时由操作系统负责将所需信息从外存调入内存,然后继续执行程序。
若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存
在操作系统的管理下,在用户看来似乎有一个比实际内存大得多的内存,这就是虚拟内存。

注:这只是操作系统虚拟性的一个体现,实际的物理内存大小没有变,只是在逻辑上进行了扩充。

易混淆知识点

虚拟内存的最大容量是由计算机的地址结构((CPU寻址范围)确定的。

虚拟内存的实际容量= min(内存和外存容量之和,CPU寻址范围)

如:某计算机地址结构为32位,按字节编址,内存大小为512MB,外存大小为2GB。

则虚拟内存的最大容量为2^32B= 4GB

虚拟内存的实际容量= min (2^32B,512MB+2GB)= 2GB+512MB

虚拟内存的三个主要特征

  1. 多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存。
  2. 对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入、换出。
  3. 虚拟性:从逻辑上扩充了内存的容量,使用户看到的内存容量,远大于实际的容量。

12.4如何实现虚拟内存技术

虚拟内存技术:允许一个作业分多次调入内存。如果采用连续分配方式,会不方便实现。因此,虚拟内存的实现需要建立在离散分配的内存管理方式基础上。

然后传统的非连续分配存储管理有许多缺点,因此又引进虚拟内存的存储管理:

  • 请求分页存储管理
  • 请求分段存储管理
  • 请求段页式存储管理

它门之间的区别是:

  • 在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。(操作系统要提供请求调页或请求调段功能)
  • 内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。(操作系统要提供页面置换或段置换的功能。

12.5总结

13.请求分页管理方式

13.1请求分页管理概述

请求分页存储管理与基本分页存储管理的主要区别:

  • 在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。(操作系统要提供请求调页功能,将缺失页面从外存调入内存)
  • 若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到内存。(操作系统要提供页面置换的功能,将暂时用不到的页面换出外存)

请求分页管理方式:

  1. 页表机制
  2. 缺页中断机构
  3. 地址变换机构

13.2页表机制

在基本分页的基础上增加了几个表项:

  • 状态位:表示页面是否已在内存中。
  • 访问字段:记录最近被访问过几次,或记录上次访问的时间,供置换算法选择换出页面时参考。
  • 修改位:表示页面调入内存后是否被修改过,只有修改过的页面才需在置换时写回外存。
  • 外存地址:页面在外存中存放的位置。

13.3断页中断机构

  1. 找到页表项后检查页面是否已在内存,若没在内存,产生缺页中断。
  2. 缺页中断处理中,需要将目标页面调入内存,有必要时还要换出页面。
  3. 缺页中断属于内中断,属于内中断中的"故障",即可能被系统修复的异常。
  4. 一条指令在执行过程中可能产生多次缺页中断。

13.4地址变换机构

  1. 找到页表项是需要检查页面是否在内存中。
  2. 若页面不再内存中,需要请求调页。
  3. 若内存空间不够,还需换出页面。
  4. 页面调入内存后,需要修改相应页表项。

13.5总结


最后喜欢的小伙伴别忘了一键三连哦🎈🎈🎈

以上是关于操作系统-3.6-内存(虚拟内存&&请求分页管理详解)超详解的主要内容,如果未能解决你的问题,请参考以下文章

Android Dalvik虚拟机 堆内存管理 增长&释放

Android Dalvik虚拟机 堆内存管理 增长&释放

Android 常见内存泄露 & 解决方案

JVM&&JMM

3.6《深入理解计算机系统》笔记虚拟存储器,malloc,垃圾回收插图

JVM介绍&自动内存管理机制