在内存管理实验中,我总能看到对这两条宏定义的使用,从字面意义上来看,应该是将地址在虚拟地址和物理地址之间转换,但我在kernel/common/mmu.h中找到这两条宏定义时产生了疑问:
#define phys_to_virt(x) ((vaddr_t)((paddr_t)(x) + KBASE))
#define virt_to_phys(x) ((paddr_t)((vaddr_t)(x) - KBASE))
从宏定义来看,只是单纯地对地址作了加减而已。那么从虚拟地址到物理地址的映射为什么会这么简单呢。。?还是说,对于每个进程来说,内核态虚拟地址的映射都只是作了线性的加减呢?
(可能问题过于简单,请问是否是书中已经讲解但是我没有注意到,以及大佬们能推荐一些与这一点有关的资料吗。。)