专栏首页用户画像3.2.1虚拟内存的基本概念

3.2.1虚拟内存的基本概念

1、传统存储管理方式的特征

各种内存管理策略都是为了同时将多个进程保证在内存中以便允许多道程序设计。

它们都具有以下两个共同的特征:

1)一次性:作业必须一次性全部装入内存后,方能开始运行。这会导致两种情况发生:

①当作业很大,不能全部被装入内存时,将使该作业无法运行。

②当大量作业要求运行时,由于内存不足以容纳所有作业,只能使少数作业先运行,导致多道程序度的下降。

2)驻留性:作业被装入内存后,就一直驻留在内存中,其任何部分都不会被换出,直至作业运行结束,运行中的进程,会因等待I/O而被阻塞,可能处于长期等待状态。

由以上分析可知,很多程序运行中不用或暂时不用的程序(数据)占据了大量的内存空间,而一些需要运行的内存又无法装入运行,显然浪费了宝贵的内存资源。

2.局部性原理

要真正理解虚拟内存技术的思想,首先必须了解计算机中著名的局部性原理。著名的Bill Joy(SUN公司CEO)说过:”在研究所的时候,我经常开玩笑地说高速缓存是计算机科学中唯一重要的思想。事实上,高速缓存技术确实极大地影响了计算机系统的设计。”快表、页高速缓存以及虚拟内存技术从广义上讲,都是属于高速缓存技术。这个技术所依赖的原理就是局部性原理。局部性原理既适用于程序结构,也使用与数据结构(更远地将,Dijkstra著名的关于“goto语句有害”的论文也是出于对程序局部性原理的深刻认识和理解)。 局部性原理表现在以下两个方面: 1)时间局部性:如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能再次被访问。产生时间局部性的典型原因是由于在程序中存在着大量的循环操作。 2)空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围以内,这是因为指令通常是顺序存放,顺序执行的,数据也一般是以向量、数组、表等形式簇聚存储的。 时间局部性是通过将近来使用的指令和数据保存到高速缓存存储器中,并使用高速缓存的层级结构中实现。 空间局部性通常是使用较大的高速缓存,并将预存机制集中到高速缓存控制逻辑中实现。 虚拟内存技术实际上就是建立了“内存——外存”的两级存储器的结构,利用局部性原理实现高速缓存。

3.虚拟存储器的定义和特征

基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。另一方面,操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。 之所以将其称为虚拟存储器,是因为这种存储器实际上并不存在,只是由于系统提供了部分装入、请求调入和置换功能后(对用户完全透明),给用户的感觉是好像在一个比实际物理内存大得多的存储器。虚拟存储器的大小由计算机的地址结构决定, 并非是内存和外存的简单相加。 虚拟存储器有三个主要特征: 1)多次性,是指无需在作业运行时一次性地全部装入内存,而是允许被分成多次调入内存运行。 2)对换性,是指无需在作业运行时一直常驻内存,而是允许在作业的运行过程中,进行换进和换出。 3)虚拟性,是指从逻辑上扩充内存的容量,使用户所看到的内存容量,远大于实际的内存容量。

4.虚拟内存技术的实现

虚拟内存中,允许将一个作业分多次调入内存。采用连续分配方式时,会使相当一部分内存空间都处于暂时或“永久”的空闲状态,造成内存资源的严重浪费,而且也无法从逻辑上扩大内存容量。因此,虚拟内存的实现需要建立在离散分配的内存管理方式的基础上。 虚拟内存的实现有以下三种方式: - 请求分页存储管理。 - 请求分段存储管理。 - 请求段页式存储管理。 不管哪种方式,都需要一定的硬件支持。一般需要的支持有以下几个方面: - 一定容量的内存和外存。 页表机制(或段表机制),作为主要的数据结构。 - 中断机构,当用户程序要访问的部分尚未调入内存,则产生中断。 - 地址变换机构,逻辑地址到物理地址的变换。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅析JAVA堆内存和栈内存的区别

    堆内存:https://baike.baidu.com/item/%E5%A0%86%E5%86%85%E5%AD%98/7270805?fr=aladdin

    week
  • 3.2 虚拟内存管理

    ②当大量作业要求运行时,由于内存不足以容纳所有作业,只能使少数作业先运行,导致多道程序度的下降。

    week
  • 2.4 物理层本章小结

    传输媒体并不是物理层。由于传输媒体在物理层的下面,而物理层是体系结构的第一层,因此有时称传输媒体为0层,在传输媒体中传输的是信号,但传输媒体并不知道所传输的信号...

    week
  • win32应用程序性能测试-内存篇

    本文主要讲述windows平台下应用程序性能测试的内存相关的知识,通过本文了解内存基本原理和分析内存占用问题。 一、内存是什么? 1内存分为物理内存和虚拟内存 ...

    腾讯移动品质中心TMQ
  • 一图解千愁,jvm内存从来没有这么简单过!

    看到这张图的同学,千万不要到处分享。我们仅限于小范围讨论,因为这张图威力很大,是我花了10年时间才画出来的!

    xjjdog
  • 堆外内存 之 DirectByteBuffer 详解

    tomas家的小拨浪鼓
  • iOS内存优化心得

    当app经过一段儿时间的迭代,往往会出现一些性能问题,这时能够协助开发同学解决这些性能问题也成为我们测试同学的重要工作。凑巧最近一段时间小编就一直在协助开发同学...

    用户5521279
  • 虚拟内存详解

    究其原因,监控系统计算的可用内存算法有偏差,他只关注了计算机的“实际”内存,忽略了计算机的虚拟内存。

    bisal
  • js中的数据_变量_内存

    * 产生和死亡: 内存条(集成电路板)==>通电==>产生一定容量的存储空间==>存储各种数据==>断电==>内存全部消失

    李才哥
  • js中的数据_变量_内存

    * 产生和死亡: 内存条(集成电路板)==>通电==>产生一定容量的存储空间==>存储各种数据==>断电==>内存全部消失

    李才哥

扫码关注云+社区

领取腾讯云代金券