虚拟内存与物理内存

如何管理内存?

当多个程序同时运行时,如何让多个应用程序共同使用物理内存资源?有两种简单的方法:

  1. 使某一个应用程序独占所有的内存资源。一个程序要运行就将另一个程序的内存数据转存到硬盘中,使要运行的程序独占所有内存资源。

    • 缺点:硬盘读写速度很慢(相对而言),如果应用程序频繁切换,必然会造成大量时间开销。
  2. 让每一个应用程序独占一部分内存资源。多个应用程序的数据,可以一直保存在内存中,避免了硬盘读写的时间开销。

    • 缺点:无法保证不同应用程序内存之间
    • 的隔离性,如果应用程序A错误读取或修改了应用程序B的内存数据,就会造成严重的后果。
    • 缺点:无法保证每个应用程序分到的内存地址是连续的,这会增加程序编写的复杂度。

虚拟内存

为了使不同的应用程序高效,安全的使用内存,虚拟内存应运而生。顾名思义,虚拟内存是对物理内存的一种抽象,它介于应用程序与物理内存之间。应用程序是面向虚拟内存编写的,而不再是面向物理内存编写的。应用程序在运行时只能使用虚拟地址CPU负责将虚拟地址翻译成物理地址,操作系统负责设置虚拟地址到物理地址的映射。

优点:

  1. 应用程序只能看到自己的虚拟地址空间,从而保证了应用程序之间内存的隔离性,使应用程序运行更安全。
  2. 每个应用程序的虚拟内存空间是连续的、统一的,从而降低了编程的复杂性。

地址翻译:CPU中的内存管理单元(MMU)负责将虚拟内存翻译成物理内存。为了加速地址翻译过程,MMU中还加入了转址旁路缓存(TLB),TLB可以缓存一部分虚拟地址到物理地址的映射,从而加速翻译。

虚拟内存是硬件提供的一种功能,而不是操作系统提供的。

分段和分页

分段和分页是MMU将虚拟地址翻译为物理地址的两种机制。

分段

在分段的机制下,操作系统以“段”(一段连续的物理内存)的形式来管理、分配虚拟内存和物理内存。应用程序的虚拟地址空间由若干个不同大小的段组成,比如:代码段、数据段。

每一段都是一个虚拟地址空间,虚拟地址由两部分组成:段号段内地址。MMU通过段表找到对应的物理段,再通过虚拟地址中的段内地址(偏移量)找到对应的物理地址。

缺点:造成物理出现外部碎片。虚拟地址中相邻的段对应到物理内存中可能就不相邻了,这样虽然实现了物理内存的离散分配,但是可能造成物理内存中相邻的段之间出现内存碎片(不足以映射给虚拟内存中的段)。

分页

将应用程序的虚拟地址空间划分成连续的,等长的虚拟页,同时物理内存也被划分为等长的,连续的虚拟页。操作系统为每一个应用程序构造页表(虚拟页到物理页的映射关系表)。分页机制下的虚拟地址由两部分构成:虚拟页号页内偏移量

MMU通过应用程序的页表找到虚拟页号对应的物理地址,再通过页内偏移量找到对应的物理地址。

多级页表

上面的简单分页机制在32位操作系统中,还能用,但是在64位操作系统中就不行了。64位操作系统,虚拟地址长64位,也就是8个字节,64位寻址范围是0~2^64,如果一个虚拟页大小4KB,那么就会有2^64/4KB个虚拟页,如果用一张页表来记录,一个页表项8字节,那么页表大小就为2^64/4KB*8,这是一个无法接受的数字。为了压缩页表的大小,多级页表应运而生。下面是一个4级页表的示意图:

在多级分页机制下,0级页表只有一个页表页,而其余每一级页表都可以拥有多个离散的页表页。虚拟地址可以分为两部分:虚拟页号页内偏移。只不过虚拟页号可以进一步分为四个部分,依次对应其在对应级数页表中的索引。当任意一级页表中的条目为空时,就意味着该条目对应的下一级页表不需要存在,因此节省了大量空间(不过增加了翻译时间,时间换空间)。

换页和缺页异常

换页是一种当物理内存不足时的一种机制。物理内存紧张时,操作系统会将一些物理页写入到磁盘中来腾出空间,这叫换出,当物理内存不紧张时,再将换出的物理页读回内存,这叫换入。换页机制能够工作的前提是缺页异常,物理页被换出,但是页表中与之对应的虚拟页仍然处于已分配状态,但是当应用程序访问该虚拟页时却发现该虚拟页没有映射到物理页,于是就会触发缺页异常。

利用换页机制,操作系统可以把物理内存放不下的数据临时存储在磁盘上,等到需要的时候再放回到物理内存中,从而能够为应用程序提供超过物理内存容量的虚拟内存空间,不过换页耗时较高会使程序运行变慢,常见的页替换策略:MIN策略/opt策略、FIFO策略、LRU策略。

分类: 计算机操作系统
标签: 计算机操作系统
好文要顶 关注我 收藏该文

funtrin
关注 - 0
粉丝 - 0

+加关注

1
0

«  上一篇: 堆的原理与实现
»  下一篇: 二叉树的四种遍历(递归与非递归)

计算机操作系统——虚拟内存与物理内存相关推荐

  1. 计算机操作系统虚拟内存管理

    从逻辑上进行内存的扩充 具有请求调入和置换功能 传统存储管理方式的特征 上一节所讨论的各种内存管理策略都是为了同时将多个进程保存在内存中以便允许多道程序设计.它们都具有以下两个共同的特征: 1) 一次 ...

  2. Linux 内存管理 详解(虚拟内存、物理内存,进程地址空间)

    Linux -操作系统内存管理 存储系统 存储器的层次结构 Linux的内存管理 物理内存 物理内存管理 虚拟内存 虚拟地址空间 (写时拷贝) 和物理地址映射关系 页表 虚拟内存优缺点 「在 4GB ...

  3. 详解操作系统中虚拟内存与物理内存的关系

    点击链接: 一文理解虚拟内存.物理内存.内存分配.内存管理 - 知乎 目录 一.虚拟内存与物理内存 1.1 虚拟内存 1.2 虚拟内存与物理内存 二.C/C++中虚拟内存分配模型 2.1 C语言中内存 ...

  4. 操作系统原理,物理内存“扩充”技术,内存紧缩,覆盖,交换,虚拟内存思想

    操作系统原理,物理内存"扩充"技术,内存紧缩,覆盖,交换,虚拟内存 当内存空间不足以存放下进程是,需要使用到内存"扩充"技术,但不是真的扩充了内存. 截图来自b ...

  5. 操作系统——Linux 虚拟内存和物理内存的理解

    虚拟内存: 第一层理解 1..每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构: 2.一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间 ...

  6. 转载,大佬关于虚拟内存与物理内存关系讲解。

    内容来自:<0day安全:软件漏洞分析技术> 关于操作系统与组原课程中比较棘手的虚拟内存与物理内存讲解简单易懂!所以转述一下! Windows 的内存可以被分为两个层面:物理内存和虚拟内存 ...

  7. 面试「计算机操作系统」知识点大集合!

    作者:CyC2018 链接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/计算机操作系统.md 一.概述 基本特征 1. 并发 ...

  8. 听说面试又挂在计算机操作系统了?仔细看看这个!!!【强烈推荐】

    文章较长,建议收藏!!! 一.概述 基本特征 1. 并发 并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令. 并行需要硬件支持,如多流水线.多核处理器或者分布式计算系统. ...

  9. 计算机操作系统 - 内存管理

    计算机操作系统 - 内存管理 目录 计算机操作系统 - 内存管理 虚拟内存 分页系统地址映射 页面置换算法 1. 最佳 2. 最近最久未使用 3. 最近未使用 4. 先进先出 5. 第二次机会算法 6 ...

最新文章

  1. Python字符串转数字
  2. [转帖]最新FLASH 0DAY 漏洞总结分析篇
  3. GBDT基本原理及应用
  4. ubun16.04+搜狗输入法
  5. LTP(LinuxTest Project)测试工具
  6. eclipse 跑maven命令_eclipse中运行maven命令没有反应,console也不出现信息
  7. oracle中如何分页,Oracle中操作分页
  8. 本机搭建PHP环境全教程(图文)
  9. PROTUES实例——stm32点灯
  10. ETL(数据抽取、转换、装载)
  11. 用idea使用struts和hibernate来实现CRUB的操作
  12. System V 与 POSIX 简介与对比
  13. gwas snp 和_新的高密度玉米SNP芯片可用于基因组选择、GWAS和群体遗传学
  14. Dremel made simple with Parquet (Parquet 原理分析)
  15. 流行的rpc框架性能测试对比
  16. Typora插入图片的合理保存【windows平台】
  17. CSDN豪华盲盒, 一发入魂直接获得iPhone13, 请叫我欧皇 !
  18. java微信红包_Java模拟微信发红包(普通红包、拼手气红包)
  19. 2.5万字详细讲解个人网站的开发过程和项目的部署
  20. 传感模块:MATEKSYS Optical Flow LIDAR 3901-L0X

热门文章

  1. 【附源码】Python计算机毕业设计纳雍县梦金园珠宝店管理系统
  2. 从优秀IT项目经理到千万富翁的距离只有1m——如何当好项目经理
  3. c#的细节(一)-问号的细节
  4. H5 hbuilder打包后 plusready监听不到
  5. 微商八大途径吸粉、引流客源技巧详解!
  6. JComboBox 的下拉按钮添加监听
  7. 芯片 电脑 手机 服务器 储存,从5G手机到手机变电脑模拟器的需求
  8. Uva 12563,劲歌金曲,01背包
  9. 用python进行文件拷贝
  10. 三国志战略版:四大阵营武将总结——蜀国篇