用通俗易懂的语言来阐述一些基本概念,不涉及代码,小白也能看得懂。
中断是什么
意思就是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
中断是一种计算机术语。通俗点说就是停下当前的执行程序转而执行新的程序。 执行完后再返回执行之前的程序。
为什么要有中断
因为外围设备和CPU处理速度不对等。就好比电脑的处理速度和你键盘打字的输入速度,电脑处理速度非常快,如果一直等待你输入,那样非常浪费资源。
更通俗的说,老板说明天给你打电话,然后你明天一直抱着手机等待电话,什么事都不做。这显然不符合我们的处理方式。我可以选择打开手机铃声,老板电话过来了铃声提醒我们接电话。
所以能让设备在需要内核时主动通知内核,是一个聪明的方式,这便是中断。 当你需要使用调用资源时,给他一个信号,CPU便会处理你的信号。
中断和轮询的差异
中断是被动的接收信号,轮询是主动的询问有无信号
通俗的说:中断就是别人打电话给你,你听到铃声,然后放下手中的事去接电话。
轮询就是每隔一段时间,你主动看一下手机有没有短信。
综上所述 轮询:主动 实时 可控
中断:被动 随机 不可控
中断和轮询的使用场合
因为轮询是主动、实时、可控的,所以我们可以用轮询来处理一些比较确定的信号量。
对于随机 不可控的信号量,若是采用轮询,将会错过重要信息,或者浪费大量时间,这时候我们就该用中断。
比如:老板说,明天九点准时通知你。因为时间都确定了,我们只需明天九点查看一下信息就行, 又或者,UP主每天晚上8点更新,我们也只需要每天8点之后去看一下就行,这时候采用轮询。
但是如果他们没说时间,你又不想错过。你要么选择一直等待,要么过一会就看一眼,(这是轮询),这样就浪费了大量的时间。所以对于随机不可控的信号,我们选择中断。
什么是中断上下文
顾名思义:上文就是准备环境,诸如保存现场之类的, 具体如何做到的暂时不用深究,有兴趣自行度娘。
中断下文就是:执行在内核空间的中断服务程序。
说到下文要引入一个概念:中断要即时响应,但是可以不立刻执行。
例如:女朋友打电话来约你逛街,你要马上接,但是可以晚点再为逛街做准备。
综上所述: 中断上文负责响应,中断下文负责处理。