虚拟内存管理

csf1095098329 2016-04-01 03:00:53
虚拟内存管理起到了什么作用呢?可以从以下几个方面来理解。
第一,虚拟内存管理可以控制物理内存的访问权限。物理内存本身是不限制访问的,任何地址
都可以读写,而操作系统要求不同的页面具有不同的访问权限,这是利用CPU模式和MMU的内
存保护机制实现的。例如, Text Segment被只读保护起来,防止被错误的指令意外改写,内核
地址空间也被保护起来,防止在用户模式下执行错误的指令意外改写内核数据。这样,执行错
误指令或恶意代码的破坏能力受到了限制,顶多使当前进程因段错误终止,而不会影响整个系
统的稳定性。
第二,虚拟内存管理最主要的作用是让每个进程有独立的地址空间。所谓独立的地址空间是
指,不同进程中的同一个VA被MMU映射到不同的PA,并且在某一个进程中访问任何地址都不
可能访问到另外一个进程的数据,这样使得任何一个进程由于执行错误指令或恶意代码导致的
非法内存访问都不会意外改写其它进程的数据,不会影响其它进程的运行,从而保证整个系统
的稳定性。另一方面,每个进程都认为自己独占整个虚拟地址空间,这样链接器和加载器的实
现会比较容易,不必考虑各进程的地址范围是否冲突。
...全文
164 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
皇御雷霆 2016-04-01
  • 打赏
  • 举报
回复
csf1095098329 2016-04-01
  • 打赏
  • 举报
回复
第三, VA到PA的映射会给分配和释放内存带来方便,物理地址不连续的几块内存可以映射成虚 拟地址连续的一块内存。比如要用malloc分配一块很大的内存空间,虽然有足够多的空闲物理 内存,却没有足够大的连续空闲内存,这时就可以分配多个不连续的物理页面而映射到连续的 虚拟地址范围。 第四,一个系统如果同时运行着很多进程,为各进程分配的内存之和可能会大于实际可用的物 理内存,虚拟内存管理使得这种情况下各进程仍然能够正常运行。因为各进程分配的只不过是 虚拟内存的页面,这些页面的数据可以映射到物理页面,也可以临时保存到磁盘上而不占用物 理页面,在磁盘上临时保存虚拟内存页面的可能是一个磁盘分区,也可能是一个磁盘文件,称 为交换设备( Swap Device) 。当物理内存不够用时,将一些不常用的物理页面中的数据临时保 存到交换设备,然后这个物理页面就认为是空闲的了,可以重新分配给进程使用,这个过程称 为换出( Page out) 。如果进程要用到被换出的页面,就从交换设备再加载回物理内存,这称 为换入( Page in) 。换出和换入操作统称为换页( Paging) ,因此: 系统中可分配的内存总量 = 物理内存的大小 + 交换设备的大小

742

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨Linux系统在IBM Power平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • Power Linux社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧