内核同步介绍
1.从2.0开始,Linux开始支持多处理器
2.所谓临界区就是访问和操作共享数据的代码段
3.我们应该不让两个执行线程在同一个临界区同时执行
4.i++的机器指令步骤
- 得到当前变量i的值并且拷贝到一个寄存器中
- 将寄存器的值+1
- 将i的新值写会到内存中
5.内核为我们实现了一些原子操作的接口
6.一个锁被高度争用,会严重降低系统性能
7.锁争用严重时,加锁太粗不好,锁争用不严重时,加锁太细也不好,在小型机上,CPU核数较少,争用也较少,加锁太细有时也不好
1.造成并发执行的原因
在单处理器上,用户进程可以被抢占并重新调度,如何被抢占的进程在临界区,抢占的进程有去了临界区,就会产生竞争,这种叫伪并发
在多处理器上,进程可以同时执行,叫做真并发
对内核而言,如果内核操作某个资源的时候,来了个中断,中断处理程序还要访问这个资源,这就是个并发问题
2.死锁
进程互相等待资源,谁都无法执行,预防死锁最基本的是力求简单,顺序加锁
内核同步方法
1.原子操作
原子操作是其它同步方法的基石,内核提供了两组原子操作接口
- 针对整形的操作
- 针对单独的位操作