過程的上下文

過程的上下文由其(用戶)的內容組成地址空間以及與該過程相關的硬件寄存器和內核數據結構的內容。正式地,一個過程的上下文是其用戶級上下文,注冊上下文和係統級上下文的結合。1用戶級上下文由過程文本,數據,用戶堆棧和共享內存組成,這些內存占據了虛擬的地址過程的空間。由於交換或分頁而定期不存在的過程的虛擬地址空間的一部分仍然構成用戶級上下文的一部分。

寄存器上下文由以下組件組成。

  • 該程序計數器指定CPU將執行下一個指令的地址;該地址是內核或用戶存儲空間中的虛擬地址。
  • 處理器狀態寄存器(PS)指定與該過程相關的計算機的硬件狀態。例如,PS通常包含子字段,以表明最近計算的結果導致零,正或負麵結果,或者設置了寄存器溢出和隨身攜帶位,依此類推。引起PS設置的操作是針對特定過程完成的,因此PS包含與該過程相關的機器的硬件狀態。PS中通常發現的其他重要子字段是指示當前處理器執行級別(中斷)以及當前和最新執行模式(例如內核,用戶)的那些。顯示當前執行模式的子字段確定過程是否可以執行特權指令以及是否可以訪問內核地址空間。
  • 堆棧指針包含由執行方式確定的內核或用戶堆棧中下一個條目的當前地址。機器體係結構決定堆棧指針是指堆棧上的下一個免費條目還是最後使用的條目。同樣,機器決定了堆棧增長方向朝著數值更高或更低的地址,但就本討論而言,此類問題並不重要。
  • 通用寄存器包含該過程在執行過程中生成的數據,以簡化以下討論,讓我們區分兩個通用寄存器,即注冊0和寄存器1,以便在過程和內核之間提供信息。

過程的係統級上下文具有“靜態部分”(以下列表的前三個項目)和“動態部分” OAST兩個項目)。一個過程在整個生命周期中都具有係統級上下文的一個靜態部分,但是它可以具有可變數量的動態零件。係統級上下文的動態部分應被視為內核推動和彈出各種事件時的上下文層堆棧。係統級上下文由以下組件組成。

  • 過程表的進程輸入定義了一個過程的狀態,如第6.1節所述,並包含始終可供內核訪問的控製信息。
  • 過程的U區域包含僅在過程中需要訪問的過程控製信息。一般控製參數(例如流程優先級)存儲在過程表中,因為必須在ProcCSS上下文之外訪問它們。
  • 預先條目,區域表和頁麵表定義了從虛擬地址到物理地址的映射,因此定義了過程的文本,數據,堆棧和其他區域。如果幾個過程共享共同的區域,則將區域視為每個過程上下文的一部分,因為每個過程都獨立操縱區域。內存管理任務的一部分是指出過程的虛擬地址空間的哪些部分不是內存居民。
  • 內核堆棧包含內核過程的堆棧框架,因為過程在內核模式下執行。盡管所有進程都執行相同的內核代碼,但它們具有內核堆棧的私有副本,該副本指定了其特定的內核函數調用。例如,一個過程可以調用創建係統調用,然後去睡覺等待內核分配新的inode,而另一個過程可以調用讀取係統調用並進入睡眠,等待數據從磁盤轉移到內存。這兩個進程都執行內核功能,但是它們具有包含其私有功能調用序列的單獨堆棧。內核必須能夠恢複內核堆棧的內容以及在內核模式下恢複過程的堆棧指針的位置。係統實現經常將內核堆棧放置在Proccss U區域,但在邏輯上是獨立的,可以存在於獨立分配的內存區域中。當過程以用戶模式執行時,內核堆棧為空。
  • 過程級別上下文的動態部分由一組圖層組成,可視化為最後一台堆棧。每個係統級上下文層都包含必要的信息,以恢複上一層,包括上一個級別的寄存器上下文。

當中斷,進程進行係統調用或過程進行上下文開關時,內核會推動上下文層。當內核從處理中斷,當內核完成係統調用執行或進程執行上下文切換後,過程返回用戶模式時,它會彈出上下文層。因此,上下文開關需要一個係統級上下文層的推動和流行音樂:內核按下舊過程的上下文層,並彈出新過程的上下文層。過程表條目存儲必要的信息以恢複當前上下文層。

級別上下文,包含過程文本(指令),數據,堆棧和共享內存(如果該過程具有任何)以及係統級上下文的靜態部分,包含過程表條目,U區域和預先設備條目(用戶級上下文的虛擬地址映射信息)。圖的右側顯示了上下文的動態部分。它由幾個堆棧框架組成,其中每個幀包含上一層的保存寄存器上下文,而隨著內核在該層執行時,內核鬆弛。係統上下文第0層是代表用戶級上下文的虛擬層。這裏的堆棧的增長是在用戶地址空間中,內核堆棧為null。箭頭指向係統級上下文的靜態部分到上下文動態部分的頂層表示存儲在過程表條目中的邏輯信息,以使內核能夠恢複過程的當前上下文層。

一個過程在其上下文中或更確切地說是在其當前上下文層中運行。上下文層的數量受機器支持的中斷級別的數量界定。例如,如果機器支持軟件中斷,終端,磁盤,所有其他外圍設備和時鍾的不同中斷級別,則

支持5個中斷級別,因此,一個過程最多可以包含7個上下文層:1對於每個中斷級別,係統調用1,用戶級別為1。即使在“最壞”可能的序列中發生中斷,這7層也足以容納所有上下文層,因為在內核處理該級別或更高級別時,給定級別的中斷被阻止(即CPU辯護)。

盡管內核始終在某些過程的上下文中執行,但執行的邏輯函數並不一定與該過程有關。例如,如果磁盤驅動器因為返回數據而中斷了機器,則它會中斷運行過程,並且內核在執行過程的新係統級上下文層中執行中斷處理程序,即使數據屬於另一個過程。中斷處理程序通常不訪問或修改過程上下文,因為這些部分與中斷無關。

繼續在這裏閱讀:64保存過程的上下文

本文是否有幫助?

+11 -1

讀者的問題

  • 麥克風
    哪種過程定義了正在創建的過程?
    3天前
  • 定義正在創建的過程的過程狀態是“新”狀態。
    • 磁帶
      當過程在用戶上下文和係統上下文中開始時?
      1個月前
    • 啟動過程後,通常是在用戶上下文中完成的,這意味著該過程具有與啟動該過程的用戶相同的訪問權限。係統上下文是啟動具有最多特權的過程的時候,使其可以進行更多的係統級更改。一個例子是當啟動具有管理員特權的過程時。
      • 詹斯
        操作係統中的上下文開關是什麼?
        4個月前
      • 上下文開關是存儲和恢複過程或線程狀態(上下文)的過程,因此可以在以後的時間從同一點恢複執行。這使多個過程能夠共享一個CPU,並且是多任務操作係統的重要功能。在上下文開關期間,CPU的狀態在內,包括程序計數器,寄存器,CPU標誌和其他執行狀態在當前運行過程的上下文中保存,並在切換回該過程時還原。
        • 梅利莎
          操作係統中的上下文切換是什麼?
          4個月前
        • 操作係統中的上下文切換是存儲和恢複過程或線程狀態(上下文)的過程,因此可以在以後從同一點恢複執行。這允許多個流程共享一個CPU,並且是多任務操作係統的重要功能。當發生上下文開關時,運行過程的狀態將保存在內存中,並且加載了另一個過程的狀態並開始執行。
          • 納丁
            以下哪項不會中斷運行過程?
            4個月前
          • 以上都不是。所有以下所有操作都可以中斷運行過程:用戶輸入,錯誤和係統信號。
            • 凱蘭·米切爾(Caelan Mitchell)
              以下哪項可以定期觸發上下文開關?
              4個月前
              1. 中斷
              2. 計時器
              3. 操作係統調用
              4. 應用程序的係統調用
              5. 用戶輸入
              • Reiss
                在UNIX環境中,過程是什麼意思?
                4個月前
              • 在UNIX環境中,過程是係統上運行的程序。它們是在加載程序時創建的,並且可以在過程列表中看到。這些過程可以使用PS,TOP和KILL命令等工具來監視和操縱。
                • Priamus
                  以下哪項不一定要保存在過程之間的上下文切換中?
                  5個月前
                • 寄存器值
                  • 約翰娜
                    上下文開關是什麼意思?
                    5個月前
                  • 上下文開關是處理器的狀態從一個過程更改為另一個過程。通常在多任務處理時使用它在過程或線程之間切換。當發生上下文開關時,處理器將存儲當前過程或線程的狀態,並加載新過程或線程的狀態。這使處理器可以在任務之間切換,而不會失去任何一個的進度。
                    • 貝拉多娜·穆格沃特(Belladonna Mugwort)
                      過程的哪個狀態定義了正在創建的過程?
                      5個月前
                    • 艾拉
                      過程定義說明的哪個狀態正在執行?
                      5個月前
                    • 執行
                      • 唐納德
                        操作係統中它的過程上下文和內容是什麼?
                        1年以前
                      • 過程上下文(也稱為過程狀態)是與操作係統維護的過程相關的信息。上下文通常包括處理器寄存器的內容,內存的內容以及該過程的調度信息,例如當前工作目錄和打開文件。為了使過程恢複執行,必須將上下文保存到操作係統可以訪問的位置,以還原與過程相關的所有信息。
                        • Efrem
                          UNIX中的過程上下文是什麼?
                          1年以前
                        • UNIX中的過程上下文是運行程序及其運行環境的狀態。它包括該過程的當前工作目錄,活動用戶和組ID,打開文件和待處理信號。上下文由內核確定,該內核根據用戶定義的權限和設置運行程序。