為什麼進程切換不會讓我們的運算體驗變得不連續

為什麼進程切換不會讓我們的運算體驗變得不連續

我們都知道CPU正在運行的進程之間切換,但是為什麼當CPU切換並且我們正在使用應用程式時我們從未經歷過任何中斷呢?

我想說這是因為進程之間切換的速度太快了,但我很好奇有多少進程會真正影響CPU 的效能,以至於人們會在單一應用程式上遇到中斷(或中斷),以及如何影響CPU 的效能。

答案1

我想說這是因為進程之間切換的速度太快了

你是對的。但微處理器執行的操作仍然是以離散步驟執行的,而不是以連續的方式執行的。每個時鐘週期CPU都會讀取程式計數器指向的記憶體內容。在下一個時鐘週期,它對指令進行解碼,依此類推。如果你能變得足夠快(注意到),你會注意到你認為連續的音樂實際上播放了一段時間,然後停止然後再次播放,依此類推。

快速而複雜的野獸使進程切換速度極快的稱為短期調度程式(CPU 調度程式)。它必須很快,因為它每隔幾毫秒就會被呼叫一次,而且它沒有做任何有用的工作(從使用者的角度來看)。儘管不同的實作可能略有不同,但幾乎所有調度程序都為不同類別的進程(例如活動進程、後台進程等)維護優先權隊列。

因此,即使在電腦上運行數千個進程,也只有少數進程會直接與使用者互動。調度程序在切換進程時會考慮此資訊。因為更新檢查過程可以等待,但即時音樂串流不能等待。

但我很好奇有多少進程會真正影響 CPU 的效能,以至於人類會經歷中斷

沒有神奇的數字,還有很多其他因素會影響效能(記憶體速度、大小等)。我認為在調度程序性能出現任何問題之前,您將耗盡內存。可能表現為中斷的一件事是當某些高優先級中斷例程被呼叫並且執行很長時間時。

有趣的事實: - 為了讓系統上的用戶體驗更好(我忘了),史蒂夫喬布斯指示蘋果工程師為滑鼠中斷分配最高優先級,以便指針在移動時不會滯後。

相關內容