精华内容
下载资源
问答
  • 虚拟内存的作用、分页系统实现虚拟内存原理
    千次阅读
    2021-02-26 11:19:56


    一、虚拟内存

      虚拟内存的基本思想是:每个程序拥有自己的地址空间,这个空间被分割成多个块,每一块乘坐一页面(page)。每一页有连续的地址范围。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻执行必要的映射。当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。

    二、虚拟内存的作用

      虚拟内存提供了三个重要的能力:缓存、内存管理、内存保护。

      1. 缓存。将内存视为一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据。

      2. 内存管理。为每个进程提供了一致的地址空间,简化内存管理。
      1)简化链接。独立地址空间允许每个进程的内存映像使用相同的基本格式。
      2)简化加载。
      3)简化共享。独立地址空间为操作系统提供了一个管理用户进程和操作系统自身之间共享的一致机制。在部分情况下,进程间还是需要共享代码和数据的,例如每个C程序都会调用C标准库中的程序(printf)、都需要调用相同的内核代码。操作系统通过将不同进程中适当的虚拟页面映射到相同的物理页面,从而安排多个进程共享这部分代码的一个副本,而不是在每个进程中都包括单独的内核和C标准库的副本。
      4)简化内存分配。当运行在用户进程的程序要求额外的堆空间时,操作系统分配k个连续的虚拟内存页面,并且将它们映射到物理内存中任意位置的k个任意的物理页面。由于页表的存在,操作系统没必要分配k个连续的物理页面,页面可随机地分散在物理内存中。

      3. 内存保护。保护了每个进程的地址空间不被其他进程破坏。操作系统会控制进程对内存系统的访问,例如:
      1)不允许一个用户进程修改它的只读代码段;
      2)不允许用户进程读或修改任何内核中的代码和数据结构;
      3)不允许用户进程读或写其他进程的私有内存;
      4) 不允许用户进程修改任何其他进程共享的虚拟页表。

    参考文章:https://www.jianshu.com/p/baf3a13c47db

    三、分页系统实现虚拟内存原理

    1、虚拟内存技术的实现

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

    2、请求分页管理方式

      大部分虚拟内存系统中都使用一种称为分页的技术。而在分页存储管理方式中,又根据运行作业时是否要把作业的所有页面都装入内存才能运行,分为基本分页存储管理方式和请求分页存储管理方式。显然,要想实现虚拟内存,我们需要使用请求分页管理方式。
      在任何一台计算机上, 程序引用了一组内存地址。地址可用过索引、基址寄存器、段寄存器或其他方式产生。由程序产生的这些地址称为虚拟地址,它们构成了一个虚拟地址空间。在没有虚拟内存的情况下,虚拟地址不是被直接送到内存总线上,而是被送到内存管理单元(Memory Management Unit,MMU),MMU把虚拟地址映射为物理内存地址。
      虚拟地址空间按照固定大小划分成被称为页面(page)的若干单元。在物理内存中对应的单元称为页框(page frame)。页面和页框的大小通常是一样的,但实际系统中的页面大小512字节到1GB。对应于64KB的虚拟地址空间和32KB的物理内存,可得到16个虚拟页面和8个页框。
      在请求分页系统中,只要求将当前需要的一部分页面装入内存,便可以启动作业运行。在作业执行过程中,当所要访问的页面不在内存时,再通过调页功能将其调入,同时还可以通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间。

    更多相关内容
  • 分页式虚拟内存管理及Linux实现.pdf
  • VMPool[2011-07-17_1_分页式虚拟内存管理,内存池].rar
  • 通过实现一个操作系统的内存管理的模拟系统,观察内存空闲分区管理、内存分配和回收过程,了解内存管理技术等特点,掌握内存管理中的分配、回收和置换算法,加深对请求调页系统的原理和实现过程的理解。
  • 虚拟内存12.1传统存储管理方式的特征,缺点12.2局部性原理12.3虚拟内存的定义和特征12.4如何实现虚拟内存技术12.5总结13.请求分页管理方式13.1请求分页管理概述13.2页表机制13.3断页中断机构13.4地址变换机构13.5...

    操作系统-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总结

    在这里插入图片描述
    最后喜欢的小伙伴别忘了一键三连哦🎈🎈🎈
    在这里插入图片描述

    展开全文
  • 这里写目录标题虚拟内存简介虚拟内存概念虚拟内存的容量虚拟内存的优点虚拟内存的缺点如何实现虚拟内存(请求分页、请求分段、请求段页)请求分页存储管理方式页表机制缺页中断机构地址变换机构请求分页存储管理的...

    虚拟内存简介

    虚拟内存概念

    在操作系统的管理下,在用户看来似乎有一个比实际内存大得多的内存,这就是虚拟内存。虚拟内存是操作系统虚拟性的一个体现,实际的物理内存大小没有变,只是在逻辑上进行了扩充。

    基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。

    虚拟内存的容量

    虚拟内存的最大容量是由计算机的地址结构(cpu寻址范围)确定的,虚拟内存的实际容量=min(内存和外村容量之和,cpu寻址范围)。

    虚拟内存的优点

    1. 可以使用有限的内存资源,处理比实际内存更大的文件或者数据。
    2. 更加高效的内存利用。
    3. 在有限的内存资源内,让系统运行更多的程序实例,因为每个程序都是按需取。

    虚拟内存的缺点

    1. 如果内存严重不足,而处理超级大的文件时,会频繁引起内存和磁盘进行swap,从而降低系统性能。
    2. 在多个应用程序之间切换会花费更多的时间。
    3. 虚拟内存本质上是充分了磁盘空间,但同时变相的提供用户使用的实际磁盘空间也会变小。

    如何实现虚拟内存(请求分页、请求分段、请求段页式)

    虚拟内存的实现需要建立在离散分配的内存管理方式基础上。回忆一下传统的离散分配存储管理方式:基本分页存储、基本分段存储管理、基本段页式存储管理。

    其对应虚拟内存的实现就是:请求分页存储管理、请求分段存储管理、请求段页式存储管理。

    虚拟内存的实现与离散分配存储管理方式的主要区别在于虚拟内存多了以下三个步骤:

    1. 在程序执行过程中,当所访问的信息不在内存时,需要由操作系统负责将所需信息从外存调入内存,然后继续执行程序。(即操作系统要提供请求调页功能)
    2. 若内存空间不够,需要由操作系统负责将内存中暂时用不到的信息换带外存。(即操作系统要提高页面置换功能)
    3. 在请求调页和页面置换后,除了对慢表和快表进行修改外,还要对请求页表中新增的表项进行修改。

    请求分页存储管理方式

    请求分页管理的具体实现可以分为三部分:页表机制、缺页中断机构、地址变换机构。

    页表机制

    当所访问的信息不在内存时,为了实现“请求调页”,操作系统需要知道每个页面是否已经调入内存;如果还没调入那么也需要知道该页面在外存中存放的位置。

    当内存空间不够时,要实现“页面置换”,操作系统需要通过某些指标来决定到底换出哪个页面;有的页面没有被修改过,就不用再浪费时间写回内存中。有的页面修改过,就需要将外存中的旧数据覆盖,因此,操作系统也需要记录各个页面是否被修改的信息。

    因此,请求分页所用的地址结构在基本分页的基础上增加了几个表项:

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

    基本页表分配管理方式与请求分页的管理方式的页表区别如下:
    在这里插入图片描述

    缺页中断机构

    在请求分页系统中,每当所要访问的页面不在内存时,便产生一缺页中断,请求OS将所缺之页调入内存。

    缺页中断是内中断(即异常),要经历诸如保护CPU环境、分析中断原因、转入缺页中断处理程序进行处理、恢复CPU环境等几个步骤。
    缺页中断与一般的中断相比有着明显的差别,主要体现在以下两个方面:

    1. 在指令运行期间产生和处理中断信号。通常,CPU都是在一条指令运行完后,才检查是否有中断请求到达。若有,便去响应,否则,继续运行下一条指令。然而,缺页中断是在指令运行期间,发现所要访问的指令或数据不在内存时所产生和处理的。
    2. 一条指令在运行期间,可能产生多次缺页中断。在下图中示出了一个样例,在运行一条指令COPY A TO B时,可能要产生6次缺页中断,当中指令本身跨了两个页面,A和B又分别各是一个数据块,也都跨了两个页面。基于这些特征,系统中的硬件机构应能保存多次中断时的状态,并保证最后能返回到中断前产生缺页中断的指令处继续运行。
      在这里插入图片描述

    地址变换机构

    请求分页系统中的地址变换机构用于逻辑地址到物理地址的变换。其在基本分页系统地址变换机构的基础上,为实现虚拟内存而添加了某些功能而形成的,如产生和处理缺页中断,以及从内存中换出一页的功能等等。

    下图表示出了请求分页系统中的地址变换过程:

    1. 程序请求访问一页(给出了逻辑地址(页号,页内偏移量))。
    2. 页号<=页表长度,否则越界中断。
    3. CPU查询快表。
    4. 快表命中,则修改访问位和修改位(修改位不一定要改),形成物理地址(注意的是:只有"写指令”才需要修改“修改位”。并且,一般来说只需要修改快表中的数据,只有要将快表项删除时才需要写回内存中的慢表,这样可以减少访问次数,值得一说的是删除快表中的页表项,一般会发生在内存页表被换出内存时)。
    5. 如果快表未命中,则访问慢表,命中,则修改访问位和修改位(注意),形成物理地址。
    6. 如果慢表未命中(状态位为0),则产生缺页中断,请求调页。
    7. 保留CPU现场,并从外存中找到缺页。
    8. 此时判断内存是否是满的,如果满了,就选择一页换出,选择页面如果被修改过,就将该页面写回外存,如果没有修改过,就进行下一步;如果内存未满,操作系统命令CPU从外存读缺页。
    9. 启动I/O硬件(此操作需要启动慢速的I/O操作,可见换入换出操作太频繁,会有很大的开销)。
    10. 将一页从外存换入内存并,修改页表(页面调入内存后,需要修改慢表,同时也需要将表项复制到快表)。

    在这里插入图片描述

    请求分页存储管理的整体流程图

    在这里插入图片描述

    请求分段存储管理方式(虚拟内存的实现)

    在请求分段存储管理方式中,作业运行之前,只要求将当前需要的若干个分段装入内存,便可启动作业运行。在作业运行过程中,如果要访问的分段不在内存中,则通过调段功能将其调入,同时还可以通过置换功能将暂时不用的分段换出到外存,以便腾出内存空间。

    为实现请求分段系统,系统应该配置段表机制、缺段中断机构、地址变换机构。

    段表机制

    在请求分段式管理中所需的主要数据结构是段表。由于在应用程序的许多段中,只有一部分段装入内存,其余的一些段仍留在外存上,故除了段名(号)、段长、段在内存中的起始地址外,段表中还增加了以下诸项:

    • 存取方式:用于标识本分段的存取属性是只执行、只读,还是允许读/写。
    • 访问字段A:其含义与请求分页的相应字段相同,用于记录该段被访问的频繁程度。
    • 修改位M:用于表示该页在进入内存后是否已被修改过,供置换页面时参考。
    • 存在位P:指示本段是否已调入内存,供程序访问时参考。
    • 增补位:这是请求分段式管理中所特有的字段,用于表示本段在运行过程中是否做过动态增长。
    • 外存始址:指示本段在外存中的起始地址,即起始盘块号。
      在这里插入图片描述

    缺段中断机构

    缺段中断机构与缺页中断机构类似,它同样需要在一条指令执行期间,产生和处理中断,以及一条指令执行期间可能产生多此缺段中断。由于分段是信息的逻辑单元,因而不可能出现一条指令被分割在两个分段中和一个信息被分割在两个分段中的情况。缺段中断的处理过程如图:
    在这里插入图片描述

    地址变换机构

    请求分段系统中的地址变换机构是在基本分段系统地址变换机构的基础上形成的。因为被访问的段并非全在内存,所以在地址变换时,若发现所要访问的段不在内存,必须先将所缺的段调入内存,并修改段表,然后才能再利用段表进行地址变换。为此,在地址变换机构中又增加了缺段中断的请求及处理等功能,如下图所示:
    在这里插入图片描述

    分段共享

    为了实现分段共享,可在系统中配置一张共享段表,所有各共享段都在共享段表中占有一表项。表项中记录了共享段的段号、段长、内存始址、存在位等信息,并记录了共享此分段的每个进程的情况。如下图所示,其中:

    • 共享进程计数器count:记录有多少个进程需要共享该分段,设置一个整型变量count。
    • 存取控制:设定存取权限。
    • 段号:对于一个共享段,不同的进程可以各用不同的段号去共享该段。
      在这里插入图片描述

    分段保护

    在分段系统中,由于每个段在逻辑上是独立,因而比较容易实现信息保护。目前分段管理的保护主要有三种:

    • 地址越界保护:先利用段表寄存器中的段表长度与逻辑地址中的段号比较,若段号超界则产生越界中断;再利用段表项中的段长与逻辑地址中的段内位移进行比较,若段内位移大于段长,也会产生越界中断。
      注:在允许段动态增长的系统中,允许段内位移大于段长。
    • 访问控制保护(存取控制保护):在段表中设置了一个存取控制字段,用于规定对该段的访问方式。通常的访问方式有:只读,只执行,读/写。
    • 环保护机制:在该机制中规定:低编号的环具有高优先权。OS核心处于0环内;某些重要的实用程序和操作系统服务占居中间环;而一般的应用程序则被安排在外环上。在环系统中,程序的访问和调用应遵循以下规则:一个程序可以访问驻留在相同环或较低特权环中的数据。一个程序可以调用驻留在相同环或较高特权环中的服务。
      在这里插入图片描述
    展开全文
  • 内存区域划分: 地址:通常所说的地址,都是内存的地址,...实际上进程,程序访问的地址是虚拟地址。我们所说的程序地址空间叫做进程的虚拟地址空间。进程访问内存数据的时候,先将虚拟地址转化为物理地址然后访问

    内存区域划分:
    在这里插入图片描述
    地址:通常所说的地址,都是内存的地址,是内存单元的编号。程序运行时,就会将指令和数据放到指定的内存当中去。而程序只有在运行的时候才会占据内存,因此程序地址空间又被叫做进程地址空间

    我们来看一段代码:
    在这里插入图片描述我们都知道,一块内存空间只能存储一个数据不可能存储两个数据,并且地址空间相同,所指向的数据就一定相同,但是为什么上面地址相同,所指向的数据却不同,是内存分配错误吗?

    实际上在进程中,程序访问的地址是虚拟地址。我们所说的程序地址空间叫做进程的虚拟地址空间。进程访问内存数据的时候,先将虚拟地址通过页表映射转化为物理地址然后访问
    在这里插入图片描述创建子进程会复制父进程大部分的pcb,也会复制虚拟地址空间和页表,所以刚开始父进程和子进程通过页表映射,会映射到同一块物理地址,但是当子进程的数据要发生改变时,系统会重新为子进程开辟一块空间,此时虽然父子进程的g_val虚拟地址相同,但是页表映射的物理地址不同。

    虚拟地址空间实际上是系统给进程所描述的一个假的地址空间,是一个mm_struct结构体,并且每个进程都有自己独立的虚拟地址空间,也就是每个进程都有自己的mm_struct结构体描述。

    系统为每个进程都描述一个完整的、连续的虚拟地址空间,实际物理内存用的时候再给进程分配。这样的话,对于每个进程自己感觉都有一块完整的、连续的内存可以使用。

    为什么我们不能直接访问物理内存?

    设想,如果我们有16M物理内存空间,系统为每个进程描述一个完整的、连续的空间,内存中有4M和8M的进程,现有一个5M的进程,要被加载到内存中运行。4M进程已经运行完,可以拿出内存,8M进程还在继续运行,现在内存碎片加起来足够5M,但是进程需要连续的空间,内存中没有连续的5M,此时5M进程就不能被加载到内存中运行,只能等8M进程运行完,5M才能被加载到内存,这样不仅浪费了内存,运行效率也会降低。
    在这里插入图片描述
    系统为每个进程描述一块完整的、连续的虚拟地址,若这个虚拟地址可以通过页表映射到物理地址,映射到的物理地址可以不连续,只要物理内存有空间存储,这样就可以将内存碎片利用起来,就实现了数据在物理内存上的离散式存储,可以提高内存利用率

    另一方面就是访问的安全性。如果一个进程中有恶意程序,若直接访问物理内存,可能会篡改其他进程的数据,这样其他进程就会崩掉。但虚拟地址通过页表进行映射,页表中会有内存访问控制,映射的过程中会查看此进程是否有访问权限等信息,这样就会提高访问的安全性。

    总结:

    虚拟地址空间,是系统为每个进程通过mm_struct结构体虚拟的一个地址空间,使用虚拟地址空间的目的是为了让进程能够访问一块连续的、完整的地址,并且经过页表映射到物理内存后,可以实现数据在物理内存上的离散式存储,提高内存利用率,并且在页表中可以进行内存访问控制,让进程更加安全。

    虚拟地址如何通过页表获取物理地址—内存管理方式

    分段式内存管理: 将地址空间分为多段(代码段、数据段…),便于编译器进行地址管理。

    分段式虚拟地址组成:段号+段内的偏移地址;在系统中有一个段表:一个个段表项(段号,物理内存起始地址)

    段内偏移:具体一个变量首地址相对于内存起始段地址的偏移。
    在这里插入图片描述通过虚拟内存地址段号从段表中找出对应的段号,再通过对应的物理内存起始段地址映射到物理内存,再通过虚拟内存的段内偏移找到唯一的物理地址。

    分页式内存管理: 将地址空间分为多个小块(页),实现数据离散式存储,提高内存利用率。

    分页式虚拟地址组成:页号+页内偏移;系统中有一个页表(页号,物理内存块起始地址、权限控制、缺页中断位…)
    在这里插入图片描述与分段式内存管理相似,通过虚拟内存的页号找到页表的对应页号,再通过对应物理起始块地址映射到物理内存,再通过虚拟内存的页内偏移找到唯一的物理地址。

    假设物理内存大小为4G,页的大小为4096字节,页数为4G / 4096 = 2^20,意味着页号占了虚拟地址的高20位,低12位就是页内偏移。

    段页式:将虚拟地址空间进行分段,在每个分段内进行分页式管理,集合了分段分页的优点进行内存管理。

    缺页中断:

    磁盘有两种分区:交换分区(swap)、文件分区(filesystem)
    交换分区:当物理内存不够用的时候,将物理内存中不活跃的数据,交换到磁盘的交换分区上,腾出内存用于新的数据处理。交换分区只有一个。
    文件分区:用来进行磁盘文件存储。文件分区可有多个。

    缺页中断:当我们通过虚拟地址访问物理内存的时候,发现数据没有在物理内存中,被交换到交换分区中,则触发缺页中断,通过内存置换算法,重新将数据加载到内存中。

    LRU----最近最久未使用置换算法

    基本思想:置换最近一段时间以来最长时间未访问过的页面。根据程序局部性原理,刚被访问的页面,可能马上又要被访问;而较长时间内没有被访问的页面,可能最近不会被访问。

    展开全文
  • 程序是不占用内存的,存储磁盘,只有当运行时才会将数据载入内存中。进程的狭义概念是一个正在运行的程序(进程详解看上一篇博客),因此进程是有地址空间的。 进程虚拟地址空间 假设现在有一个进程,它有一个...
  • 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断
  • 内存管理:页式虚拟内存管理

    千次阅读 2019-12-17 21:00:38
    存储管理——虚拟内存——缺页中断,页面替换算法 开章明意: 创建一个进程(创建进程是磁盘),进程以字节为单位编号,然后再进程分为许多页(每页4KB),内存有对应的页框(设定同页)。通过页表(记录...
  • 分页式内存管理:将内存分成固定大小的页,一般是4k,将程序按页分切割。分配给程序的页可以物理上不连续,不会产生外部碎片,但是最后一个页的4k不一定用的完,就会产生内部碎片。 分段式内存管理:将程序按照数据...
  • 【判断题】请求分页式系统,以页为单位管理用户的虚空间,以段为单位管理内存空间【简答题】微内核是否是完整的OS?【单选题】下列选项,能引起外部中断的事件是【其它】包装设计一物多用的设计简图【简答题】同步...
  • 分页内存管理

    2020-12-08 10:44:41
    一、分页内存管理详解 1、分页内存管理的核心思想 2、分页内存管理能解决什么问题? 3、虚拟地址的构成与地址翻译 4、页表 5、分页内存管理的优缺点 二、分页内存管理例子解析 三、缺页中断和页面置换的目标 ...
  • 文章目录1 虚拟内存1.1 传统存储管理方式的特征、缺点1.2 局部性原理1.3 虚拟内存主要特征1.4 如何实现虚拟内存技术1.5 虚拟内存的基本概念小结2 请求分页管理方式2.1 页表机制2.2 缺页中断机构2.3 地址变换机构2.4 ...
  • 文章目录1.1 虚拟存储器的定义1.2 虚拟存储器的特征1.3 虚拟内存技术的实现1.4 请求分页管理方式1.4.1 页表机制1.4.2 缺页中断机构1.4.3 地址变换机构1.5 页面置换算法1.6 页面分配策略1.6.1 驻留集大小1.6.2 调入...
  • 请求分页管理内存有效访问时间(EAT) 查快表时间λ,访问物理地址时间t,缺页中断处理时间ε,命中率a,缺页率f 命中,快表找到页号和块号用时λ,访问物理地址t 未命中,快表没找到页号,但还是用时λ 未...
  • 1. 综述  突然把这么多概念弄到一起,让... 分页式管理:将内存分成固定大小的页,分配若干页将整个进程载入。页面可以不连续是其重要优点,不会产生外碎片,更有效地利用了内存,不过会产生一些内碎片,即分配给进
  • 分页内存管理——虚拟地址到物理地址的转换

    万次阅读 多人点赞 2018-08-10 23:30:57
    此篇博客内容在于着重帮助读者明白在分页内存管理下,虚拟地址和物理地址转换计算是怎么进行的。 有关分页内存管理的其他知识请事先参阅有关资料。^_^ 一、计算之前需要了解如下知识: 1.对每个程序而言,...
  • 内存管理之分段与分页 转载自多名技术分享者,仅供参考! 第一篇 要理解分段和分页,那么得理解为什么会出现分段和分页的技术。 首先,这两个技术都是为了利用和管理好计算机的资源–内存。 分段这个技术还没有...
  • 真正的模拟操作系统 内存的分配 (分页存储管理)(操作系统模拟多进程内存分配) 连续的分配方式会形成许多碎片,虽然通过紧凑的方法将血多碎片拼接成可用的大块空间 但须付出很大的开销。如果允许将一个进程...
  • 计算存储的层次结构: 当前技术没有能够提供这样的存储器,因此大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵...内存管理主要包括虚地址、地址变换、内存分配和回收、内存扩充、内存共享和保护等功...
  • 进程运行时不用的,或暂时不用的,或某种条件下才用的程序和数据,全部驻留于内存中是对宝贵的主存资源的一种浪费,大大降低了主存利用率。 于是,提出了这样的问题:作业提交时,先全部进入辅助存储器,作
  • 分页存储管理 实际上存储物理内存上(磁盘上),运行时一页一页...页存储管理内存空间划分成等长的若干物理块,成为物理页面也成为物理块,每个物理块的大小一般取2的整数幂。内存的所有物理块从0开始编号,称...
  • 环境变量一般是指操作系统用来指定操作系统运行环境的一些参数 常见的环境变量 •   PATH:保存了可执行程序的搜索路径 •   SHELL:保存了命令行解释器的名称 •   HOME:保存...
  • 【操作系统】分页式虚拟存储系统

    千次阅读 2020-12-21 14:44:11
    分页式虚拟存储系统,主存容量为1M,被分成256块(0255)。一个作业的地址空间占4页,页号为03,被分配到主存的第2,3,1,5块,那么: ⑴ 主存地址应该用___20_____位二进制表示。 ⑵ 作业每一页的长度为____4K...
  • 虚拟内存管理

    千次阅读 2019-07-08 23:01:09
    虚拟内存管理这是一种利用虚拟存储器来逻辑扩充物理内存的管理方式。其基本思想是用软硬件技术把内存与外存这两级存储器当成一级存储器来用,从而给用户提供了一个比内存也比任何应用程序大得多的虚拟存储器,使得...
  • 32位系统上,线性地址空间可达4G(2^32);这4G一般是按照3:1的比例进行分配,用户进程享有3G的空间,而内核独自享有剩下的1G内存 但是我们所看到的这个空间并不是真是存在的而是计算机操作系统为我们描述出来的...
  • 虚拟存储管理

    千次阅读 2020-12-14 11:07:13
    概述 虚拟存储技术是一种借助于外存空间,从而允许一个进程其运行过程部分地装入内存的技术 虚拟存储系统将内存与外存有机地结合一起,从而得到一个容量相当于外存、速度接近于内存的存储体系 基本原理 进程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,741
精华内容 9,496
关键字:

在分页式虚拟内存管理中