簡體   English   中英

Linux調度程序如何在多核處理器上調度進程?

[英]How Linux scheduler schedules processes on multi-core processors?

多核處理器利用線程級並行,這意味着多個線程並行運行。 假設一個進程只有一個線程,那么其他核心在執行這個進程時是否保持空閑狀態? 在linux系統中,調度程序將進程和線程視為一項任務。 它在調度時不區分進程和線程。 那么,這是否意味着不同的內核並行執行不同進程的不同線程?

當上下文切換發生時,這是僅發生在一個內核還是cpu的所有內核?

你是對的:從Linux調度程序的角度來看,進程和線程是相同的。 這些任務根據調度程序的規則排隊等待輪到他們。

存在調度規則,例如優先級或CPU親和性(以防止線程遷移到另一個核心並保留緩存數據)。

上下文切換可能在每個固定時間量(時間片)上發生在核心上,因為CPU周期性地自動運行一些內核代碼以允許搶占。 根據調度程序的規則,可以為多個時間片運行任務。 當線程調用使其不可運行的函數(例如,等待IO)時,也可能發生上下文切換。

在某些情況下,如果不是全部,每個核心都有一個調度過程可以完成所有這些操作。

超級用戶也有類似的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM