- 論壇徽章:
- 0
|
一個(gè)最簡(jiǎn)單的方案
在全局內(nèi)存區(qū)域里面維護(hù)一個(gè)"待調(diào)度的進(jìn)程隊(duì)列",然后當(dāng)某個(gè)CPU需要scheule的時(shí)候,到這個(gè)隊(duì)列里面找一個(gè)進(jìn)程,開始執(zhí)行.
因?yàn)樵L問全局內(nèi)存區(qū)的時(shí)候要加鎖,所以對(duì)多核來(lái)說(shuō)性能不太好.尤其是核多的時(shí)候
作為改進(jìn)方案,可以為每個(gè)CPU核維護(hù)一個(gè)本地"待調(diào)度進(jìn)程隊(duì)列".(比如放堆棧里面了,per-cpu專屬內(nèi)存區(qū)域了).
關(guān)鍵問題在于,如何在 全局調(diào)度隊(duì)列 和 本地調(diào)度隊(duì)列 里面平衡負(fù)載.
比如說(shuō)某些任務(wù)要求實(shí)時(shí)了,某些任務(wù)要求吞吐率了,某些任務(wù)要訪問打印機(jī)硬盤了.......
QNX的多核調(diào)度采用了 限定性多重處理模式 的策略,據(jù)說(shuō)很不錯(cuò). |
|