eCos的进程调度和管理
来源:互联网 发布:node.js restful 框架 编辑:程序博客网 时间:2024/06/09 21:13
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的选项, 其作用一般可能用不到, 具体作用为, 假设有两个task A 和B, A的优先级大于B, 如果他们同时等待一个Semaphore C:
A->WaitSemaphore(C);
B->WaitSemaphore(C);
当C被POST的时候, 我们期望的值应该是优先级高的task先运行, 但如果你不enable 这个选项, 则结果相反. 因为eCos的task在等待一个semaphore的default 对task的处理方式是 last-in-first-out queuing.
ok, 今天到此为止了, 睡觉先.
- eCos的进程调度和管理
- 进程管理和调度
- 进程管理和调度
- 进程管理和调度 --调度器的实现
- Linux进程调度策略的发展和演变--Linux进程的管理与调度(十六)
- Linux进程调度策略的发展和演变--Linux进程的管理与调度(十六)
- 进程的管理与调度
- Linux的任督二脉:进程调度和内存管理
- Linux的任督二脉:进程调度和内存管理
- Linux的任督二脉:进程调度和内存管理
- 【进程管理】进程的调度与切换
- 【进程管理】进程调度
- Linux 进程管理剖析: 创建、管理、调度和销毁进程
- Linux内核之进程管理和调度
- 进程管理和调度(第二章)
- 理解linux进程管理和调度
- Linux任务调度和进程管理
- 作业调度和进程调度的区别
- QTP Date Table Objects
- 针对 HTML 开发人员的 Adobe AIR 1.1 语言参考
- 在pl/sql中使用exp/imp工具实现oracle数据导出/导入
- 又一C#中将ListView数据导出为excel
- LWUIT + ChartComponent 之三实现柱体图(HBarChar)
- eCos的进程调度和管理
- Google发布GSAve 人人都能架设搜索服务器
- DunDas对应不同坐标系显示双y轴
- 利用脚本加入域和退出域
- MyEclipse使用快捷键
- CSDN下载频道积分规则2.1
- MyEclipse 6 Java EE 开发中文手册
- 在C#中运用SQLDMO备份和恢复SQLServer数据库
- 如何将ListView中的数据导出到Excel