《linux内核设计与实现》关于内核同步。(2.6内核)
1.概念
同步:避免并发和防止竞争条件。(synchronization)
2.内核中可能造成并发执行的原因
《1》.中断
《2》.软中断和tasklet
《3》.内核抢占。
《4》.睡眠以及用户空间的同步:再内核执行的进程可能会睡眠。会唤醒调度程序,调度一个新的用户进程执行。
《5》.SMP-对称多处理器。
3.死锁
《1》.自死锁:对自己持有的锁再次去获取。
《2》.ABBA死锁:(两个线程,两个资源)
4.防止死锁
《1》.按顺序加锁。
《2》.不要重复申请同一个锁。
《3》.设计力求简单。
5.面临的问题
争用、扩展性
锁的作用使程序以串行方式对资源进行访问。高度争用的锁会成为系统瓶颈。
锁的扩展性好,锁的细粒度由粗到细。在集群处理机器上锁的细粒度小些,会降低争用一个锁,提高性能;但时在双处理器,粒度细了,锁开销大,会降低性能。