複製鏈接
請複製以下鏈接發送給好友

進程上下文

鎖定
進程上下文,意思是可執行程序代碼,是進程的重要組成部分。
中文名
進程上下文
靜態描述
進程執行活動全過程
包    含
指令和數據
操    作
代碼

目錄

進程上下文意義

這些代碼從可執行文件載入到進程的地址空間執行。一般程序在用户空間執行當一個程序調用了系統調用或者觸發了某個異常,它就陷入了內核空間。此時,我們稱內核“代表進程執行”並處於進程上下文。在此上下文中current宏是有效的。除非在此間隙有更高優先級的進程需要執行並由調度器做出了相應調整,否則在內核退出的時候,程序恢復在用户空間繼續執行。
系統調用和異常處理程序是對內核明確定義的接口。進程只有通過這些接口才能陷入內核執行——對內核的所有訪問都必須通過這些接口。
進程上下文實際上是進程執行活動全過程的靜態描述。我們把已執行過的進程指令和數據在相關寄存器堆棧中的內容稱為上文,把正在執行的指令和數據在寄存器和堆棧中的內容稱為正文,把待執行的指令和數據在寄存器與堆棧中的內容稱為下文。具體的説,進程上下文包括計算機系統中與執行該進程有關的各種寄存器(例如通用寄存器程序計數器PC,程序狀態字寄存器PS等)的值,程序段在經過編譯過後形成的機器指令代碼集,數據集及各種堆棧值PCB結構。這裏,有關寄存器和棧區的內容是重要的,例如沒有程序計數器PC和程序 狀態寄存器PS,CPU將無法知道下一條待執行指令的地址和控制有關操作。
進程上下文是可以按照層次規則組合起來的。例如在UNIX System V中,進程上下文由用户級上下文,寄存器上下文以及系統級上下文組成。
用户級上下文由進程的用户程序段部分編譯而成的用户正文段,用户數據,用户棧組成。
寄存器上下文則有程序寄存器PC,處理機狀態寄存器PS,棧指針通用寄存器的值組成,其中PC給出了CPU將要執行的下一條指令的虛地址;PS給出了機器與該進程相關聯的硬件狀態;棧指針指向下一項的當前地址,而通用寄存器則用於不同執行模式間的參數傳遞
進程的系統級上下文分為靜態和動態部分。這裏的動態指進程在進入和退出不同的上下文層次時,系統為各層上下文中相關聯的寄存器所保存和恢復的記錄。靜態部分為PCB結構,將進程虛地址空間映射到物理空間以得到核心棧。這個核心棧主要是用來裝載進程中所使用系統調用的調用序列。
系統級上下文的動態部分是與寄存器上下文相關聯的。進程上下文的層次概念也主要體現在動態部分,及系統級上下文的動態部分可看成是一些數量變化的層次組成。其變化規則滿足先進後出的堆棧方式,每個上下文層次在棧中各佔一項。

進程上下文包含

每個進程執行過的、執行時的以及待執行的指令和數據;在指令寄存器堆棧、狀態字寄存器等中的內容。此外, 還包括進程打開的文件描述符等.