在内核态能够直接操作的地址一定必须是0xc0000000-0xffffffff之间的,这个范围之外的地址都会发生缺页异常,要访问用户态的地址空间的话,只能先将用户地址空间转换到内核地址空间;
用户空间地址-》物理地址-》内核空间地址-》操作
比如在内核态要将0x08048100处的赋值10;
先通过0x08048100查页表得到其物理地址A,
如果A<896M,那么就 *(0xc000_0000+A)=10;
如果A>896M(高端内存),就需要通过内核动态映射区将物理地址A映射到内核地址空间B,然后*B=10;
B的值在范围(0xc0000000+896M,0xffffffff)之间;