IT门户, 中国互联网人工智能物联网行业资讯平台--公众IT
新闻来源:互联网资料整理       发布时间:2023/4/7 3:07:15       共计:4652 浏览

电脑上有个硬件设备叫做中断控制器,而CPU上若干个引脚,中断控制器的输出引脚会和CPU的输入引脚链接起来,如果发生中断,对应引脚会收到信号。CPU在执行完一个指令后就会去检查引脚上是否有信号来,如果有就去处理信号(也就是中断函数)。中断函数是提前准备好的(系统启动时),cpu收到信号就去执行。这些流程都是硬件完成的,我们只需要遵循规则就可以了。

所以在收到信号和信号处理函数执行之间,是CPU硬件在进行衔接处理。

有人可能会疑惑CPU每次执行完指令都去检测引脚信号会不会导致性能问题?实际上不会,这些都是硬件电路完成的,这个检测逻辑处理速度基本就是电信号传递速度,而目前CPU已经很小了,电信号那点传播距离所耗费的时间基本可以忽略。

----------下面是以前的-------

简单说下我的理解。

从CPU的角度看,它的工作就是一直读取指令,然后执行。如果没有意外,这个过程会一直持续下去。

程序是由指令序列组成的,CPU执行某个程序时,就是读取对应程序的指令并执行(不太严谨)。如果没有意外,这个过程就不会中断,直到所有的指令都执行完。

linux是分时操作系统,就是CPU时间会分为多个时间片,比如10毫秒一个时间片,程序执行一个时间片之后,操作系统会重新选择一个任务来执行。问题是CPU是怎么知道时间片到了呢?又是如何触发任务选择的呢?

关键原理就是CPU有个外部时钟,这是一个倒数计时器,初始时会设置一个数字,比如1000,然后每个时钟脉冲数字减一,减到0的时候,就给CPU发一个信号,CPU会中断当前程序,来处理这个信号,这个信号的处理程序会重置计时器,并执行信号处理函数,如此反复,起到了时间分片的效果。

信号处理函数可能会重新选择另一个任务来执行,这个就是进程切换。

当然这些都需要CPU在硬件层级进行支持,比如可以接受外部中断信号,暂停当前任务,转去执行信号处理函数。然后操作系统会利用这种底层机制,做出分时功能。

注:实际中,能打断当前程序的中断事件有很多种,包括硬中断和软中断两大类,可以到网上找到相关的资料研究研究

版权说明:
本网站凡注明“公众IT 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
您可以扫描右侧微信二维码联系我们。
网站首页 关于我们 联系我们 合作联系 会员说明 新闻投稿 隐私协议 网站地图