日期:2014-05-16  浏览次数:20582 次

Android之linux基础教学之八 内核同步介绍

1.第一个问题:为什么要同步??????????

????如果这两件事情操作了共同的数据,就需要干完一件,接着干另一件。

2.第二个问题:读和写????????

????????? 数据是一整块不可分割的东西。在同步的概念里面,写数据和读数据是不同的。两个进程可以同时读取数据,但是两个进程不能同时写,或者一个读,一个写。

3.同步的粒度?:大还是小??????

???? 同步的粒度也是一个很重要的概念,如果粒度过大,则造成瓶颈,粒度过小则造成了系统的复杂性。这是一个权衡的目标。但是一开始就定义一个大粒度的同步机制,然后再逐步减小粒度是个不错的选择。实际上linux也是这么做的。

4.同步和同时执行????????

?????? 同步和同时执行是两种概念。再单核处理器上,同时执行是不可能的,但是还是会有同步的问题。

5.同步何时发生?

????????? 1.中断。

???????2.进程调度。

???????3.多CPU的同时执行。

6.一些建议

????? 1.锁的是数据而不是代码。

??????2.只有局部变量和只在一个进程中使用的变量不需要锁。

7.死锁。

????? 死锁产生的原因是两个进程在互相等待。下面的经验很有用,如果有N个锁,请以同样的顺序获取这些锁。

8.一个很好的练习。

????? 生产者,消费者模型。采用生产者“推”或者 消费者“拉”数据的方式,也许对同步就有了更深刻的认识。

??????