打印

请教两个关于eCos的问题

[复制链接]
1989|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
and|  楼主 | 2008-3-10 10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.如果DSR中做了太多的事情,以致DSR消耗的时间超过了调度时间片,会发生什么?会不会被调度走,也就是说,内核本身能被抢占吗?

2.如果所有的用户线程都让出CPU,处于SLEEPING态,那么系统是在核心态等待呢,还是运行一个IDLE线程,好象有个idle_thread_main,是不是在这个时候被运行?

相关帖子

沙发
armecos| | 2008-3-10 11:47 | 只看该作者

ecos问题回答

1、DSR当然可以被调度,只有ISR不能被抢占,所以ISR要尽量短,把大负荷工作甩给DSR做,目的就是减少中断响应延迟时间。

2、会有一个IDLE线程存在的(例如:统计线程),CPU不可能不运行程序。不过如果增加电源管理,可以在此时降低时钟频率,停止某些部件运行。

    详见:
    ecos中断处理和电源管理

使用特权

评论回复
板凳
and|  楼主 | 2008-3-10 13:34 | 只看该作者

虽然把ISR分离出来

原来DSR是在用户级运行的。
另外,虽然把ISR分离出来,提高了中断响应速度,但将未完成的工作交给DSR来作,在调度DSR以及DSR工作完成的时候,多出两次线程切换。当系统的数据进出量很大的时候,也即中断非常频繁的时候,多出的这两次线程切换将对系统的吞吐率造成影响。
不知这样的理解是否正确?谢谢!!

使用特权

评论回复
地板
armecos| | 2008-3-10 16:58 | 只看该作者

你在DSR里不放开对应中断即可,

就是在没有处理完相关中断前不使能此中断。在“ecos中断处理”流程里详细说明了处理顺序。当然,中断负荷不能超过CPU处理能力,否则,无论软件怎样修改也无济于事。

使用特权

评论回复
5
and|  楼主 | 2008-3-10 17:20 | 只看该作者

对,中断负荷能力

这个说法很贴切。其实我的想法就是想提高系统的中断负荷能力。
中断响应速度、中断负荷能力,是系统的两个不同特征。
我是想如果能把DSR和IDLE线程放到核心执行,这样减少切换动作次数,有助于提高系统中断负荷能力。

使用特权

评论回复
6
armecos| | 2008-3-10 20:48 | 只看该作者

那你直接在ISR里处理一切不就可以了,

反正你不在乎中断响应延迟。DSR的切换是必须的,不然还要DSR作甚。

使用特权

评论回复
7
and|  楼主 | 2008-3-10 21:38 | 只看该作者

再琢磨琢磨

谢谢!^_^

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

and

47

主题

829

帖子

3

粉丝