1. 读写内存的安全性

物理内存本身是不限制访问的,任何地址都可以读写,而操作系统要求不同的页面具有不同的访问权限,这是利用CPU模式和MMU的内存保护机制实现的。例如,Text Segment被只读保护起来,防止被错误的指令意外改写,内核地址空间也被保护起来,防止在用户模式下执行错误的指令意外改写内核数据。这样,执行错误指令或恶意代码的破坏能力受到了限制,顶多使当前进程因段错误终止,而不会影响整个系统的稳定性。

  
  2,虚拟内存管理最 主要的作用是让每个进程有独立的地址空间 (进程间的安全)
  
  所谓独立的地址空间是指,不同进程中的同一个VA被MMU映射到不同的PA,并且在某一个进程中访问任何地址都不可能访问到另外一个进程的数据,这样使得任何一个进程由于执行错误指令或恶意代码导致的非法内存访问都不会意外改写其它进程的数据,不会影响其它进程的运行,从而保证整个系统的稳定性。另一方面,每个进程都认为自己独占整个虚拟地址空间,这样链接器和加载器的实现会比较容易,不必考虑各进程的地址范围是否冲突。
  
  现在我们也可以理解为什么共享库必须是位置无关代码了。比如libc,不同的进程虽然共享libc所在的物理页面,但这些物理页面被映射到各进程的虚拟地址空间时却位于不同的地址,所以要求libc的代码不管加载到什么地址都能正确执行。
  
  3, VA到PA的映射会给分配和释放内存带来方便
  
  物理地址不连续的几块内存可以映射成虚拟地址连续的一块内存。比如要用malloc分配一块很大的内存空间,虽然有足够多的空闲物理内存,却没有足够大的连续空闲内存,这时就可以分配多个不连续的物理页面而映射到连续的虚拟地址范围。
  
  4, 一个系统如果同时运行着很多进程,为各进程分配的内存之和可能会大于实际可用的物理内存,虚拟内存管理使得这种情况下各进程仍然能够正常运行
  

  因为各进程分配的只不过是虚拟内存的页面,这些页面的数据可以映射到物理页面,也可以临时保存到磁盘上而不占用物理页面,在磁盘上临时保存虚拟内存页面的可能是一个磁盘分区,也可能是一个磁盘文件,称为交换设备(Swap Device)。当物理内存不够用时,将一些不常用的物理页面中的数据临时保存到交换设备,然后这个物理页面就认为是空闲的了,可以重新分配给进程使用,这个过程称为换出(Pageout)。如果进程要用到被换出的页面,就从交换设备再加载回物理内存,这称为换入(Pagein)。换出和换入操作统称为换页(Paging)

因此:

  
   系统中可分配的内存总量 = 物理内存的大小 + 交换设备的大小

虚拟内存管理的作用/好处相关推荐

  1. 低层级GPU虚拟内存管理引论

    低层级GPU虚拟内存管理引论 Introducing Low-Level GPU Virtual Memory Management CUDA应用程序越来越需要尽可能快速高效地管理内存.在CUDA 1 ...

  2. 一步一图带你深入理解 Linux 虚拟内存管理

    从本文开始我们就正式开启了 Linux 内核内存管理子系统源码解析系列,笔者还是会秉承之前系列文章的风格,采用一步一图的方式先是详细介绍相关原理,在保证大家清晰理解原理的基础上,我们再来一步一步的解析 ...

  3. 深入理解Linux虚拟内存管理(二)

    系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序( ...

  4. 计算机虚拟内存的用途,虚拟内存有什么作用?

    虚拟内存有什么作用? 虚拟内存有什么作用?它会不会提高机器的速度呢? 回答: 一.什么是虚拟内存? Win d o ws 操作系统用虚拟内存来动态管理运行时的交换文件.为了提供比实际物理内存还多的内存 ...

  5. SoC嵌入式软件架构设计之二:虚拟内存管理原理、MMU硬件设计及代码分块管理...

    程序的大部分代码都可以在必要的时候才加载到内存去执行,运行完后可以被直接丢弃或者被其他代码覆盖.我们PC上同时跑着很多的应用程序,每个应用程序使用的虚拟地址空间几乎可以整个线性地址空间(除了部分留给操 ...

  6. Linux虚拟内存管理 | 虚拟地址与物理地址映射、段错误SIGSEGV

    目录 x86 内存寻址 x86 分页机制 虚拟内存地址管理 虚拟地址与物理地址映射 - do_page_fault() 推荐阅读 Linux的内存管理分为 虚拟内存管理 和 物理内存管理,本文主要介绍 ...

  7. SoC嵌入式软件架构设计II:否MMU的CPU虚拟内存管理的设计与实现方法

    大多数的程序代码是必要的时,它可以被加载到内存中运行.手术后,可直接丢弃或覆盖其他代码.我们PC然在同一时间大量的应用,能够整个线性地址空间(除了部分留给操作系统或者预留它用),能够觉得每一个应用程序 ...

  8. 学会自我管理有哪些好处?自我管理包括哪些内容?

    学会自我管理的好处当然数不胜数.然而,初学自我管理的人经常会抱持这样一个错误的观念:即太过于把自我管理当作是门艺术而忽略了其科学的面向.这也是为什么我常向自我管理的初学者推荐<自我管理必读12篇 ...

  9. 深入理解Linux虚拟内存管理(一)

    系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序( ...

最新文章

  1. LMDIF_函数用法
  2. 5G 行业专网 — 三大运营商的 5G 专网类型
  3. 工作周报:2011-11-14至2011-11-18
  4. JUC锁-Semaphore(八)
  5. 数据可视化|实验二 分析特征间关系
  6. .net测试篇之单元测试/集成测试神器Autofixture
  7. 51nod 1051 最大子矩阵和 【最大子段和DP变形/降维】
  8. loadrunner 打印变量
  9. Docker 使用手册
  10. python后端工程师岗位职责_【PYTHON后端开发工程师岗位职责_PYTHON后端开发工程师职责/工作内容】-猎聘岗位职责频道...
  11. 雷军:编程不仅仅是技能,更是一种艺术!
  12. 短信猫接收与发送短信整理
  13. Shell/Linux使用Jq操作Json
  14. L1、L2正则化总结
  15. Disabling usage of PDSC Debug Description
  16. RHEL5.5配置sftp (已验证)
  17. [css]switch开关按钮,适用于移动端和IE9火狐谷歌
  18. 物联网行业网络解决方案_提供RFID物联网解决方案,东识科技将亮相IOTE 2019苏州物联网展...
  19. 蒙哥马利(Montgomery)算法简介
  20. CEO、CFO、CMO...这些职位你都知道吗?

热门文章

  1. 有趣的shuffle方法
  2. Cadence Allegro(4):M3铜柱定位孔,并添加至工程
  3. Qt音视频开发02-海康sdk解码(支持句柄/回调/GPU模式/支持win/linux)
  4. [做初中数学题做到打起来了]跟同事为了他小孩的数学题杠上了
  5. 在vps上安装vscodeserver
  6. WHERE CURRENT OF
  7. dd命令安装Linux安装教程详细步骤
  8. 元宇宙vs头号玩家:新世界最后的福音战士
  9. 数学中希腊字母的读法
  10. 美国西北大学计算机科学排名,2020年西北大学排名TFE Times美国最佳计算机科学硕士专业排名第35...