Linux内核设计与实现 总结笔记(第十章)内核同步方法

一、原子操作

 原子操作可以保证指令以原子的方式执行----执行过程不被打断。

1.1 原子整数操作

针对整数的原子操作只能对atomic_t类型的数据进行处理。

  • 首先,让原子函数只接收atomic_t类型的操作数,可以确保原子操作只与这种特殊类型数据一起使用,并且不会被其他人使用。
  • 使用atomic_t类型确保编译器不对,相应的值进行访问优化。
  • 在不同体系结构上实现原子操作的时候,使用atomic_t可以屏蔽其间的差异

atomic_t类型定义在文件<linux/types.h> 中

typedef struct {
    volatile int counter;
} atomic_t;

二、自旋锁

三、读--写自旋锁

四、信号量

五、读--写信号量

六、互斥体

七、完成变量

八、BLK:大内核锁

九、顺序锁

十、禁止抢占

十一、顺序和屏障

猜你喜欢

转载自www.cnblogs.com/ch122633/p/11029008.html