《野火RT-Thread内核实现与应用开发实战》笔记7. 支持时间片

1. 前期回顾

前面的实验中,每个优先级下面只有一个线程,系统调度是根据优先级来切换线程,当同一优先级下有多个线程时,系统又是如何进行调度的呢?

同一个优先级下有两个或两个以上线程的时候,线程支持时间片功能,即我们可以指定线程持续运行一次的时间,单位为 tick。 假如有两个线程分别为线程 2 和线程 3,他们的优先级都为 3,线程 2 的时间片为 2,线程 3 的时间片为 3。当执行到优先级为 3 的线程时,会先执行线程 2,直到线程 2 的时间片耗完,然后再执行线程 3 。

2. 核心知识点
  • 线程控制块中添加两个32位无符时间片相关变量init_tick和remaining_tick,init_tick表示初始时间片,remaining_tick表示剩余时间片。线程初始化时,init_tick和remaining_tick会被设置为用户传入的线程时间片值。
  • 周期性进入的系统时基(SysTick)中断处理函数会将当前线程的remaining_tick递减1,如果判断当前线程的remaining_tick已减为0,则将remaining_tick重置为init_tick,将当前线程从就绪列表移除,并插入到该优先级下的链表的尾部,然后执行系统调度。这一过程表明当前线程时间片已经用完,需要让出处理器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值