操作系统——多级反馈调度算法的一个具体实现

操作系统需要处理各种各样的任务,需要让每一个任务都尽可能地满意,因此必须需要有复杂的算法来折中各种各样的因素;但另一方面,在每一次任务调度的时候我们都需要使用schedule(),那么就应当使它的算法实现尽量简单,避免调度造成过多的额外开销,下面给出一个实例。

这个函数的关键是counter变量。

counter的第一个作用是作为时间片。

counter会出现在时钟中断中,时钟中断的处理函数被初始化为set_intr_gate(0x20, &time_interrupt)。每次时钟中断,就会将当前任务的counter-1,但counter等于0时,就调用schedule()进行线程切换:

if(current->counter = 0) schedule();

 schedule()就是按时间片进行轮转调度,这是实现schedule()的基础。

此外,counter的第二个作用是任务的优先级:

可以看出,每次调度都要找到队列中counter最大的任务,进行切换,counter越大,优先级越高,这就是多级反馈队列调度的另一个基础——优先队列。

 现在&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值