最近複習作業系統關於程序切換的一些記錄。
程序切換指從正在執行的程序中收回處理器,讓待執行程序來占有處理器執行。
實質上就是被中斷執行程序與待執行程序的上下文切換。
二、模式切換
程序切換必須在作業系統核心模式下完成,這就需要模式切換。
模式切換又稱處理器切換,即使用者模式和核心模式的互相切換。
1、(中斷/異常等觸發)正向模式切換並壓入psw/pc 。 (program status word 程式狀態字。program counter 程式計數器。指向下一條要執行的指令)
2、儲存被中斷程序的現場資訊。
3、處理具體中斷、異常。
4、把被中斷程序的系統堆疊指標sp值儲存到pcb。(stack pointer 棧指標。process control block 程序控制塊。)
5、調整被中斷程序的pcb資訊,如程序狀態)。
6、把被中斷程序的pcb加入相關佇列。
7、選擇下乙個占用cpu執行的程序。
8、修改被選中程序的pcb資訊,如程序狀態。
9、設定被選中程序的位址空間,恢復儲存管理資訊。
10、恢復被選中程序的sp值到處理器暫存器sp。
11、恢復被選中程序的現場資訊進入處理器。
12、(中斷返回指令觸發)逆向模式轉換並彈出psw/pc。
程序切換一定發生在中斷/異常/系統呼叫處理過程中,常見的有以下情況:
1、阻塞式系統呼叫、虛擬位址異常。
導致被中斷程序進入等待態。
2、時間片中斷、i/o中斷後發現更改優先順序程序。
導致被中斷程序進入就緒態。
3、終止用系統呼叫、不能繼續執行的異常。
導致被中斷程序進入終止態。
有一些中斷/異常不會引起程序狀態轉換,不會引起程序切換,只是在處理完成後把控制權交還給被中斷程序。
以下是處理流程:
1、(中斷/異常等觸發)正向模式切換並壓入psw/pc 。
2、儲存被中斷程序的現場資訊。
3、處理具體中斷、異常。
4、恢復被中斷程序的現場資訊。
5、(中斷返回指令觸發)逆向模式轉換並彈出psw/pc。
可以分析以上兩種流程發現,前三步是一樣的,也就是說作業系統要處理中斷,並不一定會引發程序切換,有些中斷處理完了之後,立即會恢復繼續原程序的處理。
作業系統程序切換簡易分析
linux精簡作業系統設計 一 準備工作 1 標頭檔案mypcb.h linux mykernel mypcb.h kernel internal pcb types define max task num 4 define kernel stack size 1024 8 cpu specific...
作業系統之程序
程序 這裡邊我們主要是要講的內容就是這兩個圖 我們通過這兩個圖來介紹一些相關的知識點 我們還是來看圖進行分析 我們就這個圖進行分析各個關鍵部分 這些關鍵在於理解,很easy的,或者你把這個圖畫出來也就馬上明白了。就緒 就是 萬事俱備只欠東風 就差cpu的排程了,只要cpu一排程便可執行。執行 就是在...
作業系統之 程序
程序是程式的一次執行,由於需要對程序進行分離儲存出現記憶體管理,由於需要讓程序有條不紊往前推進而導致程序排程的出現。每個程序有自己的程式計數器,記錄下一條指令所在位置。程序的狀態有執行,阻塞,就緒。並不唯一是這三種狀態,windows有7種狀態。1.發明程序的根本動機是什麼?它與程式是什麼關係?程序...