為了方便理解,先說說生活中的例子。
小明在看書,看完一頁,要完成翻頁,才能繼續看。小明已經連續看書很長時間了,突然聽到媽媽喊吃飯,於是他停止看書,去吃飯。吃完飯,回來接著看書。
“看書”這個任務就相當於處理器執行的“主程式”,“翻頁”、“吃飯”這兩個任務就相當於“子程式”。唯一的不同,就是處理器執行主程式是無休止的,相當於小明要無窮無盡地看著書。
“翻頁”這個子程式是自然而然要去做的,是一個普通的子程式;而“吃飯”這個子程式是被特定條件(媽媽喊)打斷並執行的,這就相當於“中斷”。
在主程式迴圈執行的過程中,會按需求呼叫一系列的子程式,以完成人們指定的任務。當然,要滿足特定條件的子程式才會被處理器執行。
當中斷條件滿足時(比如計時器溢位),處理器就會停下主程式,轉而執行中斷所對應的子程式。
當然,中斷也是有優先順序的。例如,小明正吃飯,突然尿急,於是他得先去上廁所,之後再回來接著吃飯。例子當中,“上廁所”就比“吃飯”優先順序要高。也就是說,高優先順序的中斷訊號,會打斷底優先順序的中斷任務。相同優先順序的中斷任務,就按照發生的先後順序依次執行。
為了方便理解,先說說生活中的例子。
小明在看書,看完一頁,要完成翻頁,才能繼續看。小明已經連續看書很長時間了,突然聽到媽媽喊吃飯,於是他停止看書,去吃飯。吃完飯,回來接著看書。
“看書”這個任務就相當於處理器執行的“主程式”,“翻頁”、“吃飯”這兩個任務就相當於“子程式”。唯一的不同,就是處理器執行主程式是無休止的,相當於小明要無窮無盡地看著書。
“翻頁”這個子程式是自然而然要去做的,是一個普通的子程式;而“吃飯”這個子程式是被特定條件(媽媽喊)打斷並執行的,這就相當於“中斷”。
在主程式迴圈執行的過程中,會按需求呼叫一系列的子程式,以完成人們指定的任務。當然,要滿足特定條件的子程式才會被處理器執行。
當中斷條件滿足時(比如計時器溢位),處理器就會停下主程式,轉而執行中斷所對應的子程式。
當然,中斷也是有優先順序的。例如,小明正吃飯,突然尿急,於是他得先去上廁所,之後再回來接著吃飯。例子當中,“上廁所”就比“吃飯”優先順序要高。也就是說,高優先順序的中斷訊號,會打斷底優先順序的中斷任務。相同優先順序的中斷任務,就按照發生的先後順序依次執行。