程序、執行緒、協程大亂鬥
阿新 • • 發佈:2021-12-14
程序 VS 執行緒
-
程序是資源分配的最小單位,執行緒是程式執行CPU 排程的最小單位。這個太老生常談了。
-
在早期的作業系統中並沒有執行緒的概念,程序是能擁有資源和獨立執行的最小單位,也是程式執行的最小單位。
任務排程採用的是時間片輪轉的搶佔式排程方式,而程序是任務排程的最小單位。
-
程序有自己的獨立地址空間,每啟動一個程序,系統就會為它分配地址空間,建立資料表來維護程式碼段、資料段、堆空間等。當想進行切換時,儲存上下文然後再切換的方式,會讓切換開銷很大。
-
這個時候發展出了執行緒的概念,它共享程序中的剛提到的那些資料,使用著相同的地址空間,CPU建立、切換一個執行緒的花費遠比程序要小很多。
-
由於多個執行緒共享程序資源,也讓執行緒之間的同步更方便。而程序之間的通訊需要以(IPC)進行。
-
但是多程序程式更健壯,多執行緒程式只要有一個執行緒死掉,整個程序也死掉了,而一個程序死掉並不會對另外一個程序造成影響,因為程序有自己獨立的地址空間。