Linux
什麼是 Linux 全域調度策略?
我正在學習作業系統。我有個疑問。例如,如果某些程序集(集 1)的
SCHED_RR
調度策略是,而其他一些程序集(集 2)的調度策略是SCHED_FIFO
。現在,當核心必須從這兩組中選擇一些程序時,Linux 使用哪種調度策略?
是否可以更改該政策?如果是這樣怎麼做?
man sched
從概念上講,調度程序為每個可能的 sched_priority 值維護一個可執行執行緒的列表。為了確定接下來執行哪個執行緒,調度程序查找具有最高靜態優先級的非空列表並選擇該列表頭部的執行緒。
執行緒的調度策略決定了它將被插入到具有相同靜態優先級的執行緒列表中的哪個位置,以及它將如何在該列表中移動。
儘管還有一個實時策略,但優先級並不(根本?)重要
為了履行當執行緒被允許加入 SCHED_DEADLINE 策略時所做的保證,SCHED_DEADLINE 執行緒是系統中最高優先級(使用者可控)的執行緒;如果任何 SCHED_DEADLINE 執行緒是可執行的,它將搶占在其他策略之一下調度的任何執行緒。