免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4270 | 回复: 0
打印 上一主题 下一主题

aCoral的调度机制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-06 13:36 |只看该作者 |倒序浏览
本帖最后由 sjj0412 于 2010-11-28 11:03 编辑

aCoral中将线程的操作接口都称为线程调度.
  为了适应实时及多核应用,aCoral将调度分为两层,上层为策略,下层为机制。
  何谓调度策略,何谓调度机制?
  调度策略,就是线程的cpu,prio这些值如何定,线程是fifo,还是分时,还有对某些线程要特殊化处理,然后根据这些操作初始化线程,一种策略就对应一种线程。
  调度机制,就是如何从就绪队列上选择线程,如何挂起线程,如何恢复线程,如何延时线程,如何杀死线程。
   结构图如下:
  
3.4.2 调度策略
前面提到过一种策略对应一种线程,调度策略可以很方便的注册,也就是说线程的种类可以很容易扩展。
3.4.2.1 策略分类
aCoral目前实现了四种策略,对应四种线程。
(1) 普通线程(普通策略创建的线程)
这种线程,需要人为指定cpu,优先级信息,通过acoral_create_thread创建。其实这个acoral_create_thread还是通过comm_policy机制来初始化线程的。
(2) 分时线程(分时策略创建的线程)
      aCoral支持相同优先级的线程,对于相同的优先级线程,默认采用fifo的方式调度,因此当用户需要线程以分时的方式和其他线程共享cpu资源时,可以将该线程设置为分时线程,即使用分时策略创建线程,这种分时有两个值得注意的
a)只存在相同优先级线程的分时,不同优先级线程之间不存在所谓的分时,它们还是按谁优先级抢占策略。
b)必须是两厢情愿的,比如a,b线程优先级相同,a使用分时策略创建,b是普通策略创建的,则也达不到分时的效果,因为a分时后,它执行指定时间片后会将cpu叫给b,但由于b没有采用分时,它不会主动放弃cpu.就像单追恋,即使你付出再多,你追求的人也不一定会为你付出一点,她只会一直消耗你的付出,没有尽头。
(3)周期性线程(周期性策略创建的线程)
        这种线程需要每隔一段时间就要执行的线程,这种需求比较常见,比如信号采集,有一个采样周期,每隔多长时间就要采集一路信号。
(4)RM线程(RM策略创建的线程)
RM是一种可以满足任务截止时间的强实时调度算法,aCoral也有限制的实现了此算法,在aCoral称为rm策略,这种策略需要周期性策略支持。
(5)POSIX线程(POSIX策略创建的线程)
          Posix线程属于非实时线程,这类线程的主要特点是越公平越好。aCoral中的posix有两个出发点,一个是实现最大公平,二是实现和posix标准接轨.当然目前只支持部分posix线程特性。为了实现最大公平,采用了这种线程又多了一个自己的调度算法-----电梯调度算法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP