核心如何在程序之間進行上下文切換?


當需要使用者模式和核心模式之間的互動時,不需要上下文切換;簡單的模式轉換並非上下文切換。因為,取決於作業系統,此時也可能發生上下文切換。

讓我們看看上下文切換的主要步驟

  • CPU暫存器的值通常儲存在發生時鐘中斷之前正在執行的程序的程序表中。

  • 要執行下一個程序,則從程序中載入暫存器並由CPU排程程式選擇。

考慮一個多程式單處理器系統,上下文切換頻繁發生,因此所有程序似乎併發執行。如果一個程序有多個執行緒,作業系統使用上下文切換技術來排程執行緒,使它們看起來並行執行。

如果執行緒在核心級別實現,則會出現這種情況。執行緒也可以在執行時庫的使用者級別實現。因為作業系統不提供執行緒排程,程式設計師有責任為每個執行緒提供足夠的CPU時間,以便程序中的所有執行緒都能取得進展。

程序間的上下文切換非常昂貴。在切換程序之前,其程序控制塊(PCB)必須由作業系統儲存。

PCB包含以下資訊:

  • 程序狀態。

  • 程式計數器 (PC)。

  • 不同暫存器的值。

  • 程序的CPU排程資訊。

  • 關於程序的記憶體管理資訊。

  • 該程序的可能會計資訊。

  • 程序的I/O狀態資訊。

當作業系統儲存當前正在執行程序的PCB時,它會載入下一個要在CPU上執行的程序的PCB。這是一個繁重的任務,需要更多時間。

讓我們看看下面的圖表,說明程序之間是如何進行上下文切換的:

更新於:2021年12月1日

2K+瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.