虚拟内存管理
虚拟内存管理起到了什么作用呢?可以从以下几个方面来理解。
第一,虚拟内存管理可以控制物理内存的访问权限。物理内存本身是不限制访问的,任何地址
都可以读写,而操作系统要求不同的页面具有不同的访问权限,这是利用CPU模式和MMU的内
存保护机制实现的。例如, Text Segment被只读保护起来,防止被错误的指令意外改写,内核
地址空间也被保护起来,防止在用户模式下执行错误的指令意外改写内核数据。这样,执行错
误指令或恶意代码的破坏能力受到了限制,顶多使当前进程因段错误终止,而不会影响整个系
统的稳定性。
第二,虚拟内存管理最主要的作用是让每个进程有独立的地址空间。所谓独立的地址空间是
指,不同进程中的同一个VA被MMU映射到不同的PA,并且在某一个进程中访问任何地址都不
可能访问到另外一个进程的数据,这样使得任何一个进程由于执行错误指令或恶意代码导致的
非法内存访问都不会意外改写其它进程的数据,不会影响其它进程的运行,从而保证整个系统
的稳定性。另一方面,每个进程都认为自己独占整个虚拟地址空间,这样链接器和加载器的实
现会比较容易,不必考虑各进程的地址范围是否冲突。