保护锁免受不平衡的解锁操作
摘要:锁是一种构建块同步原语,它在共享内存并行程序中实现对共享数据的互斥访问。通常,通过在访问共享数据的代码周围加上一对lock()和unlock()操作来实现互斥。当操作的顺序被违反时,会导致并发错误。在本文中,我们研究了一种特定的误用模式,即在未先发出lock()指令的情况下先发出unlock()指令,这种情况可能出现在具有复杂控制流的代码中。我们在研究的几个重要开源代码库中发现,这种误用令人惊讶地常见。我们系统地研究了这种误用导致的结果在几种流行的锁算法中会发生什么。我们研究了如何检测误用以及如何修复锁定协议以避免误用的不良后果。大多数锁只需进行简单的更改即可检测和防止此误用。我们评估了修改后实现的性能特征,结果显示在大多数可扩展锁中只有轻微的性能损失。
作者:Vivek Shahare, Milind Chabbi and Nikhil Hegde
论文ID:2304.11983
分类:Distributed, Parallel, and Cluster Computing
分类简称:cs.DC
提交时间:2023-04-25