單執行緒處理器上的多任務錯覺?

單執行緒處理器上的多任務錯覺?

官方對此有何解釋?我似乎總是忘記。

答案1

單處理器上的多任務或多執行緒也稱為感知多執行緒。顯然,對於一個CPU,不可能同時執行指令。相反,我們交錯進程,給人一種多執行緒的錯覺。

正如 @Journeyman Geek 所補充的,這使用了搶佔。這是我們有某種結構(想想隊列)的地方,程式被儲存在其中,每個進程都有許多週期可以執行。然後當前正在運行的程式被搶佔(或與另一個程式交換),然後該程式運行。有許多策略可以決定哪些程式何時執行。我們可以完全公平(例如:循環),每個程式都會收到一定的時間量子,或者我們可以按優先級將程式分開,並且僅在沒有更高優先級的程式要執行時才執行較低優先級的程式(例如:優先權)佇列)。

當您正在編寫 GUI 應用程式並運行較長的後台任務時,這很有幫助。如果將其編寫為單線程應用程序,則 GUI 的前端將凍結。然而,透過兩個線程,GUI 仍保持回應。即使只有一個 CPU,進程的交錯也意味著 GUI 保持回應,而後台進程繼續運行並取得進展。

答案2

超執行緒最有可能的是,對於現代系統 - 簡而言之,部分但不是整個核心被複製,因此每個核心可以運行更多線程

答案3

基本上,作業系統依次獲取每個應用程式(以及每個應用程式中的每個執行緒)並運行幾個 CPU 週期。因此,如果您運行 10 個應用程序,則在 10 秒的時間內,每個應用程式將獲得 1 秒鐘的實際運行時間。

這意味著每個應用程式的運行速度比它是電腦上運行的唯一應用程式時要慢 - 但對於絕大多數應用程式來說,它們的大部分時間都花在等待用戶輸入上。

維基百科了解更多。

答案4

基本上,當您在單執行緒 cpu 上執行許多應用程式時,作業系統會在應用程式之間切換 cpu。因此,基本上發生的情況是,CPU 將其周期分配給所需的應用程序,然後移至另一個應用程序,然後返回第一個應用程式。這一切都是由作業系統完成的。當CPU切換到同時運行的另一個應用程式時,前一個應用程式的狀態將被保存,以便當CPU再次存取該應用程式時,它會記住它離開時的應用程式的狀態。

相關內容