中断机制的诞生
早期的计算机程序只能串行执行,什么意思呢,就是计算机只能处理一个程序,这个程序处理完了,下一个程序才能拿到计算机里来运行,这样就大大降低了资源利用率。为了解决这个问题,人们就发明了操作系统,从而引入了中断机制,实现了多道程序并发执行。事实上,我们只要知道,发生中断就意味着需要操作系统介入,开展管理工作.
中断的概念及作用
下面我们大概来看看过程
如图所示,因为中断的引入,我们可以实现多道程序并发执行。我们来模拟一下中断过程,
进程1时间片用完了,计时器向CPU发出中断信号,CPU就会切换为核心态,这个时候就是将管理权交到了操作系统的手上,操作系统的内核就会对中断信号做处理,也就是停止进程1,让进程2运行,处理完之后会用指令再转换成用户态,这个时候进程2就开始运行了;当进程2运行一段时间后,他想输出,但I/O这是特权指令,他就得申请,他就发出系统调用(内中断信号),这是CPU转到核心态,交给操作系统处理,操作系统会根据进程2的请求,让打印机打印,进程2停止运行去等待打印机,换进程3运行,再转回用户态,这时当打印机完成了,他会向CPU发出中断信号,告诉他自己完成了,CPU又转换为核心态交给操作系统,操作系统就让进程2恢复,完成后续工作。再转成用户态,进程2继续执行。
通过上面的栗子,我们不难看出,只要CPU一收到中断信号,他就要转成核心态,用户程序停止运行,操作系统内核对中断处理完之后,转回用户态,用户程序按操作系统的安排继续运作。
最最最重要的:用户态转核心态,有且仅有中断这一种方法,核心态转用户态是通过执行一个特权指令,将程序状态字的标志位设置为用户态中断分类
内中断和外中断区别的根本在于中断信号的来源,内中断是来自CPU内部,与当前执行的指令有关,比如说时间片用完了,计时器向CPU发中断信号;外中断来自于CPU外部,与当前执行的指令无关,比如说刚刚的打印机发给CPU它打印结束了。