主题 : 请问,当任务周期=Linux时钟周期时该如何处理? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 418
精华: 0
发帖: 21
金钱: 205 两
威望: 39 点
贡献值: 0 点
综合积分: 42 分
注册时间: 2008-03-29
最后登录: 2011-05-06
楼主  发表于: 2008-09-20 23:37

 请问,当任务周期=Linux时钟周期时该如何处理?

@操作系统Linux,HZ=100。
@设计一任务,周期与Linux时钟相同都为10ms,任务本身可以1ms内执行完毕。
    把它设为最高的实时优先级。
    用它生成了一个等待队列wq。
@系统负载很小。
要想使该任务比较严格地按照10ms的周期执行,可否这样:
在Linux时钟硬件中断里唤醒wq,当返回用户空间时,该任务被调度,得以执行。

或者有其他更合适的处理这种周期=OS时钟周期的任务的方法(除了RTLinux等方法)?

谢谢。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2008-09-21 22:08
在Linux时钟硬件中断里唤醒wq

如果是用wait queue实现的话,wait queue里的进程什么时候获得CPU并不是确定的,换句话说,实时性是不会有保证的。这种方式和用timer实现没有本质的区别。
如果你一定要一个严格的实时任务,实时性操作系统是唯一的选择
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 418
精华: 0
发帖: 21
金钱: 205 两
威望: 39 点
贡献值: 0 点
综合积分: 42 分
注册时间: 2008-03-29
最后登录: 2011-05-06
2楼  发表于: 2008-09-21 22:16
要是把这个任务放在一个tasklet中,然后在时钟中断中调度这个tasklet的话,软实时性可不可以基本有所保障?起码比等待队列实时性要好吧?
[ 此贴被idolspawn在2008-09-21 22:27重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2008-09-21 22:34
一样的,就是放在timer中断的ISR里也不能保证100%的实时,非实时性操作系统,比如Linux,的一个特点就是不能保证确定的中断延迟,也就是不能保证中断一发生,就能进入相应的中断处理。而这正是Linux的实时patch所改进的东西。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 418
精华: 0
发帖: 21
金钱: 205 两
威望: 39 点
贡献值: 0 点
综合积分: 42 分
注册时间: 2008-03-29
最后登录: 2011-05-06
4楼  发表于: 2008-09-21 22:59
原来是这样!谢谢
级别: 新手上路
UID: 73555
精华: 0
发帖: 41
金钱: 210 两
威望: 42 点
贡献值: 0 点
综合积分: 82 分
注册时间: 2012-07-11
最后登录: 2013-06-29
5楼  发表于: 2013-04-02 11:47
原来是这样!谢谢。学习了。