用户态和内核态区别
1.操作系统的两种CUP状态
内核态:运行操作系统程序,操作硬件
用户态:运行用户程序
2.指令划分
特权指令
只能是操作系统使用,而用户程序不能使用的指令
启动I/O,内存清零,修改程序状态字,设置时钟,允许/禁止终端,停机
非特权指令
用户可以使用的指令
控制转移,算数运算,取数指令,访管指令(使用户程序从用户态陷入内核态)
3.特权级别
特权环:R0,R1,R2,R3;R0相当于内核态;R3相当于用户态
不同级别的特权运行不同的指令集
4.CPU状态之间的转换
用户态--》内核态
通过中断,异常,陷入机制(访管指令)
内核态--》用户态
设置程序状态字PSW
6.用户态到内核态的切换
系统调用
切换方式:主动切换;用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作
核心:使用操作系统为用户特别开放的一个中断来实现;例如linux的 int 8oh中断
用户调用库函数,库函数在调用系统调用;
异常
当CPU执行运行在用户态下的程序时,发生了某些事先不可知的异常,如缺页异常
这是会触发由当前运行程序切换到处理此异常的内核程序中,也就转到了内核态
外围设备的中断
5.用户态与内核态的区别
用户态和内核态都是操作系统的两种运行级别
当程序运行在R3级特权级别时,称它运行在用户态
大部分用户直接运行的程序都是运行在用户态
当程序运行在0级特权级别时,称之为运行在内核态
访问内核资源
运行在用户态的程序不能直接访问操作系统内核数据结构和程序
系统中执行的程序,大部分时间运行在用户态下
当用户态程序想要访问内核对象时,需要切换到内核态
执行时状态
用户态执行程序时
进程所能访问的内存空间和对象受到限制
进程所占有的处理器是可以被抢占的
内核态执行程序时
能访问所有的内存空间和对象
进程占用的处理器是不允许被抢占的
参考文献: