精华内容
下载资源
问答
  • 在本文中,他阐述了在标准硬件中实现高速、多线程虚拟内存的可能性及方案。原文内容如下。  你想在标准硬件上运行TB级甚至PB级内存的JVM吗?你想与内存交互一样读写文件,且无需关心文件的打开、关闭、读、写吗? ...
  • 虚拟内存的实现机制

    2020-09-12 21:44:42
    ----外存和内存虚拟地址之间建立一个映射表-----cpu在运行时从内存中取指令执行(CPU取指令是通过虚拟地址来寻找要执行指令)----CPU中地址转换单元(MMU)通过映射表把虚拟地址查找指令(外存)..

    在这里插入图片描述

    原理:
    电脑上多个程序,各程序被编译连接生成可执行文件(机器指令程序)----在磁盘中存储时各程序被切分成多个部分(称为“页”),每一页都对应一个虚拟地址(其实就是对每一页编号)-----由于物理内存有限(运存)所以各程序在执行时只是把此时要执行的页加载到物理内存中去(其他页还是在外存中)-----外存和内存和虚拟地址之间建立一个映射表-----cpu在运行时从内存中取指令执行(CPU取指令是通过虚拟地址来寻找要执行的指令的)----CPU中的地址转换单元(MMU)通过映射表把虚拟地址查找指令的(外存)物理地址或(内存)物理地址(如果发现要执行的指令在内存中就直接加载到CPU计算,如果在外存中就匆匆忙忙把该指令加载到内存中,并更新映射表,再从内存中加载到CPU中执行)。
    注: 所谓“虚拟内存”,是对于CPU计算单元来说的,CPU从内存取指令时用的是虚拟地址,它并不知道这个地址是虚拟的。

    在这里插入图片描述

    补充: 虚拟内存把程序分为各个部分(称为“页”每个“页”的大小是4K),物理内存(即内存)中实际的空间也划分为各个部分(称为“页框”),他们之间通过映射表(页表)对应起来。系统为每个程序分配4G的虚拟内存。这样每个程序都认为自己拥有4G内存可以使用。
    在这里插入图片描述

    展开全文
  • 文章目录0.思维导图1.传统存储管理的特征、缺点2....虚拟内存的定义和特征4.如何实现虚拟内存技术 0.思维导图 1.传统存储管理的特征、缺点 2.局部性原理 3.虚拟内存的定义和特征 4.如何实现虚拟内存技术 ...


    0.思维导图

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.传统存储管理的特征、缺点

    在这里插入图片描述

    2.局部性原理

    在这里插入图片描述

    3.虚拟内存的定义和特征

    在这里插入图片描述
    在这里插入图片描述

    4.如何实现虚拟内存技术

    在这里插入图片描述

    展开全文
  • 虚拟内存地址管理器将应用程序代码映射到那个应用程序虚拟地址某个位置,并把当前需要代码读入物理地址 如果使用DLL,DLL也会被映射到进程虚拟地址空间中,在需要时候才会被读入物理内存 其他项目...
    1. 当一个应用程序执行时,操作系统就会创建一个进程,并给该进程分配2GB的虚拟地址(不是内存,知识地址)
    2. 虚拟内存地址管理器将应用程序的代码映射到那个应用程序的虚拟地址的某个位置,并把当前需要的代码读入物理地址
    3. 如果使用DLL,DLL也会被映射到进程的虚拟地址空间中,在需要的时候才会被读入物理内存
    4. 其他项目(数据,堆栈等)的空间是从物理内存中分配的,并映射到虚拟地址空间中
    5. 应用程序通过使用其虚拟地址空间中的地址开始执行。然后,虚拟内存管理器把每次内存访问到物理位置

    总的来说:

    • 应用程序不会直接访问物理地址
    • 虚拟内存管理器通过虚拟地址的访问请求来控制所有的物理地址访问
    • 每个应用程序都有独立的4GB寻址空间,不同应用程序的地址空间是彼此隔离的
    • DLL程序没有“私有”空间,他们总是被映射到其他应用程序的地址空间中,作为其他应用程序的一部分运行。其原因是:如果DLL不与其他应用程序处于同一个地址空间,应用程序就无法调用它

    使用虚拟内存的好处是:简化了内存的管理,弥补了物理内存的不足,可以防止多任务环境下应用程序之间的冲突。

    展开全文
  • 上一节所讨论各种内存管理策略都是为了同时将多个进程保存在内存中以便允许多道程序设计。它们都具有以下两个共同特征: 1) 一次性 作业必须一次性全部装入内存后,方能开始运行。这会导致两种情况发生: ...

    点击打开链接

    传统存储管理方式的特征

    上一节所讨论的各种内存管理策略都是为了同时将多个进程保存在内存中以便允许多道程序设计。它们都具有以下两个共同的特征:

    1) 一次性

    作业必须一次性全部装入内存后,方能开始运行。这会导致两种情况发生:
    • 当作业很大,不能全部被装入内存时,将使该作业无法运行;
    • 当大量作业要求运行时,由于内存不足以容纳所有作业,只能使少数作业先运行,导致多道程序度的下降。

    2) 驻留性

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

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

    局部性原理

    要真正理解虚拟内存技术的思想,首先必须了解计算机中著名的局部性原理。著名的 Bill Joy (SUN公司CEO)说过:”在研究所的时候,我经常开玩笑地说高速缓存是计算机科学中唯一重要的思想。事实上,髙速缓存技术确实极大地影响了计算机系统的设计。“快表、 页高速缓存以及虚拟内存技术从广义上讲,都是属于高速缓存技术。这个技术所依赖的原理就是局部性原理。局部性原理既适用于程序结构,也适用于数据结构(更远地讲,Dijkstra 著名的关于“goto语句有害”的论文也是出于对程序局部性原理的深刻认识和理解)。

    局部性原理表现在以下两个方面:
    • 时间局部性:如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能再次被访问。产生时间局部性的典型原因,是由于在程序中存在着大量的循环操作。
    • 空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,这是因为指令通常是顺序存放、顺序执行的,数据也一般是以向量、数组、表等形式簇聚存储的。

    时间局部性是通过将近来使用的指令和数据保存到高速缓存存储器中,并使用高速缓存的层次结构实现。空间局部性通常是使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现。虚拟内存技术实际上就是建立了 “内存一外存”的两级存储器的结构,利用局部性原理实现髙速缓存。   

    虚拟存储器的定义和特征

    基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。另一方面,操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。

    之所以将其称为虚拟存储器,是因为这种存储器实际上并不存在,只是由于系统提供了部分装入、请求调入和置换功能后(对用户完全透明),给用户的感觉是好像存在一个比实际物理内存大得多的存储器。虚拟存储器的大小由计算机的地址结构决定,并非是内存和外存的简单相加。虚拟存储器有以下三个主要特征:
    • 多次性,是指无需在作业运行时一次性地全部装入内存,而是允许被分成多次调入内存运行。
    • 对换性,是指无需在作业运行时一直常驻内存,而是允许在作业的运行过程中,进行换进和换出。
    • 虚拟性,是指从逻辑上扩充内存的容量,使用户所看到的内存容量,远大于实际的内存容量。

    虚拟内存技术的实现

    虚拟内存中,允许将一个作业分多次调入内存。釆用连续分配方式时,会使相当一部分内存空间都处于暂时或“永久”的空闲状态,造成内存资源的严重浪费,而且也无法从逻辑上扩大内存容量。因此,虚拟内存的实需要建立在离散分配的内存管理方式的基础上。虚拟内存的实现有以下三种方式:
    • 请求分页存储管理。
    • 请求分段存储管理。
    • 请求段页式存储管理。

    不管哪种方式,都需要有一定的硬件支持。一般需要的支持有以下几个方面:
    • 一定容量的内存和外存。
    • 页表机制(或段表机制),作为主要的数据结构。
    • 中断机构,当用户程序要访问的部分尚未调入内存,则产生中断。
    • 地址变换机构,逻辑地址到物理地址的变换。

    展开全文
  • 上一节所讨论各种内存管理策略都是为了同时将多个进程保存在内存中以便允许多道程序设计。它们都具有以下两个共同特征: 1) 一次性 作业必须一次性全部装入内存后,方能开始运行。这会导致两种情况发生: ...
  • 6 内存管理 内存抽象: 如果看过设计模式的人可能会知道,设计模式中提到最多的概念之一就是抽象,纯虚的基类作为接口就是对各种派生类对象的...但是,反过来一想,给每个进程都分配4GB地址空间,对于8GB内存的...
  • 虚拟内存技术的实现

    2020-09-21 21:37:54
    虚拟内存的实现有以下三种方式: 1. 请求分页存储管理:建立在分页管理之上,为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能。请求分页是目前最常用的一种实现虚拟存储器的方法。请求分页存储管理系统...
  • 在计算机实际的内存管理中,往往是两者兼具,联系它们之间的桥梁就是虚拟内存,而虚拟内存的实现离不开内存的换入换出。因此,以虚拟内存为桥梁,同时实现程序分段和内存分页思想便构成了操作系统的内存管理图像。 ...
  • 文章目录一、虚拟内存二、虚拟内存的作用三、分页系统实现虚拟内存原理1、虚拟内存技术的实现2、请求分页管理方式 一、虚拟内存   虚拟内存的基本思想是:每个程序拥有自己的地址空间,这个空间被分割成多个块,...
  • 首先内存(主存)它的读写速度是要比硬盘快很多的,但是内存的容量相对于硬盘来说非常低,为了解决这个问题,就引入了虚拟内存的概念。 虚拟内存的目的 虚拟内存的目的有三个: 1 将将储存视为操作系统的高速缓存,...
  • 1. 什么是虚拟内存虚拟内存设计的背景: 进程映像包括程序代码、数据和PCB,这些都需要占据物理内存。 有可能一个进程运行所需的程序代码和数据完全超过了物理内存的大小,更何况操作系统中同时有多个进程,...
  • 文章目录目录前文列表虚拟存储器Linux 虚拟存储器内存虚拟化KVM 的内存虚拟化 前文列表 《虚拟化技术实现虚拟化技术发展编年史》 《虚拟化技术实现 — QEMU-KVM》 《虚拟化技术实现 — KVM CPU 虚拟化》 虚拟...
  • 利用EVC4.0实现的对windows虚拟内存的简单管理
  • 考虑到以前遇到的一个问题,使用std::vector进行数据的存储,如果存储的数据量多大或者是没有足够的内存时该何如处理,联想到学习OS时虚拟内存的概念,感觉是一个好的解决方法,于是动手写了一个小的程序实现了该...
  • 面试的时候经常会被问到 malloc 的实现。从操作系统层面来说,malloc 确实是考察面试者对操作系统底层的存储管理理解的一个很好的方式,涉及到虚拟内存、分页/分段等。下面逐个细说。 1. 虚拟内存 首先需要知道的...
  • 利用虚拟内存技术,索引技术实现了对超长学生档案系统管理
  • 虚拟内存实现方式

    2018-12-04 14:59:18
    简介 在很久很久以前,那时候程序的地址操作都是直接...第二点,设想在有两个程序同时装入内存的情形,编译器在编译第二个程序的代码时是无法了解到内存中已经存在一个程序的。所以第二个程序的物理地址和第一个程...
  • Linux虚拟内存实现原理

    千次阅读 2017-05-01 10:59:35
    本文的目的就在于描述操作系统虚拟内存的使用及内存映射的内部实现。 以下是译文 当你运行一个程序,程序中有许多东西需要存储,堆、栈以及各种功能库。而这一切在你写程序时可能都不需要自己控制,Li
  • 实现虚拟内存管理nachos操作系统实验代码
  • 虚拟内存页面置换算法模拟实现 课程设计
  • 虚拟内存的分段与分页实现

    千次阅读 2014-10-20 08:55:15
    关于内存管理(虚拟内存的分段与分页实现),Intel Pentium完成哪些功能,Windows/Unix OS完成哪些功能?修改 《现代操作系统》在介绍内存管理的分段与分页结合时,介绍了分段和分页结合Intel Pentium的例子,...
  • 前面讲了单纯操作系统的虚拟内存、linux进程虚拟地址,然后又讲了linux进程内存布局,其实那张图就是linux进程的虚拟内存。取自:https://blog.csdn.net/dlutbrucezhang/article/details/9058583可是感觉...
  • 虚拟内存技术

    千次阅读 2018-05-23 16:56:55
    这种技术是允许程序员不受内存存储的限制,虚拟内存也允许进程很容易地共享文件和地址空间,还会为创建进程提供了有效的机制,但是虚拟内存的实现如果我们使用不当的会会大大地降低其的性能 其实指令必须都在...
  • 分析了嵌入式系统虚拟内存管理应具有的功能特点,提出了一种具有处理器无关标准编程接口的嵌入式虚拟内存管理平台的实现方法。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,246
精华内容 2,898
关键字:

虚拟内存的实现