7、顺序锁
8、读-拷贝-更新(RCU)
RCU只保护被动态分配并通过指针引用的数据结构
在被RCU保护的临界区中,任何内核控制路径都不能睡眠。
9、信号量
Linux提供两种信号量:
内核信号量,由内核控制路径使用
System V IPC信号量,由用户态进程使用
(1)读/写信号量
(2)补充原语
(3)禁止本地中断
(4)禁止和激活可延迟函数
10、对内核数据结构的同步访问
(1)内核开发者才去下述由经验得到的法则:把系统中的并发度保持在尽可能高的程度。
系统中的并发度主要取决于两个因素:同时运转的I/O设备数和进行有效工作的CPU数。
(2)为了有效地利用CPU,应该尽可能避免使用基于自旋锁的同步原语
11、在自旋锁、信号量及中断禁止之间选择
(1)保护异常所访问的数据结构
(2)保护中断访问的数据结构
(3)保护可被延迟函数所访问的数据结构
(4)保护由异常和中断访问的数据结构
(5)保护由异常和可延迟函数访问的数据结构
(6)保护由中断和可延迟函数访问的数据结构
(7)保护由异常、中断和可延迟函数访问的数据结构
12、避免竞争条件的实例
(1)引用计数器
(2)大内核锁
(3)内存描述符读/写信号量
(4)slab高速缓存链表的信号量
(5)索引节点的信号量