作業系統之上下文切換

2021-10-13 21:37:15 字數 685 閱讀 9505

cpu 暫存器裡原來使用者態的指令位置,需要先儲存起來。接著,為了執行核心態**,cpu 暫存器需要更新為核心態指令的新位置。最後才是跳轉到核心態執行核心任務。而系統呼叫結束後,cpu 暫存器需要恢復原來使用者儲存的狀態,然後再切換到使用者空間,繼續執行程序。所以,一次系統呼叫的過程,其實是發生了兩次 cpu 上下文切換。不過,需要注意的是,系統呼叫過程中,並不會涉及到虛擬記憶體等程序使用者態的資源,也不會切換程序。這跟我們通常所說的程序上下文切換是不一樣的:

首先,你需要知道,程序是由核心來管理和排程的,程序的切換只能發生在核心態。所以,程序的上下文不僅包括了虛擬記憶體、棧、全域性變數等使用者空間的資源,還包括了核心堆疊、暫存器等核心空間的狀態。因此,程序的上下文切換就比系統呼叫時多了一步:在儲存當前程序的核心狀態和 cpu 暫存器之前,需要先把該程序的虛擬記憶體、棧等儲存下來;而載入了下一程序的核心態後,還需要重新整理程序的虛擬記憶體和使用者棧。

執行緒與程序最大的區別在於,執行緒是排程的基本單位,而程序則是資源擁有的基本單位。說白了,所謂核心中的任務排程,實際上的排程物件是執行緒;而程序只是給執行緒提供了虛擬記憶體、全域性變數等資源。執行緒的上下文切換其實就可以分為兩種情況:

到這裡你應該也發現了,雖然同為上下文切換,但同程序內的執行緒切換,要比多程序間的切換消耗更少的資源,而這,也正是多執行緒代替多程序的乙個優勢。

深入理解cpu上下文切換

書籍《作業系統導論》雷姆茲

作業系統 上下文切換

程序上下文是程序執行活動全過程的靜態描述。我們把已執行過的程序指令和資料在相關暫存器與堆疊中的內容稱為程序上文,把正在執行的指令和資料在暫存器與堆疊中的內容稱為程序正文,把待執行的指令和資料在暫存器與堆疊中的內容稱為程序下文。上下文切換的任務是 將cpu切換到另乙個程序需要儲存原來程序的狀態並裝入新...

作業系統CPU上下文切換

在切換時,乙個程序儲存在處理器各暫存器中的中間資料叫做程序的上下文,所以程序的切換實質上就是被中止執行程序與待執行程序上下文的切換。在程序未占用處理器時,程序 的上下文是儲存在程序的私有堆疊中的。時間片對於cpu來說是很關鍵的引數,如果時間片太長,就會使系統的互動性能變差,使用者感覺不到並行。如果太...

總結每天之上下文切換

16 什麼是上下文切換 答 比如人工作的時候,準備好裝備好工作需要的工具才能開始正常工作,否則都是工作的準備階段。而我們的cpu是分片執行的 因為cpu執行速度太快,不想浪費,所以都是分片執行任務 我們一般的作業系統都是多工系統,需要執行其它任務,那麼就需要把當前任務的工作環境也就是執行環境儲存到記...