内核态与用户态的主要区别在于特权级;
例如用户态程序无法访问内核的数据结构或操作函数;
内核态
主要指的是能够执行特权级为0的程序
用户态
主要指的是能够执行特权级为3的程序
用户态与内核态互转的三种方式:系统调度(例如fork)、异常(缺页异常)、外围设备的中断;
异常:当CPU正在执行运行在用户态的程序时,突然发生某些预先不可知的异常事件,这个时候就会触发从当前用户态执行的进程转向内核态执行相关的异常事件,典型的如缺页异常。
外围设备的中断:当外围设备完成用户的请求操作后,会像CPU发出中断信号,此时,CPU就会暂停执行下一条即将要执行的指令,转而去执行中断信号对应的处理程序,如果先前执行的指令是在用户态下,则自然就发生从用户态到内核态的转换。
分层架构: