程序上下文與中斷上下文的理解

2021-09-24 12:53:31 字數 1569 閱讀 2002

一.什麼是核心態和使用者態

使用者態:使用者程式執行空間。

1.程序上下文:

(1)程序上文:其是指程序由使用者態切換到核心態是需要儲存使用者態時cpu暫存器中的值,程序狀態以及堆疊上的內容,即儲存當前程序的程序上下文,以便再次執行該程序時,能夠恢復切換時的狀態,繼續執行。

(2)程序下文:其是指切換到核心態後執行的程式,即程序執行在核心空間的部分。

2.中斷上下文:

(1)中斷上文:硬體通過中斷觸發訊號,導致核心呼叫中斷處理程式,進入核心空間。這個過程中,硬體的一些變數和引數也要傳遞給核心,核心通過這些引數進行中斷處理。中斷上文可以看作就是硬體傳遞過來的這些引數和核心需要儲存的一些其他環境(主要是當前被中斷的程序環境。

(2)中斷下文:執行在核心空間的中斷服務程式。

在現在作業系統中,核心功能模組執行在核心空間,而應用程式執行在使用者空間。現代的cpu都具有不同的操作模式,代表不同的級別,不同的級別具有不同的功能,其所擁有的資源也不同;在較低的級別中將禁止使用某些處理器的資源。linux系統設計時利用了這種硬體特性,使用了兩個級別,最高端別和最低級別,核心執行在最高端別(核心態),這個級別幾乎可以使用處理器的所有資源,而應用程式執行在較低級別(使用者態),在這個級別的使用者不能對硬體進行直接訪問以及對記憶體的非授權訪問。核心態和使用者態有自己的記憶體對映,即自己的位址空間。

當工作在使用者態的程序想訪問某些核心才能訪問的資源時,必須通過系統呼叫或者中斷切換到核心態,由核心代替其執行。程序上下文中斷上下文就是完成這兩種狀態切換所進行的操作總稱。我將其理解為儲存使用者空間狀態是上文,切換後在核心態執行的程式是下文。

1.程序上下文主要是異常處理程式和核心執行緒。核心之所以進入程序上下文是因為程序自身的一些工作需要在核心中做。例如,系統呼叫是為當前程序服務的,異常通常是處理程序導致的錯誤狀態等。

2.中斷上下文是由於硬體發生中斷時會觸發中斷訊號請求,請求系統處理中斷,執行中斷服務子程式。

執行於程序上下文的核心**是可搶占的,但中斷上下文則會一直執行至結束,不會被搶占。所以中斷處理程式**要受到一些限制,在中斷**中不能出現實現下面功能的**:

(1)睡眠或者放棄cpu。 

因為核心在進入中斷之前會關閉程序排程,一旦睡眠或者放棄cpu,這時核心無法排程別的程序來執行,系統就會死掉。牢記:中斷服務子程式一定不能睡眠(或者阻塞)。

(2)嘗試獲得訊號量 

如果獲得不到訊號量,**就會睡眠,導致(1)中的結果。

(3)執行耗時的任務 

中斷處理應該盡可能快,因為如果乙個處理程式是irqf_disabled型別,他執行的時候會禁止所有本地中斷線,而核心要響應大量服務和請求,中斷上下文占用cpu時間太長會嚴重影響系統功能。中斷處理程式的任務盡可能放在中斷下半部執行。

(4)訪問使用者空間的虛擬位址 

因為中斷執行在核心空間。 

程序上下文與中斷上下文

處理器總處於以下狀態中的一種 核心態,執行於程序上下文,核心代表程序執行於核心空間。核心態,執行於中斷上下文,核心代表硬體執行於核心空間。使用者態,執行於使用者空間。程序上下文 在linux中,使用者程式裝入系統形成乙個程序的實質是系統為使用者程式提供乙個完整的執行環境。程序的執行環境是由它的程式 ...

程序上下文與中斷上下文

處理器總處於以下狀態中的一種 核心態,執行於程序上下文,核心代表程序執行於核心空間。核心態,執行於中斷上下文,核心代表硬體執行於核心空間。使用者態,執行於使用者空間。程序上下文 在linux中,使用者程式裝入系統形成乙個程序的實質是系統為使用者程式提供乙個完整的執行環境。程序的執行環境是由它的程式 ...

程序上下文與中斷上下文

關於作業系統使用者態與核心態 linux之使用者態和核心態 上下文context 通俗講就是程式執行時周圍的環境 使用者空間的應用程式,通過系統呼叫,陷入核心空間.這個時候使用者空間的程序需要傳遞很多的變數,引數的值給核心,核心態執行時也要儲存使用者程序的一些暫存器值,變數等.所謂的 程序上下文 可...