高级C/C++编译技术(典藏版)
上QQ阅读APP看书,第一时间看更新

1.4 虚拟地址

虚拟地址的概念是虚拟内存实现中最为基础的一个部分,并在很多方面会对编译器和链接器的设计产生十分重要的影响。

一般来说,程序设计者完全不用关心程序运行时所占用的地址范围(至少,对绝大多数用户空间的应用程序来说确实如此,但内核模块是个例外)。取而代之的是,编程模型假定地址空间的范围是0~2N(虚拟地址范围),而且这个规则对所有程序适用。

在代码开发过程中,为所有程序采用简单且统一的地址模式能够带来许多好处。采用这一模式的好处如下:

● 简化链接过程。

● 简化加载过程。

● 实现运行时进程间共享。

● 简化内存分配机制。

操作系统利用地址翻译机制,对固定地址范围内的程序内存进行实际的运行时分配。该实现通过名为内存管理单元(MMU)的硬件模块完成,不需要程序本身的任何介入。

图1-4对简单的物理地址方案(该方案现如今用于简单微控制系统领域)和虚拟地址机制进行了比较。

图1-4 物理地址和虚拟地址