
看起來兩者都涉及進程的進出。
在分頁中,您交換現有進程的一頁,並將其替換為磁碟中的另一個頁面(我相信是虛擬記憶體),但對於上下文切換,您也可以透過先將其儲存在PCB 中,然後恢復另一個進程來交換進程PCB 插入記憶體。
兩者有何差別?這是我目前的猜測/理解:
上下文切換是針對整個流程的,所以可能所有頁面都被一次性換出。
因此,進程控制區塊或 PCB 將包含頁面(如果不是,兩者有何關聯?)。
答案1
我認為差異多於共同點。
上下文切換基本上是指程式碼運行所需的任何 CPU 上下文。其中包括 CPU 暫存器的值、標誌、指令指標和堆疊指標、優先權、虛擬記憶體設定(頁表)等。
它不需要包括實際的記憶進程的內存,通常不會,因為完全交換進程的內存會很慢。如果系統可以同時在記憶體中儲存多個程序,而這些程式有辦法知道自己要使用哪一部分內存,那麼在切換到另一個行程時就不需要交換整個記憶體。
(根據維基百科,他們曾經換出不過,整個過程發生在 20 世紀 60 年代。
分頁是在主記憶體和某些輔助儲存之間移動記憶體區塊(「頁面」)的過程,通常以運行進程不可見的方式移動。
在現代系統上,進程之間的上下文切換將包括重新載入頁表,但根本不需要涉及分頁,因為通常所有內容都適合記憶體。另一方面,如果使用足夠的記憶體來需要交換,即使在單一進程內,分頁也可能發生。
所以實際上,上下文切換和分頁是相當正交的,它們只是多任務虛擬記憶體作業系統的兩個概念。
答案2
上下文切換與分頁無關,它允許您同時執行兩個不同的程式。上下文是用戶空間或核心空間程式碼正在運行的內容,並且切換是從用戶空間移動到核心空間,反之亦然。
只有當您有交換空間將要換出的記憶體頁放置到該空間以便將該記憶體頁用於其他用途時,才會發生分頁。如果沒有交換空間,則不會發生分頁,但會發生上下文切換。
當上下文從使用者空間切換到核心空間程式碼(然後可能切換到不同應用程式的其他使用者空間程式碼)時,不一定會進行分頁。 IE。原來的進程記憶體不會自動換出。因此,當第二個進程運行時,它仍然會使用記憶體。