isr和函数调用之间的变量共享

时间:2017-07-28 13:47:51

标签: operating-system mutex scheduler spinlock process-management

考虑以下代码

int Var;

Function1() {

    [CS_Start]

    Var++;

    [CS_End]

}

Function2() {

    [CS_Start]

    Var += 2;

    [CS_End]

}

ISR() {

    [CS_Start]

    Var--;

    [CS_End]

}

如何在多任务处理环境中保护Var?我理解的设计之一是将Var保持为易失性,以便在多处理器调度方案中是安全的。此外,可以实现旋转锁定(代替互斥锁)以保护关键部分。

如果由Function1和ISR获取Spinlock(优先级高于调度程序计时器),会发生什么情况?ISR将继续轮询,而Function1永远不会有机会释放锁定。解决这个问题的方法是什么?

0 个答案:

没有答案