上下文切換:線程之間切來切去叫上下文切換。上下文切換給我們的錯覺就是好像很多人在同時處理(線程特別多,上下文消耗cpu資源也很多)
舉例:
在任何一個時刻,一個核能處理一個任務,但給我們的感覺是cpu處理了好多事情,沒感覺到排隊。在聽歌同時可以聊天可以做別的事情。那cpu是怎么做到的?
假設你有很多任務,cpu是通過時間片的策略來照顧到很多任務。為每個任務分配一個時間片。如一個分配0.1s,一個分配0.3s,不會把a的事情處理完了才去處理b的事情,只是在a上消耗了0.1s時間,如果沒處理完我會保存下來當前的狀態。然后再去處理別人的事情,等我處理完了,在回來接着剛才的事情繼續。cpu處理速度非常快,一個事幾毫秒就處理完了,幾毫秒人是感覺不到的。1s時間cpu可能處理了好多事情,在這些事情之間切來切去。切換的時候要保存下當前狀態的信息,這個信息就叫上下文。處理完別的事情再回來的時候,要不他之前保存的信息再提取出來,接着處理。
上下文切換可以減少但不可以避免,dos操作系統可以沒有上下文切換
只有單進程單線程的系統才不需要上下文切換。這種操作系統目前是沒有的。
中斷:
正在上課的時候有人敲門。去開門,就需要先記錄下來講課的地方,敲門對我來說就是一次中斷。
cpu處理事情會有優先級,需要先處理的。鼠標和鍵盤的優先級是最高的,這兩個事情做的時候可以不排隊。所以鼠標和鍵盤動一次就是一次中斷。中斷一般是硬件發出的。
硬件中斷是不能避免的。
通過一次上下文切換來完成一次中斷。
中斷會導致上下文切換。上下文切換不是都是中斷引起的。