虚拟内存管理的作用/好处

From: http://blog.csdn.net/tommy_wxie/article/details/8668406

1.读写内存的安全性

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

2.虚拟内存管理最主要的作用是让每个进程有独立的地址空间(进程间的安全)

所谓独立的地址空间是指,不同进程的同一个VA被MMU映射到不同的PA,并且在某一个进程中访问任何地址都不可能访问到另一个进程的数据,这样使得任何一个进程由于执行错误指令或恶意代码导致的非法内存访问都不会意外改写其他进程的数据,不会影响其他进程的运行,从而保证整个系统的稳定性。另一方面,每个进程都认为自己独占整个虚拟地址空间,这样连接器和加载器的实现会比较容易,不必考虑各进程的地址范围是否冲突。

        现在我们也可以理解为什么共享库必须是位置无关代码。比如libc,不同进程虽然共享libc所在的物理页面,但这些物理页面被映射到个进程的虚拟地址空间却位于不同的地址,所以要求libc的代码不管加载到什么地址都能正确执行。

3.VA(虚拟地址)到PA( 物理地址)的映射会给分配和释放内存带来方便

物理地址不连续的几块内存可以映射成虚拟地址连续的一块内存。比如要用malloc分配一块很大的内存空间,虽然有足够的空闲物理内存,却没有足够大的连续空闲内存,这时就可以分配多个不连续的物理页面而映射到连续的虚拟地址范围。

4.一个系统如果同时运行着很多进程,为各进程分配的内存之和可能会大于实际的可用物理内存,虚拟内存管理使得这种情况下各进程仍然能够正常运行

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



因此

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


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值