中斷處理與進程調(diào)度區(qū)別
? ? ? ? 對于中斷處理和進程調(diào)度的搶占方式(處理機調(diào)度)冰垄,因為二者都有打斷的性質(zhì)无拗,都是搶占了CPU揪阶,所以容易混淆缠捌。
進程調(diào)度的非搶占式方式:只允許進程主動放棄處理機宙刘,例:進程正常終止苍姜;運行過程中發(fā)生異常而終止;進程主動請求阻塞悬包。這不屬于中斷衙猪。(如等待IO)。實現(xiàn)簡單布近,系統(tǒng)開銷小但是無法及時處理緊急任務(wù)垫释,適合早期批處理操作系統(tǒng)。
? ? ? ? 一撑瞧、首先棵譬,中斷處理是外設(shè)打斷進程,比如一個進程在使用cpu预伺,它的某條指令到達了中斷周期订咸,那么,這個進程被中斷酬诀。(注意:是被外設(shè)中斷而不是被一個進程打斷脏嚷。)就算中斷嵌套,嵌套的也是其他中斷而不是進程瞒御。中斷服務(wù)程序的執(zhí)行并不視為進程執(zhí)行父叙。
由OS的內(nèi)核中的中斷處理程序,來處理進程的中斷葵腹。此時高每,會進入CPU的管態(tài),并由OS接管計算機的控制權(quán)践宴。
? ? ? ? 二鲸匿、進程調(diào)度搶占方式則是CPU中一個進程打斷另一個執(zhí)行中的進程。(如處于改進程某條指令的取值阻肩、執(zhí)行或者非中斷處理的任何時候)
? ? ? ? 所以可以這么認為——中斷處理是進程A執(zhí)行過程中發(fā)生的带欢,且一旦發(fā)生無法切換為另一個進程B运授。
? ? ? ? 進程調(diào)度的搶占方式:指進程被動放棄處理機。例:進程時間片用完乔煞;有更緊急的任務(wù)需要處理(如IO中斷)吁朦;有更高優(yōu)先級的進程進入就緒隊列《杉郑可以優(yōu)先處理更緊急的進程逗宜,也可以實現(xiàn)各進程按時間片輪流執(zhí)行的功能(通過時鐘中斷)。適合分時操作系統(tǒng)空骚、實時操作系統(tǒng)纺讲。
中斷處理時無法進行處理機調(diào)度(進程切換)
? ? ? ? 因為中斷恢復(fù)所需要的所有數(shù)據(jù)都放在被中斷進程的內(nèi)核棧中,如果發(fā)生切換就找不到之前的被中斷進程了囤屹,使得中斷無法恢復(fù)熬甚。
? ? ? ? 注:中斷處理保存PC(隱指令保存斷點)和PSW、通用寄存器內(nèi)容(保護現(xiàn)場)都是為了恢復(fù)被中斷進程肋坚。
? ? ? ? 進程切換保存PC乡括、PSW是為了下次再輪到被切換進程執(zhí)行時該從哪開始。從這點看智厌,他們的任務(wù)是一致的诲泌。(都是保存在被中斷 / 切換進程的PCB中)
關(guān)于進程切換必須用到中斷的問題
? ? ? ? 進程切換必定使用中斷,這似乎與上文所述發(fā)生了矛盾铣鹏,但實際上——上文所有中斷說的都是外中斷档礁,而不是內(nèi)中斷。
進程切換不可發(fā)生在外中斷過程吝沫,但必定發(fā)生在內(nèi)中斷過程。
? ? ? ? ? 因為進程切換必定發(fā)生在內(nèi)核態(tài)(管態(tài))递礼,而“中斷”惨险,嚴格地說——“內(nèi)中斷”是目態(tài)進入管態(tài)的必要不充分條件,所以可見進程切換必定借助內(nèi)中斷且必定發(fā)生了處理機模式切換脊髓。
進程管理辫愉,存儲器管理,設(shè)備管理将硝。都屬于操作系統(tǒng)內(nèi)核中恭朗,OS的對系統(tǒng)資源的管理功能。
(更確切的說這個內(nèi)中斷是軟中斷(指令產(chǎn)生的)依疼,是自愿的痰腮,往往這個軟中斷就是訪管指令)
內(nèi)中斷:信號來源于CPU內(nèi)部,與當(dāng)前執(zhí)行的指令有關(guān)律罢。如整數(shù)除0膀值。
外中斷:信號來源于CPU外部棍丐,與當(dāng)前執(zhí)行的指令無關(guān)。(廣義的中斷)如用戶強制結(jié)束一個進程沧踏。