linux打电话命令 shell命令拨打电话

面试官:什么是软中断?【linux打电话命令 shell命令拨打电话】 先来看看什么是中断?在计算机中linux打电话命令,中断是系统用来响应硬件设备请求linux打电话命令的一种机制,操作系统收到硬件的中断请求,会打断正在执行的进程,然后调用内核中的中断处理程序来响应请求 。
这样的解释可能过于学术linux打电话命令了,容易云里雾里,我就举个生活中取外卖的例子 。
小林中午搬完砖,肚子饿linux打电话命令了,点了份白切鸡外卖 , 这次我带闪了,没有被某团大数据大熟 。虽然平台上会显示配送进度,但是我也不能一直傻傻地盯着呀,时间很宝贵,当然得去干别的事情 , 等外卖到了配送员会通过「电话」通知我 , 电话响了,我就会停下手中地事情,去拿外卖 。
这里的打电话,其实就是对应计算机里的中断,没接到电话的时候,我可以做其他的事情,只有接到了电话,也就是发生中断,我才会停下当前的事情,去进行另一个事情,也就是拿外卖 。
从这个例子 , 我们可以知道,中断是一种异步的事件处理机制,可以提高系统的并发处理能力 。
操作系统收到了中断请求 , 会打断其他进程的运行,所以 中断请求的响应程序,也就是中断处理程序,要尽可能快的执行完,这样可以减少对正常进程运行调度地影响 。
而且,中断处理程序在响应中断时,可能还会「临时关闭中断」,这意味着,如果当前中断处理程序没有执行完之前,系统中其他的中断请求都无法被响应,也就说中断有可能会丢失,所以中断处理程序要短且快 。
还是回到外卖的例子 , 小林到了晚上又点起了外卖,这次为了犒劳自己,共点了两份外卖,一份小龙虾和一份奶茶,并且是由不同地配送员来配送,那么问题来了,当第一份外卖送到时,配送员给我打了长长的电话,说了一些杂七杂八的事情,比如给个好评等等,但如果这时另一位配送员也想给我打电话 。
很明显,这时第二位配送员因为我在通话中(相当于关闭了中断响应),自然就无法打通我的电话,他可能尝试了几次后就走掉了(相当于丢失了一次中断) 。
前面我们也提到了,中断请求的处理程序应该要短且快,这样才能减少对正常进程运行调度地影响 , 而且中断处理程序可能会暂时关闭中断,这时如果中断处理程序执行时间过长,可能在还未执行完中断处理程序前,会丢失当前其他设备的中断请求 。
那 Linux 系统 为了解决中断处理程序执行过长和中断丢失的问题,将中断过程分成了两个阶段,分别是「上半部和下半部分」。
前面的外卖例子 , 由于第一个配送员长时间跟我通话,则导致第二位配送员无法拨通我的电话,其实当我接到第一位配送员的电话,可以告诉配送员说我现在下楼,剩下的事情,等我们见面再说(上半部),然后就可以挂断电话,到楼下后,在拿外卖,以及跟配送员说其他的事情(下半部) 。
这样,第一位配送员就不会占用我手机太多时间,当第二位配送员正好过来时,会有很大几率拨通我的电话 。
再举一个计算机中的例子,常见的网卡接收网络包的例子 。
网卡收到网络包后,会通过 硬件中断 通知内核有新的数据到了,于是内核就会调用对应的中断处理程序来响应该事件,这个事件的处理也是会分成上半部和下半部 。
上部分要做到快速处理 , 所以只要把网卡的数据读到内存中,然后更新一下硬件寄存器的状态 , 比如把状态更新为表示数据已经读到内存中的状态值 。

推荐阅读