程序上下文與中斷上下文

2021-06-28 11:51:49 字數 2165 閱讀 8340

處理器總處於以下狀態中的一種:

1、核心態,執行於程序上下文,核心代表程序執行於核心空間。

2、核心態,執行於中斷上下文,核心代表硬體執行於核心空間。

3、使用者態,執行於使用者空間。

程序上下文:

在linux中,使用者程式裝入系統形成乙個程序的實質是系統為使用者程式提供乙個完整的執行環境。程序的執行環境是由它的程式**和程式執行所需要的資料結構以及硬體環境組成的。程序的執行環境主要包括:

1.程序空間中的**和資料、各種資料結構、程序堆疊和共享記憶體區等。

2.環境變數:提供程序執行所需的環境資訊。

3.系統資料:程序空間中的對程序進行管理和控制所需的資訊,包括程序任務結構體以及核心堆疊等。

4.程序訪問

裝置或者檔案時的許可權。

5.各種硬體暫存器。

6.位址轉換資訊。

從以上組成情況可以看到,程序的執行環境是動態變化的,尤其是硬體暫存器的值以及程序控制資訊是隨著程序的執行而不斷變化的。在linux中把系統提供給程序的的處於動態變化的執行環境總和稱為程序上下文。

系統中的每乙個程序都有自己的上下文。乙個正在使用處理器執行的程序稱為當前程序(current)。當前程序因時間片用完或者因等待某個事件而阻

塞時,程序排程需要把處理器的使用權從當前程序交給另乙個程序,這個過程叫做程序切換。此時,被呼叫程序成為當前程序。在程序切換時系統要把當前程序的上

下文儲存在指定的記憶體區域(該程序的任務狀態段tss中),然後把下乙個使用處理器執行的程序的上下文設定成當前程序的上下文。當乙個程序經過排程再次使

用cpu執行時,系統要恢復該程序儲存的上下文。所以,程序的切換也就是上下文切換。

在系統核心為使用者程序服務時,通常是程序通過系統呼叫執行核心**,這時程序的執行狀態由使用者態轉換為核心態。但是,此時核心的執行是為使用者程序服務,也可以說核心在代替當前程序執行某種服務功能。在這種情況下,核心的執行仍是程序執行的一部分,所以說這時核心是執行在程序上下文中。核心執行在程序上下文中時可以訪問和修改程序的系統資料。此外,若核心執行在程序上下文中需要等待資源和裝置時,系統可以阻塞當前程序。

中斷上下文:

硬體通過觸發訊號,導致核心呼叫中斷處理程式,進入核心空間。這個過程中,硬體的一些變數和引數也要傳遞給核心,核心通過這些引數進行中斷處理。所

謂的「中斷上下文」,其實也可以看作就是硬體傳遞過來的這些引數和核心需要儲存的一些其他環境(主要是當前被打斷執行的程序環境)。中斷時,核心不代表任

何程序執行,它一般只訪問系統空間,而不會訪問程序空間,核心在中斷上下文中執行時一般不會阻塞。 

程序上下文實際上是程序執行活動全過程的靜態描述。我們把已執行過的程序指令和資料在相關暫存器與堆疊中的內容稱為上文,把正在執行的指令和資料在暫存器和堆疊中的內容稱為正文

,把待執行的指令和資料在暫存器與堆疊中的內容稱為下文。具體的說,程序上下文包括計算機系統中與執行該程序有關的各種暫存器(例如通用暫存器,程式計數器

pc,程式狀態字暫存器ps等)的值,程式段在經過編譯過後形成的機器指令**集,資料集及各種堆疊值pcb結構。這裡,有關暫存器和棧區的內容是重要的,例如沒有程式計數器pc和程式 狀態暫存器ps,

cpu程序上下文是可以按照層次規則組合起來的。例如在

unix system v

中,程序上下文由使用者級上下文,暫存器上下文以及系統級上下文組成。

使用者級上下文由程序的使用者程式段部分編譯而成的使用者正文段,使用者資料,使用者棧組成。

暫存器上下文則有程式暫存器

pc,處理機狀態暫存器

ps,棧指標和通用暫存器的值組成,其中

pc給出了

cpups

給出了機器與該程序相關聯的硬體狀態;棧指標指向下一項的當前位址,而通用暫存器則用於不同執行模式間的引數傳遞。

程序的系統級上下文分為靜態和動態部分。這裡的動態指程序在進入和退出不同的上下文層次時,系統為各層上下文中相關聯的暫存器所儲存和恢復的記錄。靜態部分為

pcb結構,將程序虛位址空間對映到物理空間以得到核心棧。這個核心棧主要是用來裝載程序中所使用系統呼叫的呼叫序列。

系統級上下文的動態部分是與暫存器上下文相關聯的。程序上下文的層次概念也主要體現在動態部分,及系統級上下文的動態部分可看成是一些數量變化的層次組成。其變化規則滿足先進後出的堆疊方式,每個上下文層次在棧中各佔一項

程序上下文與中斷上下文

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

程序上下文與中斷上下文

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

中斷上下文 程序上下文

在學習與作業系統相關的知識時候,我們經常遇到程序上下文 中斷上下文,看似熟悉又感覺不是特別清晰。這裡我們從如下幾個方面進行描述。上下文是從英文中context翻譯過來的,指的是一種環境。上下文我們看起來不怎麼熟悉,但是我們可以看context的中文翻譯,或者我們能更加的情形些。context n 語...