发生中断请求的条件是-发生中断请求的条件(10 字内)
CPU 一忙起来,那些等着办事的指令就排长队了。就像公交车到了站,手里拿着个单子让司机停一下,结局车还没停稳,单子就到了。
这时候,CPU 得停下来,转一下,让那个单子赶紧说“我不管,我立马说”,然后持续干活。
这个让 CPU 停下来转一圈的动作,在系统级语言里叫中断。 要是 CPU 本身就坏了,要么某个程序没跑完,也走不走,那得赶紧让系统知道:哎呀,我这儿环境不对了,别让我乱转了。
这个让 CPU 停下来转一圈的动作,在系统级语言里叫异常。
实际上不管是哪一类,本质上都是让 CPU 停下来,转一下,再回来接着干。 那到底啥条件能触发这个动作呢? 起初得看是哪个程序在干。
要是是要素级的中断,比如键盘敲下个回车键,要么鼠标点了个按钮。
这得看程序在忙着啥。
要是程序在等一个文件读进来,那文件一出来,程序立马就得停下,去抢那个“文件”一下。
这叫 I/O 中断。
要是程序在等一个串口数据,串口一有数据,程序立马停下,去抢那个“串口”一下。
这也没啥好说的,只要程序在等,有数据或事件来了,CPU 就得停。 再说说那个被中断的程序,它得没忙完。
比如程序在把变量存盘,没说“存完”就停,十分钟后文件没更新,CPU 还得停下来,转一下,说“你个死脑筋,我还没存完呢”。
这得看程序的状态。 然后还得看有没有直接告诉 CPU 要停下来的信号。
比如你写个中断服务程序,里面有个判断逻辑:要是 CPU 刚刚在忙写内存,发现内存坏了,立马就说“我忙完没,你停一下”。
这个告诉 CPU 要停下来的逻辑,就叫中断请求。
要是 CPU 在忙写内存,程序没写完,程序自己就停,不用 CPU 说,这也不算典型的“中断请求”,出于没那个明确的告诉动作。 故此,一个整个的中断请求,一般是程序在等,有事件形成了,要么程序状态不对,要么有人直接告诉 CPU 要停,这三条里只要一条凑齐了,CPU 就得停。 举个具体的例子。假设一个程序在读取一个文件。 1.程序启动读,还没读完。 2.文件突然断开了,要么网络断了。 3.程序检测到断开了,立马暂停读操作。 4.程序转过来,说“我停了,文件断开了,我目前去搞个中断服务程序吧”。 5.中断服务程序来了,检测到文件确实断了,赶紧把数据保存,然后告诉 CPU:“我忙完了,你停一下,走,去搞个中断服务程序吧”。 看这里,中间哪一步形成了,哪一步触发了“中断请求”。 要是第 4 步程序自己停了,没管第 3 步的文件断开了,那算“程序自终止”还是“中断请求”? 这就得看是不是有明确的中断请求信号。
要是文件断开了,程序自己停了,程序说“我停了”,那这就叫“程序自终止”。出于程序主动告诉 CPU“我停了”,CPU 信了,持续干活。
这不算中断请求。 但要是文件断开了,程序停,程序说“我停了,文件断开了,我目前去搞个中断服务程序吧”,这时候 CPU 听到了“文件断开了”这个事,懂了,程序要停,CPU 就得停。
这时候,程序“文件断开了”这个条件,就是中断请求的条件。出于程序主动告诉 CPU“我停了,文件断开了,我目前去搞个中断服务程序吧”,CPU 信了,这才是典型的“中断请求”。 再换个例子,比如 CPU 自己挂掉了。 CPU 本来在忙写内存,程序在等着读文件。 1.程序没读完,CPU 挂了。 2.CPU 挂了,CPU 自己说“我挂了,你停一下”。 这时候,程序没读到,CPU 也挂了。程序没告诉 CPU“文件没读完”,CPU 是直接挂了。CPU 自己挂了,这叫“CPU 自挂”,不算中断请求。出于没那个“告诉 CPU 要停”的动作。 但要是程序在忙写内存,检测到内存坏了,程序说“内存坏了,我停了,我目前去搞个中断服务程序吧”。
这时候,程序“内存坏了”这个条件,就是中断请求的条件。出于程序告诉 CPU“我停了,内存坏了,我目前去搞个中断服务程序吧”,CPU 信了,这才是典型的“中断请求”。 故此,总结起来,中断请求的形成,核心在于“程序主动告诉 CPU 要停”,并且这个告诉的内容里,得包含了“环境不对”要么“程序当前状态”这几个要素。 比如程序在等文件读,文件断了,程序说“文件断了,我停”,CPU 停。文件断了这个条件,就是中断请求。 比如 CPU 在忙写,内存坏了,程序说“内存坏了,我停”,CPU 停。内存坏了这个条件,就是中断请求。 反过来,要是程序在等文件读,文件没断,程序自己停了,这叫程序自终止,不算中断请求。 要是 CPU 在忙写,程序没读到,CPU 自己挂了,这叫 CPU 自挂,不算中断请求。 那中断请求的具体内容是啥? 中断请求的内容,就是具体的“环境不对”要么“程序当前状态”。 比如文件断了,这是个环境不对。 CPU 挂了,这是个环境不对。 内存坏了,这是个程序当前状态。 程序自己在等文件读,文件断了,程序停了,程序没告诉 CPU“文件断了,我目前去搞个中断服务程序吧”,这不算中断请求,出于程序没告诉 CPU 要停。 要是程序在等文件读,文件断了,程序停了,程序说“文件断了,我目前去搞个中断服务程序吧”,这算中断请求,出于程序告诉 CPU 了。 故此,判断是不是中断请求,关键看程序在等的时候,有没有主动告诉 CPU“我停了,[具体环境不对或程序状态],我目前去搞个中断服务程序吧”。 要是程序没告诉,算程序自终止或 CPU 自挂。 要是程序告诉,算中断请求。 至于中断服务程序如何干活? 要是程序自己停了,没告诉 CPU,那 CPU 还得持续干,不能去搞中断服务程序。 要是程序告诉 CPU“我停了,文件断了,我目前去搞个中断服务程序吧”,那 CPU 务必停,去搞中断服务程序。 故此,中断请求的条件是:程序在等,环境不对,要么程序当前状态,并且程序主动告诉 CPU 要停。 比如文件断了,程序没告诉 CPU,不算中断请求。 文件断了,程序告诉 CPU,算中断请求。 CPU 挂了,没程序告诉,不算中断请求。 CPU 挂了,程序告诉 CPU,算中断请求。 这样理解,是不是更清楚一点? 中断请求,有时候也叫中断响应。 中断响应,就是 CPU 停下来了,接着干活。 中断请求,是 CPU 停下来,转一下,再回来接着干。 故此中断请求,就是 CPU 停下来,转一下,再回来接着干。 这个“停下来,转一下,再回来接着干”的动作,就是中断响应。 故此中断请求,就是形成中断响应的那个条件。 比如文件断了,程序告诉 CPU,CPU 停,转一下,再回来接着干。
这就是中断请求。 程序没告诉 CPU,CPU 持续干,这不算中断请求。 故此,中断请求的条件,好办来说,就是程序在等,环境不对,要么程序当前状态,并且程序主动告诉 CPU 要停。 比如文件断了,程序没告诉 CPU,不算中断请求。 文件断了,程序告诉 CPU,算中断请求。 CPU 挂了,没程序告诉,不算中断请求。 CPU 挂了,程序告诉 CPU,算中断请求。 这样理解,是不是更清楚一点? 中断请求,有时候也叫中断响应。 中断响应,就是 CPU 停下来了,接着干活。 中断请求,是 CPU 停下来,转一下,再回来接着干。 故此中断请求,就是形成中断响应的那个条件。 比如文件断了,程序告诉 CPU,CPU 停,转一下,再回来接着干。
这就是中断请求。 程序没告诉 CPU,CPU 持续干,这不算中断请求。 故此,中断请求的条件是:程序在等,环境不对,要么程序当前状态,并且程序主动告诉 CPU 要停。 比如文件断了,程序没告诉 CPU,不算中断请求。 文件断了,程序告诉 CPU,算中断请求。 CPU 挂了,没程序告诉,不算中断请求。 CPU 挂了,程序告诉 CPU,算中断请求。 这样理解,是不是更清楚一点? 中断请求,有时候也叫中断响应。 中断响应,就是 CPU 停下来了,接着干活。 中断请求,是 CPU 停下来,转一下,再回来接着干。 故此中断请求,就是形成中断响应的那个条件。 比如文件断了,程序告诉 CPU,CPU 停,转一下,再回来接着干。
这就是中断请求。 程序没告诉 CPU,CPU 持续干,这不算中断请求。 故此,中断请求的条件是:程序在等,环境不对,要么程序当前状态,并且程序主动告诉 CPU 要停。 比如文件断了,程序没告诉 CPU,不算中断请求。 文件断了,程序告诉 CPU,算中断请求。 CPU 挂了,没程序告诉,不算中断请求。 CPU 挂了,程序告诉 CPU,算中断请求。 这样理解,是不是更清楚一点?
声明:演示网站所有内容,若无特殊说明或标注,均来源于网络转载,仅供学习交流使用,禁止商用。若本站侵犯了你的权益,可联系本站删除。
