最近在看ucosii的源码,发现有一点不明白的情况,在进入临界段的情况下,有三种方式: 1、通过处理器关闭总中断,处理完成后再打开总中断 2、中断禁止状态保存到堆栈中,再禁止中断,当执行OS_EXIT_CRITICAL()的时候,是从堆栈恢复中断状态,保存在堆栈中 3、将状态保存在局部变量CPU_SR中;
请问, 第1钟方式,关中断后,在处理临界断代码的时候有可能打开了总中断,此时临界断的代码就有可能保护不了,所以这是第1种方式的弊端; 第2种方式如果保存了中断禁止状态,再禁止中断的时候,如果处理的函数中又把禁止中断打开了,那后面需要保护的临界断代码就可能被中断打断跟第一种方式没什么区别啊,疑惑,求高手赐教, 第一种方式跟第二种方式的区别;
|