程序上下文與中斷上下文

2021-09-13 11:30:33 字數 1095 閱讀 6617

關於作業系統使用者態與核心態:linux之使用者態和核心態

上下文context:通俗講就是程式執行時周圍的環境

使用者空間的應用程式,通過系統呼叫,陷入核心空間.這個時候使用者空間的程序需要傳遞很多的變數,引數的值給核心,核心態執行時也要儲存使用者程序的一些暫存器值,變數等.所謂的"程序上下文",可以看做是使用者程序傳遞給核心的這些引數以及核心要儲存的那一套變數和暫存器值和當時的環境等.

相對於程序而言,就是程序執行的環境.具體來說就是各個變數和資料,包括暫存器變數,程序開啟的檔案,記憶體資訊等.乙個程序的上下文可以分為三個部分:使用者級上下文,暫存器上下文和系統級上下文

(1)使用者級上下文:正文,資料,使用者堆疊以及共享儲存區

(2)暫存器上下文:通用暫存器,程式暫存器(ip),處理器狀態暫存器(eflags),棧指標(esp)

(3)系統級上下文:程序控制塊(pcb),記憶體管理資訊,核心棧

當發生程序排程時,進行程序切換就是上下文切換(context switch).作業系統必須對上面提到的全部資訊進行切換,新排程的程序才能執行。而系統呼叫進行的模式切換(mode switch)。模式切換與程序切換比較起來,容易很多,而且節省時間,因為模式切換最主要的任務只是切換程序暫存器上下文的切換。

硬體通過觸發訊號,導致核心呼叫中斷處理程式,進入核心空間。這個過程中,硬體的 一些變數和引數也要傳遞給核心,核心通過這些引數進行中斷處理。所謂的「 中斷上下文」,其實也可以看作就是硬體傳遞過來的這些引數和核心需要儲存的一些其他環境(主要是當前被打斷執行的程序環境)。中斷時,核心不代表任何程序執行,它一般只訪問系統空間,而不會訪問程序空間,核心在中斷上下文中執行時一般不會阻塞。

當乙個程序在執行時,cpu的所有暫存器中的值、程序的狀態以及堆疊中的內容被稱為該程序的上下文。當核心需要切換到另乙個程序時,它需要儲存當前程序的所有狀態,即儲存當前程序的上下文,以便在再次執行該程序時,能夠必得到切換時的狀態執行下去。在linux中,當前程序上下文均儲存在程序的任務資料結構中。在發生中斷時,核心就在被中斷程序的上下文中,在核心態下執行中斷服務例程。但同時會保留所有需要用到的資源,以便中繼服務結束時能恢復被中斷程序的執行。

程序上下文與中斷上下文

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

程序上下文與中斷上下文

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

中斷上下文 程序上下文

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