在运行boot loader时,boot loader中的链接地址(虚拟地址)和加载地址(物理地址)是一样的。但是当进入到内核程序后,这两种地址就不再相同了。
操作系统内核程序在虚拟地址空间通常会被链接到一个非常高的虚拟地址空间处,比如0xf0100000,目的就是能够让处理器的虚拟地址空间的低地址部分能够被用户利用来进行编程。
但是许多的机器其实并没有能够支持0xf0100000这种地址那么大的物理内存,所以我们不能把内核的0xf0100000虚拟地址映射到物理地址0xf0100000的存储单元处。
这就造成了一个问题,在我们编程时,我们应该把操作系统放在高地址处,但是在实际的计算机内存中却没有那么高的地址,这该怎么办?