上QQ阅读APP看书,第一时间看更新
1.1.1 所谓地址空间的错觉
现代计算平台有望有效地处理大量的进程。因此,操作系统必须处理在物理内存(通常是有限的)中为所有并发的进程分配唯一的内存,并确保其可靠的执行。由于多个进程同时发生并执行(多任务),操作系统必须确保每个进程的内存分配都得到保护,以免被另一进程意外访问。
为了解决这个问题,内核在进程和物理内存之间提供了一层抽象,称为虚拟地址空间。虚拟地址空间是进程的内存视图。那么,运行中的程序是如何看待内存的呢?
虚拟地址空间创建了一个假象,即每个进程在执行过程中独占整个内存。这种抽象的内存视图称为虚拟内存,它是由内核的内存管理器与CPU的MMU协调实现的。每个进程都有一个连续的32位或64位地址空间,这个地址空间被体系结构所限定,并且对于该进程是唯一的。通过MMU,每个进程装入其虚拟地址空间中,任何进程尝试访问其边界之外的地址区域都会触发硬件故障,从而使内存管理器能够检测和终止违反的进程,这样就确保进程得到了保护。
图1-2所示为每个不同进程创建地址空间的假象。
图1-2