1.為什麼說中斷是程序切換的必要條件,但不是充分條件?
假如在時刻t1到時刻t2之間發生了程序切換,則在時刻t1與時刻t2之間一定執行了處理機排程程式,處理機排程程式是作業系統的乙個底層模組,執行於管態,說明在t1到t2時刻之間,處理機狀態曾有木態轉換到管態。由於中斷是系統由目態轉換為管態的必要條件,所以在時刻t1與時刻t2之間一定發生過中斷。也就是說,中斷是程序切換的必要條件,然而,中斷不是程序切換的充分條件。
比如說,乙個程序執行乙個系統呼叫命令將乙個訊息傳送給另外乙個程序,該命令的執行將通過中斷進入作業系統,作業系統處理完訊息傳送的工作後可能返回原呼叫程序,此時中斷並未導致程序切換;也可能選擇乙個新程序,此時中斷導致了程序切換。通俗點來講,就是程序切換一定發生過中斷,但是中斷不一定發生程序切換。
2.試分析中斷與程序狀態轉換之間的關係。
程序狀態轉換是由核心控制的,如果乙個程序的狀態發生了改變,則在新舊狀態之間一定發生了處理機狀態由目態到管態的轉換。而中斷是處理機狀態由目態轉換到管態的必要條件,所以中斷也是程序狀態轉換的必要條件。
3.中斷發生時,舊的psw和pc為何需要壓入系統棧?
保護斷點。採用棧結構的原因是中斷可能巢狀,此時能保證以與發生中斷相反的次序返回上層中斷處理程式或返回目態。在某些硬體系統中,沒有採用棧結構,中斷發生時現場資訊被送到系統空間指定單元,每個現場儲存單元與中斷事件一一對應,這樣的缺點是終端型別不能增加,相同型別的中斷不能巢狀。
4.何為中斷向量?使用者能否修改中斷向量的值?
當中斷事件發生時,中斷裝置根據中斷的類別自動地將中斷處理程式所對應的psw和pc送入程式狀態字和程式計數器中,如此變轉移到對應的中斷處理程式中。這個轉移類似向量的轉移,因而psw和pc被稱為中斷向量。
使用者不能更改中斷向量的值,因為修改中斷向量是特權指令,普通使用者程式不能執行特權指令。另外,如果使用者能修改中斷向量的值,那麼使用者就能破壞中斷向量與中斷處理程式之間的聯絡,並可能攻擊系統。例如,將中斷向量與一段病毒程式聯絡起來,使中斷發生時便執行病毒程式,這將導致對計算機系統的破壞。
5. 中斷向量的儲存位置是否可由程式改變?為什麼?中斷向量的值是如何確定的?
中斷向量的儲存位置是由硬體確定的,不能由程式改變。中斷發生後,中斷裝置按照中斷型別到記憶體指定位置取出中斷向量。例如,在ibm pc系統中,位址00000h到003ffh是中斷向量空間。
作業系統的設計者根據中斷處理程式的儲存位置及執行環境確定其對應中斷向量的值,系統啟動時,由初始化程式將其值填入指定位置。
6.有人說,中斷發生後硬體中斷裝置保證處理機進入管態,這種說法準確嗎?說明理由
這種說法不準確。中斷發生後,硬體中斷裝置負責引出中斷處理程式,中斷處理程式是否執行於管態取決於psw中的處理機狀態位,該位的值是作業系統初始化時設定的,只有在初始化程式正確設定該狀態位的前提下,才能保證中斷後進入管態。
《未完 待續》
課後習題 處理機排程與死鎖
part a 高階排程與低階排程的主要任務是什麼,為什麼要引進中級排程?高階排程又稱為作業排程,用於決定把外存後備佇列中的那些作業調入記憶體,為它們分配必要的資源,並建立程序 低階排程又稱為程序排程,用來決定就緒佇列中哪個程序先獲得處理機,並將處理機分配給選中的程序,然他投入執行 中級排程又稱為記憶...
處理機排程
如果沒有處理機排程,則意味著必須等待當前程序執行完畢後下一程序才能執行,而程序常需等待外設的輸入,i o的速度相比處理機是非常慢的,因此這會對處理機資源造成嚴重浪費。引入排程後,可在執行程序等待輸入時把處理機排程給其他程序,從而提高處理機的利用率。作業排程 高階 在外存的作業中挑選乙個或多個作業,給...
處理機排程
多道程式系統中,程序的數量往往多於處理機的個數,程序爭用處理機的情況在所難免。處理機排程是對處理機進行分配,即從就緒佇列中按照一定的演算法選擇乙個程序並將處理機分配給它執行,以實現程序併發執行。乙個作業從提交到完成,經歷以下 排程 作業排程 從外存中選擇乙個或多個作業,分配記憶體 輸入 輸出等必要資...