Linux所谓的用户态和内核态,本质是对CPU提供的功能的一层封装抽象。
本质上是线程对计算机资源使用的级别。
从特权级理来解用户态和内核态,就是当程序运行在3级特权级上时,就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;反之,当程序运行在0级特权级上时,就可以称之为运行在内核态。
最重要的差别就在于特权级的不同,即权力的不同。
1)用户态切换到内核态的3种方式
a. 系统调用
b. 异常
c. 外围设备的中断
这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。



