**:
請問程序上下文是什麼意思?
1.程序上下文一般在程序切換中提到,也就是當程序要切換時關於當前程序的暫存器內容以及記憶體頁表的詳細資訊等等內容,一句話概括也就是關於描述程序的資訊。
2.同意樓上的,就是很多書本上提到的程序控制塊pcb,儲存著程序的很多詳細資訊
3.補充(linux完全注釋中的一段話):
當乙個程序在執行時,cpu的所有暫存器中的值、程序的狀態以及堆疊中的內容被稱為該程序的上下文。當核心需要切換到另乙個程序時,它需要儲存當前程序的所有狀態,即儲存當前程序的上下文,以便在再次執行該程序時,能夠得到切換時的狀態執行下去。在linux中,當前程序上下文均儲存在程序的任務資料結構中。在發生中斷時,核心就在被中斷程序的上下文中,在核心態下執行中斷服務例程。但同時會保留所有需要用到的資源,以便中繼服務結束時能恢復被中斷程序的執行。
4.非常正確,補充一點,當乙個程序執行時 ,產生了乙個中斷, cpu轉而執行中斷處理程式 , 雖然cpu當時儲存了被中斷程序的上下文, 但這和中斷處理絲毫沒有關係 , 也就是 說, 中斷處理程式 沒有程序上下文, 但是 ,你卻可以得到current的值!
5.程序上下文就是表示程序資訊的一系列東西,包括各種變數、暫存器以及程序的執行的環境。這樣,當程序被切換後,下次再切換回來繼續執行,能夠知道原來的狀態。
同理,中斷上下文就是中斷發生時,原來的程序執行被打斷,那麼就要把原來的那些變數儲存下來,以便中斷完成後再恢復。
6.程序上下文 & 中斷上下文
處理器總處於以下狀態中的一種:
1、核心態,執行於程序上下文,核心代表程序執行於核心空間;
2、核心態,執行於中斷上下文,核心代表硬體執行於核心空間;
3、使用者態,執行於使用者空間。
程序上下文:
在linux中,使用者程式裝入系統形成乙個程序的實質是系統為使用者程式提供乙個完整的執行環境。程序的執行環境是由它的程式**和程式執行所需要的資料結構以及硬體環境組成的。程序的執行環境主要包括:
1.程序空間中的**和資料、各種資料結構、程序堆疊和共享記憶體區等。
2.環境變數:提供程序執行所需的環境資訊。
3.系統資料:程序空間中的對程序進行管理和控制所需的資訊,包括程序任務結構體以及核心堆疊等。
4.程序訪問裝置或者檔案時的許可權。
5.各種硬體暫存器。
6.位址轉換資訊。
從以上組成情況可以看到,程序的執行環境是動態變化的,尤其是硬體暫存器的值以及程序控制資訊是隨著程序的執行而不斷變化的。在linux中把系統提供給程序的的處於動態變化的執行環境總和稱為程序上下文。
系統中的每乙個程序都有自己的上下文。乙個正在使用處理器執行的程序稱為當前程序(current)。當前程序因時間片用完或者因等待某個事件而阻塞時,程序排程需要把處理器的使用權從當前程序交給另乙個程序,這個過程叫做程序切換。此時,被呼叫程序成為當前程序。在程序切換時系統要把當前程序的上下文儲存在指定的記憶體區域(該程序的任務狀態段tss中),然後把下乙個使用處理器執行的程序的上下文設定成當前程序的上下文。當乙個程序經過排程再次使用cpu執行時,系統要恢復該程序儲存的上下文。所以,程序的切換也就是上下文切換。
在系統核心為使用者程序服務時,通常是程序通過系統呼叫執行核心**,這時程序的執行狀態由使用者態轉換為核心態。但是,此時核心的執行是為使用者程序服務,也可以說核心在代替當前程序執行某種服務功能。在這種情況下,核心的執行仍是程序執行的一部分,所以說這時核心是執行在程序上下文中。核心執行在程序上下文中時可以訪問和修改程序的系統資料。此外,若核心執行在程序上下文中需要等待資源和裝置時,系統可以阻塞當前程序
中斷上下文:
硬體通過觸發訊號,導致核心呼叫中斷處理程式,進入核心空間。這個過程中,硬體的一些變數和引數也要傳遞給核心,核心通過這些引數進行中斷處理。所謂的「中斷上下文」,其實也可以看作就是硬體傳遞過來的這些引數和核心需要儲存的一些其他環境(主要是當前被打斷執行的程序環境)。中斷時,核心不代表任何程序執行,它一般只訪問系統空間,而不會訪問程序空間,核心在中斷上下文中執行時一般不會阻塞。
程序上下文 中斷上下文
核心空間和使用者空間是現代作業系統的兩種工作模式,核心模組執行在核心空間,而使用者態應用程式執行在使用者空間。它們代表不同的級別,而對系統資源具有不同的訪問許可權。核心模組執行在最高端別 核心態 這個級下所有的操作都受系統信任,而應用程式執行在較低級別 使用者態 在這個級別,處理器控制著對硬體的直接...
程序上下文 中斷上下文
當乙個程序在執行時,cpu的所有暫存器中的值 程序的狀態以及堆疊的內容被稱為該程序的上下文。程序上下文 當核心需要切換到另乙個程序時,它需要儲存當前程序的所有狀態,即儲存當前程序的上下文,以便在再次執行該程序時,能夠得到切換時的狀態執行下去。中斷上下文 在linux中,當前程序上下文均儲存在程序的任...
程序上下文 中斷上下文
程序上下文 中斷上下文 當工作在使用者態的程序想訪問某些核心才能訪問的資源時,必須通過系統呼叫或者中斷切換到核心態,由核心代替其執行。程序上下文和中斷上下文就是完成這兩種狀態切換所進行的操作總稱。我將其理解為儲存使用者空間狀態是上文,切換後在核心態執行的程式是下文。中斷上下文 中注意事項 1 睡眠或...