2. 用户态和内核态
2.1 用户态和内核态的区别
用户态(User Mode)和内核态(Kernel Mode)是操作系统为了保护系统资源和实现权限控制而设计的两种不同的CPU运行级别,可以控制进程或程序对计算机资源的访问权限和操作范围
- 用户态:在⽤户态下,进程或程序只能访问受限的资源和执⾏受限的指令集,不能直接访问操作系统的核⼼部
分,也不能直接访问硬件资源。 - 核⼼态:核⼼态是操作系统的特权级别,允许进程或程序执⾏特权指令和访问操作系统的核⼼部分。在核⼼态下,进程可以直接访问硬件资源,执⾏系统调⽤,管理内存、⽂件系统等操作。
2.2 什么时候发生切换?
- 系统调用:当⽤户程序需要请求操作系统提供的服务时,会通过系统调⽤进⼊内核态。
- 异常:当程序执⾏过程中出现错误或异常情况时,CPU会⾃动切换到内核态,以便操作系统能够处理这些异常。
- 中断:外部设备(如键盘、⿏标、磁盘等)产⽣的中断信号会使CPU从⽤户态切换到内核态。操作系统会处理这些中断,执⾏相应的中断处理程序,然后再将CPU切换回⽤户态。