2014-04-16 57 views
0

我試圖改變在FreeBSD中運行線程的調度方案。 FreeBSD的默認線程調度基於線程的優先級,但我想將其更改爲另一個條件。我想知道下列哪些函數是負責這個調度的:sched_ule.c中的tdq_runq_add()或kern_switch.c中的runq_choose()在FreeBSD中更改調度優先級

回答

0

這個問題的答案是改變功能runq_choose()。因爲這個函數顯示了應該如何選擇線程放入運行隊列。另一個功能只是確保整個排隊過程正在完成。 'tdq_runq_add()'用於處理分時和實時隊列之間的協作。因此,爲了改變優先級,我們最好改變runq_choose()

0

選擇接下來要運行的胎面在choosethread()/usr/src/sys/kern/kern_switch.c中完成。這又調用sched_choose()。根據您使用的調度程序,這在(舊調度程序)或/usr/src/sys/kern/sched_ule.c(ULE調度程序,現在是默認調度程序)中。