虚拟内存是什么?

  • 虚拟内存别称虚拟存储器(Virtual Memory)。电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。
  • 当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器(RAM)不足时,则 Windows 会用虚拟存储器进行补偿。它将计算机的RAM和硬盘上的临时空间组合。
  • 当RAM运行速率缓慢时,它便将数据从RAM移动到称为“分页文件”的空间中。将数据移入分页文件可释放RAM,以便完成工作。 一般而言,计算机的RAM容量越大,程序运行得越快。若计算机的速率由于RAM可用空间匮乏而减缓,则可尝试通过增加虚拟内存来进行补偿。但是,计算机从RAM读取数据的速率要比从硬盘读取数据的速率快,因而扩增RAM容量(可加内存条)是最佳选择。

虚拟内存解决什么问题?

内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,WINDOWS运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,这部分空间即称为虚拟内存,虚拟内存在硬盘上的存在形式就是 PAGEFILE.SYS这个页面文件。

虚拟内存地址如何映射物理地址

  • 进程被创建时会建立一个 虚拟内从到物理内存的映射表--------页表,根据页表可以将虚拟内存和物理内存关联起来

内存映射要通过页表,首先我们思考为什么要进行分页处理?

  • 答:当程序运行时,进程需要从内存中读出这段程序的代码。代码的位置必须在物理内存中才能被运行,由于操作系统中有非常多的程序运行着,内存中不可能够完全放下所有的物理页面,所以引出了虚拟内存的概念。
  • 把哪些不常用的程序片断就放入虚拟内存,当需要用到它的时候在load入主存(物理内存)中。这个就是内存管理所要做的事。内存管理还有另外一件事需要做:计算程序片段在主存中的物理位置,以便CPU调度。这个调度就是利用内存分页,通过页表映射的。

Win32通过一个两层的表结构来实现地址映射:

  • 第一层称为页目录,实际就是一个内存页,Win32的内存页有4KB大小,这个内存页以4个字节分为1024项,每一项称为“页目录项”(PDE);
  • 第二层称为页表,这一层共有1024个页表,页表结构与页目录相似,每个页表也都是一个内存页,这个内存页以4KB的大小被分为1024项,页表的每一项被称为页表项(PTE),易知共有1024×1024个页表项。每一个页表项对应一个物理内存中的某一个“内存页”,即共有1024×1024个物理内存页,每个物理内存页为4KB,这样就可以索引到4G大小的虚拟物理内存。

  • 当然了,上面的假设的前提是此数据已在物理内存中。
  • 当访问数据已经在物理内存中时,按照上面步骤进行地址映射,然后对数据进行访问。
  • 如果当前数据不在物理页面的话就要抛出缺页中断,然后判断数据是否在页交换文件中?
  • 如果不在则访问违例,程序将会退出,如果在,页表项会查出此数据页在哪个调页文件中,然后将此数据页调入物理内存,再继续进行地址映射。了实现每个进程拥有私有4G的虚拟地址空间,也就是说每个进程都拥有自己的页目录和页表结构,对不同进程而言,即使是相同的指针(虚拟地址)被不同的进程映射到的物理地址也是不同的,这也意味着在进程之间传递指针是没有意义的。

虚拟存储器执行过程

虚拟存储器是由硬件和操作系统自动实现存储信息调度和管理的。它的工作过程包括6个步骤:

  1. 中央处理器访问主存的逻辑地址分解成组号a和组内地址b,并对组号a进行地址变换,即将逻辑组号a作为索引,查地址变换表,以确定该组信息是否存放在主存内。
  2. 如该组号已在主存内,则转而执行④;如果该组号不在主存内,则检查主存中是否有空闲区,如果没有,便将某个暂时不用的组调出送往辅存,以便将这组信息调入主存。
  3. 从辅存读出所要的组,并送到主存空闲区,然后将那个空闲的物理组号a和逻辑组号a登录在地址变换表中。
  4. 从地址变换表读出与逻辑组号a对应的物理组号a。
  5. 从物理组号a和组内字节地址b得到物理地址。
  6. 根据物理地址从主存中存取必要的信息。

操作系统面试题:虚拟内存是什么,解决了什么问题,如何映射?相关推荐

  1. 操作系统面试题(史上最全、持续更新)

    尼恩面试宝典专题40:操作系统面试题(史上最全.持续更新) 本文版本说明:V28 <尼恩面试宝典>升级规划为: 后续基本上,每一个月,都会发布一次,最新版本,可以联系构师尼恩获取, 发送 ...

  2. 这可能最全的操作系统面试题

    文章目录 操作系统简介篇 解释一下什么是操作系统 操作系统的主要功能 软件访问硬件的几种方式 解释一下操作系统的主要目的是什么 操作系统的种类有哪些 为什么 Linux 系统下的应用程序不能直接在 W ...

  3. 几率大的杂乱+操作系统面试题(含答案)

    其他面试题类型汇总: Java校招极大几率出的面试题(含答案)----汇总 几率大的网络安全面试题(含答案) 几率大的多线程面试题(含答案) 几率大的源码底层原理,杂食面试题(含答案) 几率大的Red ...

  4. 虚拟计算机配置文件,如何更改虚拟内存位(可以解决由于启动计算机时出现了页面文件配置问题……).docx...

    如何更改虚拟内存位(可以解决由于启动计算机时出现了页面文件配置问题--) 窗体底端如何更改虚拟内存位置 --解决由于启动计算机时出现了页面文件配置问题-- 大家在装完win7系统后,可能会遇到这么个问 ...

  5. 操作系统:Linux虚拟内存知识介绍

    今天给大家分享Linux虚拟内存相关的知识,希望的对大家能有所帮助! 1.虚拟内存 毋庸置疑,虚拟内存是操作系统中最重要的概念之一.我想主要是由于内存的重要"战略地位".CPU太快 ...

  6. 山东大学软件学院2021操作系统期末试题b卷

    山东大学软件学院2020-2021操作系统期末试题 B卷 回忆版 数据是考完抄下来的,吼吼吼. 一.结合操作系统.对资源和程序的管理和分配,描述中断机制所起的作用在哪方面(10分) 二.结合实现进程机 ...

  7. 计算机四级考试操作系统单元题,2016年计算机四级考试操作系统单选试题及答案1...

    操作系统单选题 1在组成计算机系统的各类资源中,主要包含有硬件部件以及() A.代码和数据B.键盘.鼠标和显示器C.操作系统D.各类应用软件 参考答案:A 2共享性是操作系统的特征之一,计算机中的各类 ...

  8. 《计算机操作系统》试题库——修订版

    <计算机操作系统>试题库 1. 单项选择题(共200个题目) 100236. 一般用户更喜欢使用的系统是(C ). A.手工操作 B.单道批处理 C.多道批处理 D.多用户分时系统 100 ...

  9. 操作系统-第九章虚拟内存

    操作系统-第九章虚拟内存 虚拟内存 内存共享 按需调页 虚拟存储需要解决的几个问题 页表中须指明对应的页是否在内存中 如何具体的区分当发生页错误时 page is invalid or isvalid ...

  10. 计算机操作系统面试题

    操作系统面试题 1.进程和线程的区别? 2.死锁?死锁产生的原因?死锁的必要条件?怎么处理死锁? 3.Windows内存管理方式:段存储.页存储.段页存储 4.进程的几种状态? 5.IPC通信方式? ...

最新文章

  1. ASP.NET MVC 概述
  2. Python PIL | Image.resize() 裁剪 缩放图片
  3. python元组的概念_python元组的概念知识点
  4. 给Source Insight做个外挂系列之二--将本地代码注入到Source Insight进程
  5. 海浪 shader_海浪下的发现
  6. python科学编程入门书_Python数据科学零基础一本通
  7. iOS开发CAAnimation详解
  8. 【LeetCode】Remove Nth Node From End of List
  9. JavaScript--小白入门篇1
  10. LeetCode 892. 三维形体的表面积
  11. python if else elif_Python之 if-elif-else
  12. ISA2006发布Exchange服务器 RPC OVER HTTPS
  13. java内存管理(堆、栈、方法区)
  14. 【信息系统项目管理师】第9章-项目人力资源管理 知识点详细整理
  15. android利用线程池高效实现异步任务
  16. 【Listener】监听器基础
  17. Python 帮助文件
  18. 服务器返回状态码说明,关于服务器返回的十四种常见HTTP状态码详解
  19. 风云2号卫星云图_今天从零教你开始利用Python打造词云图!
  20. LeetCode刷题-中心对称数

热门文章

  1. 百度蜘蛛抓取网页过程详解
  2. 关于方向导数和梯度你真的懂了吗?
  3. KGH: NO ACCESS内存分配过大,引起的ORA-4031故障
  4. python的研究方法有哪些_python有哪些提取文本摘要的库
  5. 一哥答疑:数据工程师的出路在哪?
  6. 电脑没有回收站找回删除文件的2种方法
  7. Dokcer 桥接模式原理解析
  8. Arduino开发实例-MAX30100传感器模块连接问题解决
  9. 现代化的中国教育,缺失的不是钱,是思想(之四)---教育的最高境界就是“踏雪无痕”
  10. Java类的初始化顺序