内核态与用户态是操作系统的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低
内核态可以拥有比用户态更大的权限
处于内核态的进程,可以访问用户进程空间(是虚拟地址空间),就是通过进程的页表(进程本身就是一个4G虚拟地址空间。其中用户空间的3G是独立的,内核空间是共享的)来访问用户地址空间对应的物理地址,从而访问用户空间
相反用户态的进程,只能访问用户地址空间(虚拟地址空间)
在内核态下,利用内核地址空间中的高端内存地址空间,来映射高端内存。获得的内存不能被用户态访问
就是直接读取地址的,通过系统调用进入内核的,仍然是和app属于同一个执行流,即是同一个进程,也即页表没有变化,所以完全可以直接读取
所谓缺页异常都是因为访问了页表没有映射的那些虚拟地址,但是在这个进程页表中,3G以下的区域是映射了的,所以完全可以直接读写
缺页异常需要在开启MMU的情况下才会有,假如你在uboot里面,你去直接读写那种根本不存在任何东西的地址,也是不会发生任何错误的。