特权级
CPU可以在不同的特权级别下执行指令,通常有两种特权级别,用户模式(用户态)、内核模式(内核态)。
为什么要有特权级的出现?
有了多种特权级模式的存在,操作系统就可以让不同的代码运行在不同的模式上,以达到限制他们权利,提高稳定性和安全性的目的。
程序运行在用户模式和内核模式下有什么区别呢?
普通应用程序运行在用户态的模式下。诸多操作将受到限制,包括访问硬件资源设备、开关中断、改变特权模式等。
一般来说,高特权级是可以降低至低特权级,但是低特权级不能提升自己为高特权级。
中断
系统调用是运行在内核态,普通应用程序运行在用户态,那么普通应用程序怎样调用系统调用呢?
这就牵扯出了一个名词 —中断。
何谓中断呢?
官方一点的语言是: 中断是一个硬件或者软件发出的请求,要求CPU暂停当前的工作转手去处理更加重要的事情。
举两个例子:
1.当我们按下键盘时,键盘会发送一个信号给CPU,CPU 接收到信号后会询问键盘是那个键被按下的。这个信号就是一种中断
2.当我们的网卡接受到数据后,会把数据复制到内存中,然后会发送一个信号给内核,内核从内存中找到数据,然后按照网络协议栈,对数据进行解析和处理,最后把数据发送给应用程序。这个信号就是中断。
中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。