用户态和内核态区别
是什么?
用户态和内核态是机器划分的不同的运行环境。
为什么
要避免程序随意直接访问操作系统内核数据结构和程序,这样会导致程序之间无规则的竞争和信息随意被访问。
怎么用
- 系统调用:通过操作系统提供的系统调用函数来实现切换。系统调用的本质是中断。
- 异常事件:当CPU正在执行运行在用户态的程序时,突然发生某些预先不可知的异常,必须要先切换到内核态处理系统的异常==,典型的如缺页异常。
- 外围设备的中断:当外部设备在用户态下完成用户的请求操作后,会向CPU发出中断信号,CPU就会暂停执行下一条即将要执行的指令,这时候就会切换到内核态,转而去执行中断信号对应的处理程序。
注意:系统调用的本质其实也是中断,相对于外围设备的硬中断,这种中断称为软中断。从触发的对象来看,系统调用是进程主动请求切换的,而异常和硬中断则是被动的。