天天看點

程式中斷和調用子程式有何差別

兩者的根本差別表現在服務時間和服務對象上不一樣。

1)調用子程式發生的時間是已知的和固定的,即在主程式的調用指令(CALL)執行時發生主程式調用子程式過程,調用指令所在位置是已知的和固定的;而中斷過程發生的時間一般是随機的,CPU在執行某一主程式時受到中斷源提出的中斷申請,就發生中斷過程,而中斷申請一般由硬體電路産生,申請時間是随機的。也可以說,調用子程式是程式設計者事先安排好的,而執行中斷服務程式是由系統工作環境随機決定的。

2)子程式完全為主程式服務,兩者屬于主從關系。主程式需要子程式時就去調用子程式,并把調用結果帶回主程式繼續執行。而中斷服務程式與主程式二者一般是無關的,兩者是平行關系。

3)主程式調用子程式的過程完全屬于軟體處理過程,不需要專門的硬體電路,而中斷處理系統是一個軟、硬體結合的系統,需要專門的硬體電路才能完成中斷處理的過程。

4)子程式嵌套可以實作若幹級,嵌套的最多級數受計算機記憶體開辟的堆棧大小限制;而中斷嵌套級數主要由中斷優先級來決定,一般優先級不會很大。

從宏觀上看,雖然程式中斷方式克服了程式查詢方式中CPU"踏步"現象,實作了CPU與IO并行工作,提高了CPU的資源使用率,但從微觀操作分析,CPU在進行中斷程式時,仍需暫停原程式的正常運作,尤其是當高速I/O裝置或輔助存儲器頻繁地、成批地與主存交換資訊時,需不斷打斷CPU執行現行程式,而執行中斷服務程式。