进程同步问题

我的系统里运行了2个进程:A和B,开了一个共享内存区:sc,进程A中有一个中断服务程序进行数据采集,并且在ISR函数对共享内存区sc进行写操作。而进程B则需要经常对共享内存区sc进行读操作。
在ISR是不能调用内核函数来进行同步的,例如信号灯等都不能用了。
那么在这种情况下用什么方法来同步这两个进程对共享内存数据的读写呢?

一般来说ISR都要attach一个线程,你再线程中可以做所有事情

我是把所有的事情都放在了ISR里作了,而它attach的那个线程里什么也没有做。
我试了把ISR里的代码移到attach的那个线程中去做了,看上去工作仍是正常的。
但是什么应该在ISR里做?什么应该在线程里做呢?
如果在线程里做的话,中断非常频繁的话是否会丢失数据呢?

没有一定的规定,一般来讲,ISR要尽量的短。如果ISR时间很长的话,系统的性能会下降。
还有就是有的事不能在ISR里做,(要调用kercall)那也只能移到线程去做了。

对于你的ISR同步问题,用InterruptLock()和InterruptUnlock()解决。你是两个Process的话,可以把spinlock放在共享内存中。