eCos的进程调度和管理

本文介绍了eCos的两种进程调度方式:bitmap scheduler和multi-queue scheduler。bitmap scheduler因简单高效而适用于有限数量的任务,而multi-queue scheduler则支持更多任务,通过round-robin或非时间片调度策略进行任务切换。此外,还提到了CYGIMP_KERNEL_SCHED_SORTED_QUEUES选项对于高优先级任务调度的重要性。
摘要由CSDN通过智能技术生成

eCos 支持两种进程调度方式, 一种是bitmap scheduler, 另外一种叫multi-queue scheduler.

先说第一种, 所谓bitmap scheduler -- 为什么叫这个? 我也不知道.

就是说每个优先级只能有一个任务, 优点和缺点都很明显, 优点就是scheduler很简单而且高效, 其实简单就意味着高效了 -- 我认为; 所以顺便表达一个观点 -- 如果你是个程序员, 程序能工作只是很基础的一个东西, 简单, 高效, 易懂才是你应该追求的.

那么其缺点是什么呢? 很明显, 如果它只有32个优先级, 那么它只能有32个task. eCos就只有32个优先级, 0最高, 31最底; 对一般应用来说也够了. 有人说那我多增加点优先级不就ok了吗? 不是那么简单的, 有10万个优先级你查一遍得花多少时间?

 

第二种, multi-queue scheduler

与第一种的区别就是一个优先级上可以支持多个task, 也就是说理论上支持尽可能多的task. 不同优先级之间的调度没有什么需要再多说的了, 主要是同一优先级上的任务如何调度?

eCos也支持两种策略, 一就是通常的round-robin, 也就是time-slicing, 你可以设置一个time slice的长度, 当没有更高优先级的task可以运行的状况下, 相同优先级的task会以一个time-slice的长度为单位平分CPU的时间(除非你主动放弃CPU, 比如说block on semaphore或者yield), 另外一种就是eCos不会主动按照某个time-slice schedule到下一个task, 只有task自己yield cpu或者block on a semaphore或者mutex, 以上这些在编译eCos kernel时都有对应的选项,这里就不一一列出来了.

 

另外eCos还有一个选项对multi-queue scheduler的影响也比较大, 就是一个叫CYGIMP_KERNEL_SCHED_SORTED_QUEUES的选

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值