论文部分内容阅读
现代计算机系统中的同步概念通常包括两层含义,即进程同步和数据同步,其中进程同步机制可分为阻塞式和非阻塞式两种。这两种同步机制的关键区别在于是否会挂起相关进程。传统的锁机制就属于阻塞式同步机制,比如互斥锁,信号量等。在计算机科学与技术不断发展的今天,阻塞式同步机制的缺陷也不断暴露出来,其直接影响系统和应用程序的性能和RAS (Reliability, Availability, and Serviceability)特性。非阻塞式同步机制可以克服传统锁机制的诸多缺点,因此,非阻塞式同步机制己成为当前同步机制研究领域的热点。Linux内核是目前计算机领域中最为复杂的并行程序之一,因此内核中使用了大量同步机制,其中就有阻塞式同步机制,也有非阻塞式同步机制。Linux内核中无锁同步机制发展主要体现在三个方面:1、细化和平衡锁的粒度;2、引入非阻塞式同步机制,比如顺序锁和RCU(Read-Copy-Update);3、降低锁冲突的机率以及减少进程的等待时间。尼古拉斯教授在第13届实时Linux讨论会上提出了一种新型无锁同步机制PWCS(Probabilistic Write/Copy-Select), PWCS是一种概率同步机制,利用了现代计算机系统的固有随机特性,解决多读者-单写者问题,而且其读者进程具有无等待特性。目前PWCS原型有标签、压缩以及CRC(Cyclic Redundancy Check)三种类型的实现,它们之间的关键区别在于如何判定数据对象的有效性。PWCS机制可以通过增加数据副本的数量来获取任意高的读操作成功概率,这使得与其它同步机制相比PWCS具有更高的空间开销。由于PWCS的实现中无须使用原子操作和内存屏障等技术,因此其具有非常优秀的可移植性,同时也可以将其实现为用户空间的应用程序库,这样程序员便可以在应用程序中直接通过调用PWCS库函数来实现同步。在与其它同步机制(比如,读写锁、顺序锁以及RCU等)对比分析过程中,本文发现PWCS在性能方面的表现异常优秀,而且不会发生读操作失败的情况。PWCS机制的提出可以说是概率同步机制研究的一个起点。事实上,计算机系统的非确定性来源主要包括硬件和软件两个方面,而且它们是现代计算机系统的固有属性。我们需要深入研究和开发现代计算机系统的随机特性,并将其应用于随机算法领域,比如随机数的生成。本文的主要内容包括:1、讨论同步机制在计算机系统中的分类;2、分析Linux系统中无锁同步机制的发展;3、实现PWCS机制的原型;4、评估PWCS的有效性以及性能表现。