-- From Analysis of the BFS Scheduler in FreeBSD
BFS全称:Brain Fu*k Scheduler,脑残调度器
offset = niffies + (prioratio ∗ rr_interval) prioratio increases by 10% for every nice level
niffies是当前时间;prio_ratios[priority]是一个常量数组,不同的priority对应不同的prio_ratios[priority];rr_interval是timeslice,是CPU分配给每个任务的时间片,是一个常数
虚拟截止时间计算结果:https://wikimili.com/en/Brain_Fuck_Scheduler
使用O(1)调度器中的位图的概念,所有进程被安排到103个queue中,各个进程不是按照优先级而是按照优先级区间被排列到各自所在的区间,每一个区间拥有一个queue。
按照O(1)调度器的方式首先查找位图中不为0的那个queue,然后在该queue中执行O(n)查找,查找到virtual deadline最小的那个进程投入执行。
测试用例集
https://www.cnblogs.com/dragonsuc/p/7144265.html