上下文切換(有時也稱做程序切換或任務切換)是指cpu 從乙個程序或執行緒切換到另乙個程序或執行緒。
程序(有時候也稱做任務)是指乙個程式執行的例項。在 linux 系統中,執行緒就是能並行執行並且與他們的父程序(建立他們的程序)共享同一位址空間(一段記憶體區域)和其他資源的輕量級的程序。
上下文是指某一時間點 cpu 暫存器和程式計數器的內容。暫存器是 cpu 內部的數量較少但是速度很快的記憶體(與之對應的是 cpu 外部相對較慢的 ram 主記憶體)。暫存器通過對常用值(通常是運算的中間值)的快速訪問來提高計算機程式執行的速度。程式計數器是乙個專用的暫存器,用於表明指令序列中 cpu 正在執行的位置,存的值為正在執行的指令的位置或者下乙個將要被執行的指令的位置,具體依賴於特定的系統。
稍微詳細描述一下,上下文切換可以認為是核心(作業系統的核心)在 cpu 上對於程序(包括執行緒)進行以下的活動:(1)掛起乙個程序,將這個程序在 cpu 中的狀態(上下文)儲存於記憶體中的某處,(2)在記憶體中檢索下乙個程序的上下文並將其在 cpu 的暫存器中恢復,(3)跳轉到程式計數器所指向的位置(即跳轉到程序被中斷時的**行),以恢復該程序。
上下文切換有時被描述為核心掛起 cpu 當前執行的程序,然後繼續執行之前掛起的眾多程序中的某乙個。儘管這麼說對於澄清概念有所幫助,但是這句話本身可能有一點令人困惑。因為通過定義可以知道,程序是指乙個程式執行的例項。所以說成掛起乙個程序的執行可能更適合一些。
上下文切換與模式切換
上下文切換的消耗
上下文切換通常是計算密集型的。也就是說,它需要相當可觀的處理器時間,在每秒幾十上百次的切換中,每次切換都需要納秒量級的時間。所以,上下文切換對系統來說意味著消耗大量的 cpu 時間,事實上,可能是作業系統中時間消耗最大的操作。
linux相比與其他作業系統(包括其他類 unix 系統)有很多的優點,其中有一項就是,其上下文切換和模式切換的時間消耗非常少。
上下文切換詳解
上下文切換 有時也稱做程序切換或任務切換 是指cpu 從乙個程序或執行緒切換到另乙個程序或執行緒。程序 有時候也稱做任務 是指乙個程式執行的例項。在 linux 系統中,執行緒就是能並行執行並且與他們的父程序 建立他們的程序 共享同一位址空間 一段記憶體區域 和其他資源的輕量級的程序。上下文是指某一...
上下文切換詳解
上下文切換 有時也稱做程序切換或任務切換 是指cpu 從乙個程序或執行緒切換到另乙個程序或執行緒。程序 有時候也稱做任務 是指乙個程式執行的例項。在 linux 系統中,執行緒就是能並行執行並且與他們的父程序 建立他們的程序 共享同一位址空間 一段記憶體區域 和其他資源的輕量級的程序。上下文是指某一...
上下文切換
1 系統呼叫 一次系統呼叫其實是發生了兩次cpu上下文的切換 首先將使用者態的cpu暫存器中的指令儲存在系統核心中。為了執行核心態 需要將暫存器更新為核心態指令的位置,然後跳轉到核心空間去執行任務。當核心態的指令執行完成的時候,cpu暫存器將恢復儲存在系統核心中的上一次執行的使用者態,然後切換到使用...