3640|1

337

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

有关uC/os--ii书中的一个问题 [复制链接]

 各位大虾,看uC/os--ii书中有这样一句话,不知道是什么意思。“关中断时间最长不超过内核本身的关中断时间”

最新回复

关中断的时间最长不超过内核本身的关中断时间 我的理解是这样的,在UCOS这个实时内核中在处理很多问题时是需要关中断的,比如临界数据的处理、中断嵌套层数计数处理、任务调度等情况下OS都要先关闭中断处理后再开中断。具体的代码比如任务调度锁函数 void  OSSchedLock (void) { #if OS_CRITICAL_METHOD == 3       /* Allocate storage for CPU status register*/     OS_CPU_SR  cpu_sr = 0; #endif     if (OSRunning == OS_TRUE) {     /* Make sure multitasking is running*/         OS_ENTER_CRITICAL();         if (OSIntNesting == 0) {      /* Can't call from an ISR  */             if (OSLockNesting < 255u) { /* Prevent OSLockNesting from wrapping back to 0 */                 OSLockNesting++;   /* Increment lock nesting level*/             }         }         OS_EXIT_CRITICAL();     } } 这样实时内核运行时就会有一定的时间是关着中断的,这个时间虽然很短,但是客观存在。把内核中所有关中断的时间总和叫做系统关中断时间T disable interrupt of OS,不仅仅是uCOS存在这个时间。所有的实时内核都存在这个时间,并且这个时间越小这个实时内核的实时性能越好。所以很所商用实时内核把这个时间作为衡量自己实时内核性能的一种参数。 而“关中断的时间最长不超过内核本身的关中断时间”就是用户自己的应用代码中关中断的总时间尽量不要大于T disable interrupt of OS。我们可以用一个极端的例子来说明这一点。因为任何系统都是基于系统时钟节拍的,而系统时钟节拍就是一个定时中断,如果我们总是关中断以至于影响到了系统的时钟节拍,系统的性能不久无从谈起了么。呵呵。 不知道这样解释你是否理解。呵呵  详情 回复 发表于 2011-3-1 14:17
点赞 关注
 

回复
举报

463

帖子

0

TA的资源

纯净的硅(中级)

沙发
 

回复 楼主 ZHANGXUEJIE 的帖子

关中断的时间最长不超过内核本身的关中断时间
我的理解是这样的,在UCOS这个实时内核中在处理很多问题时是需要关中断的,比如临界数据的处理、中断嵌套层数计数处理、任务调度等情况下OS都要先关闭中断处理后再开中断。具体的代码比如任务调度锁函数

void  OSSchedLock (void)
{
#if OS_CRITICAL_METHOD == 3       /* Allocate storage for CPU status register*/
    OS_CPU_SR  cpu_sr = 0;
#endif
    if (OSRunning == OS_TRUE) {     /* Make sure multitasking is running*/
        OS_ENTER_CRITICAL();
        if (OSIntNesting == 0) {      /* Can't call from an ISR  */
            if (OSLockNesting < 255u) { /* Prevent OSLockNesting from wrapping back to 0 */
                OSLockNesting++;   /* Increment lock nesting level*/
            }
        }
        OS_EXIT_CRITICAL();
    }
}

这样实时内核运行时就会有一定的时间是关着中断的,这个时间虽然很短,但是客观存在。把内核中所有关中断的时间总和叫做系统关中断时间T disable interrupt of OS,不仅仅是uCOS存在这个时间。所有的实时内核都存在这个时间,并且这个时间越小这个实时内核的实时性能越好。所以很所商用实时内核把这个时间作为衡量自己实时内核性能的一种参数。
而“关中断的时间最长不超过内核本身的关中断时间”就是用户自己的应用代码中关中断的总时间尽量不要大于T disable interrupt of OS。我们可以用一个极端的例子来说明这一点。因为任何系统都是基于系统时钟节拍的,而系统时钟节拍就是一个定时中断,如果我们总是关中断以至于影响到了系统的时钟节拍,系统的性能不久无从谈起了么。呵呵。
不知道这样解释你是否理解。呵呵
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表