進程-2:進程上下文和中斷上下文

1.     CPU的狀態

CPU總是處於以下3種狀態的一種:

a)       內核態,運行於進程上下文,內核代表進程運行於內核空間;

b)       內核態,運行於中斷上下文,內核代表硬件運行於內核空間;

c)       用戶態,運行於用戶空間。

2.     進程上下文

它是一種內核所處的操作模式,此時內核代表進程執行系統調用或運行內核線程。既然代表進程,那麼就用前面“進程定義及其結構”中一文中提到的task_struct保存進程所需的資源,只不過堆棧變成了stack(0)。用此結構保存現在進程的狀態,在進程上下文中可以睡眠,也可以調用調度程序。

3.     中斷上下文

硬件通過觸發信號,導致內核調用中斷處理程序,進入內核空間。這個過程中,硬件的一些變量和參數也要傳遞給內核,內核通過這些參數進行中斷處理。所謂的“中斷上下文”,其實也可以看作就是硬件傳遞過來的這些參數和內核需要保存的一些其他環境。(以上來自網絡,沒有找到更權威的說法)。由於中斷處理程序與程序沒有聯繫,也就沒有相應的task_struct結構,那就不能保持狀態。而進程是系統調用的單元,一旦睡眠或者讓出CPU,就不能重新調度了。這也就是爲什麼中斷上下文中不能讓出CPU。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章