1、用户态和内核态的概念
用户态:
程序运行在非特权状态,当前的进程只能使用当前进程的资源,不能进入其他的进程空间或内核空间。
内核态:
简单的理解为,所有的系统资源都可以使用。
2、用户态和内核态的切换方式有三种
系统调用
比如调用fork()函数产生进程的时候。程序异常
比如5/0,当除数为0的时候,就会产生异常。设备中断
当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。