linux任務執行前,cpu都要知道從任務從**載入、又從**開始執行,也就是說,需要系統事先幫它設定好cpu暫存器和程式計數器
cpu上下文:cpu暫存器和程式計數器
cpu暫存器:
cpu內建容量小、速度極快的記憶體
程式計數器:
儲存cpu正在執行的指令位置、或者即將執行的下一條指令位置
把前乙個任務的cpu上下文儲存起來,然後載入新任務的上下文到這些暫存器和程式計數器,最後在跳轉到程式計數器所指的位置
類別:程序上下文切換、執行緒上下文切換、中斷上下文切換
**程序上下文切換:**linux按照特權等級,把程序的執行空間分為核心空間和使用者空間,分包對應下圖,從乙個程序切換到另乙個程序
linux為每個cpu都維護了乙個繼續佇列,將活躍程序(正在執行的程序和正在等待的程序)按照優先順序和等待cpu的時間排序,然後選擇最需要cpu的程序,也就是優先順序最高和等待時間最長的程序來執行
cpu時間被劃分為一段段的時間片,這些時間片再被輪流分配給各個程序。這樣,當某個程序的時間片耗盡了,就會被系統掛起,切換到其他正在等待cpu的程序執行
程序和執行緒
執行緒是排程的基本單位,而程序則是資源擁有的基本單位
所謂核心中的任務排程,實際上的排程是物件是執行緒;而程序只是給執行緒提供了虛擬記憶體、全域性變數等資源
(1)當程序只有乙個執行緒,可以認為程序就是執行緒
(2)當程序有多個執行緒,這些執行緒會共享相同的虛擬記憶體和全域性變數等資源,這些資源在上下文切換是不需要修改的
(3)執行緒也有自己的私有資料,比如棧和暫存器,在上下文切換也需要儲存
上下文切換工具vmstat 5
CPU 上下文切換
乙個酒店,裡面滿滿的客人在吃飯,好比是,酒店裡面的所有人速速離開酒店,讓下一波客人吃。好比是 酒店裡的客人不需要離開酒店,但是服務員就是不給他們上菜,因為服務員去給 vip 客戶服務去了,好在 vip 客戶比較好說話,很快就伺候好了,服務員再來給酒店裡的客人服務 不好意思,這道菜的工序比較複雜,讓您...
筆記 cpu上下文,上下文切換
cpu 上下文 cpu 暫存器,是 cpu 內建的容量小 但速度極快的記憶體。而程式計數器,則是用來儲存 cpu 正在執行的指令位置 或者即將執行的下一條指令位置。它們都是 cpu 在執行任何任務前,必須的依賴環境。cpu 上下文切換 就是先把前乙個任務的 cpu 上下文 也就是 cpu 暫存器和程...
理解CPU上下文切換
liunx是多工作業系統,但當任務數量大於cpu數量時,系統會在很短的時間內將cpu輪流分配給任務,並不是所有的任務都在同時執行。每個任務在執行前,系統都需要事先設定好cpu暫存器和程式計數器。cpu暫存器是cpu內建的容量小速度極快的記憶體,程式計數器是用來儲存cpu正在執行的指令位置 或者即將執...