![作業系統是否利用多核心](https://rvso.com/image/1346155/%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1%E6%98%AF%E5%90%A6%E5%88%A9%E7%94%A8%E5%A4%9A%E6%A0%B8%E5%BF%83.png)
我知道更多的核心並不總是更好,大多數應用程式都是單線程的,但是作業系統是否利用額外的核心?例如,假設有一個應用程序,例如字典暴力破解程序。如果程式實際上是多執行緒的,在四核心處理器上執行四個單獨的實例(在字典的單獨 1/4 上)是否會獲得相同的好處?從本質上講,作業系統是否允許所有四個實例真正同時運行而無需搶佔?
我傾向於同時運行許多獨立的應用程式(帶有一堆選項卡的 Firefox、Office、聊天、開發工具、遊戲)。
答案1
一般來說,是的,如果核心可供使用(即其他程式沒有使用它們),作業系統會將程式的 4 個實例分佈在 4 個核心上。與擁有4 個執行緒相比,這可以為您帶來類似的好處,除了潛在的開銷(例如,4 個執行緒很可能共享任何已載入字典的一份副本,而4 個行程很可能每個行程都載入字典的單獨副本)。
答案2
要利用所有可用內核,您需要 (a) 作業系統的支持,以及 (b) 可以利用多個內核的應用程式工作負載。所有現代作業系統都提供作業系統的支持,因此這取決於您的應用程式工作負載是否可以利用多個核心。
如果您同時運行多個應用程序,那麼您可以從多個核心中受益。如果多個程式都嘗試同時運行,作業系統會將它們調度到多個核心上。
如果您一次僅使用一個應用程序,那麼多核心是否可以幫助您取決於應用程式。特別是,它取決於應用程式是被編寫為多執行緒還是單執行緒。單執行緒應用程式一次只能做一件事,因此只能使用單一核心。多線程應用程式創建多個線程來一次執行多項操作,使作業系統能夠在不同的核心上調度每個線程,並有可能在多核心處理器上實現加速。
應用程式需要專門設計和編寫才能使用多執行緒並利用多核,許多常見應用程式不會從多核心中受益,但有些應用程式會受益。例如,Photoshop 的編寫方式是,如果您要求它執行一項計算量大的任務,它會將任務分解為更小的部分,並將這些部分分配給多個線程,以便它們可以在多個核心上運行。這需要Photoshop 開發人員進行特殊編程,並需要開發人員付出大量額外的努力,因此許多或大多數應用程式都懶得使用這種編程風格,並且不會從多核心機器中受益匪淺,但有些應用程式會受益匪淺。
鑑於您傾向於同時運行許多獨立程序,您可能會看到至少多核心處理器的一些好處。