進程切換
•進程切換指從正在運行的進程中收回處理器,讓待運行進程來占有處理器運行
•進程切換實質上就是被中斷運行進程與待運行進程的上下文切換,處理過程是:
•保存被中斷進程的上下文
•轉向進程調度
•恢復待運行進程的上下文
模式切換
•進程切換必須在操作系統內核模式下完成,這就需要模式切換
•模式切換又稱處理器狀態切換,包括:
•用戶模式到內核模式由中斷/異常/系統調用中斷用戶進程執行而觸發
•內核模式到用戶模式由OS執行中斷返回指令將控制權交還用戶進程而觸發
模式切換的基本工作任務
•中斷裝置完成正向模式切換,包括:
•處理器模式轉為內核模式
•保存當前進程的PC/PSW值到核心棧
•轉向中斷/異常/系統調用處理程序
•中斷返回指令完成逆向模式轉換,包括:
•從待運行進程核心棧中彈出PSW/PC值
•處理器模式轉為用戶模式
進程切換的工作過程
1. (中斷/異常等觸發)正向模式切換並壓入PSW/PC
2. 保存被中斷進程的現場信息
3. 處理具體中斷/異常
4. 把被中斷進程的系統堆棧指針SP值保存到PCB
5. 調整被中斷進程的PCB信息,如進程狀態
6. 把被中斷進程的PCB加入相關隊列
7. 選擇下一個占用CPU運行的進程
8. 修改被選中進程的PCB信息,如進程狀態
9. 設置被選中進程的地址空間,恢復存儲管理信息
10.恢復被選中進程的SP值到處理器寄存器SP
11.恢復被選中進程的現場信息進入處理器
12.(中斷返回指令觸發)逆向模式轉換並彈出PSW/PC
進程切換的發生時機
•進程切換一定發生在中斷/異常/系統調用處理過程中,常見的情況是:
•阻塞式系統調用、虛擬地址異常導致被中斷進程進入等待態
•時間片中斷、I/O中斷后發現更高優先級進程 導致被中斷進程轉入就緒態
•終止用系統調用、不能繼續執行的異常導致被中斷進程進入終止態
進程切換與模式切換
•一些中斷/異常不會引起進程狀態轉換,不會引起進程切換,只是在處理完成后把控制權交回給被中斷進程,處理流程是:
•(中斷/異常觸發)正向模式切換壓入PSW/PC
•保存被中斷進程的現場信息
•處理中斷/異常
•恢復被中斷進程的現場信息
•(中斷返回指令觸發)逆向模式轉換彈出 PSW/PC
