分布式计算的并发控制

       并发控制的目标

        共享资源,特别是共享信息资源(如数据库和文件系统)时要求并发(Concurrency)活 动。并行(Parallel)是并发的一种特殊情况。操作系统中实现的典型并发活动如输人/输 出操作和计算的重叠是一种并行活动,它能提高执行速度。多个进程在单个处理上的执 行也是一种并发活动,但不是并行活动,它不能提高速度。

并发控制的目的是在有多个用户的情况下允许每个用户像单个用户那样访问共享资 源,多个用户同时访问时互相不干扰。并发控制要解决多个用户的活动之间的切换,保护 一个用户的活动不受另一个用户的活动的影响,以及对相互依赖的若干活动进行同步等 问题。并发控制并不一定能提高速度。

         在无并发控制的情况下,两个并发的事务处理可能会相互干扰。相互干扰的结果可 能会产生如下两种不正常的情况。

(1)丢失更新。多个事务处理同时对一个共同的数据对象进行写操作时,就会有丢 失更新的现象发生,并且使数据库处于不一致状态。

(2)检索的不一致。检索的不一致发生在一个事务处理读取数据库中的某些数据对 象,但是另一个事务处理对其中一些数据对象的修改还没有完成。

       可串行化调度 

        我们假定一个事务处理表示一个完整的、正确的计算,每个事务处理如果单独在最初 是一致的文件系统或数据库上执行时,将会执行完毕并得到正确的结果,则认为系统的新 状态仍然是一致的。我们总是认为一个有效的事务处理单独成功地执行完毕时,系统的 新状态是一致的。从第 5.4.1 节的讨论中我们知道在没有并发控制的情况下,多个事务 处理并发执行会产生不一致的情况,所以多个事务处理并发执行的时候需要并发控制。 并发控制正确性的标准有如下两条。

(1)用户交给系统的每个事务处理最终将被执行,并最终得到完成。

(2)多个事务处理并发执行的结果和这多个事务处理串行执行的结果相同。

         一致性的约束条件可使用各对象数值之间的相互关系来规定。在执行一个事务处理 的过程中,在全部修改完成之前,系统的状态可能不是一致的。例如,从一个银行账户中 取出一笔钱后,存入另一个账户之前,这时系统的状态是不一致的。一般说来,当一个事 务处理在执行过程中尚未完成对某对象的修改操作时不允许另一个事务处理对该对象的 访问,以保证一致性。 

基于锁的并发控制

         最流行的并发控制机制是基于锁的方法'2],它在事务处理中插入一系列封锁和解 锁操作,但不提供显式调度。通常,一个封锁的对象是不可以共享的,除非所有的操作都 是读操作。事务处理访问数据对象前必须对它封锁。某些程序使用了两种锁:读锁和写 锁。读锁是共享锁,写锁是互斥锁。因此,一个事务处理可以把数据对象锁定在两种模式 上:互斥模式和共享模式。如果一个事务处理把数据对象锁在互斥模式上,其他事务处理 就不能再给它封锁。如果一个事务处理把数据对象封锁在共享模式上,其他事务处理也 可以把它封锁在共享模式上,但不能封锁在互斥模式上。依据对象的封锁方式和时间,封 锁机制可以分为静态封锁和动态封锁。

         在静态封锁方式中,事务处理在执行操作前,将所有需要的数据对象封锁。这个方法 相对简单,然而它限制了并发性,因为有冲突的事务处理必须串行执行。在动态封锁方式 中,事务处理在执行的不同阶段对不同对象封锁。

         封锁范围是一个很重要的设计问题。显然,既可以对整个文件进行封锁,也可以对特 定的记录进行封锁。封锁的范围越小,并发性越好。如果两个用户要修改同一个文件,并且它们是对这个文件的两个不同部分进行修改的话,则可以让他们同时进行。 

        一个动态封锁方法是两阶段封锁(Two Phase Locking,2PL)。两阶段封锁可以保证一 致性,实现正确的并发控制。两阶段封锁的主要内容如下:访问一个对象前先封锁它,为 此必须先获得锁;对所有要访问的对象封锁前不对任何对象进行解锁;不要封锁已经被封 锁的对象,为此不同的事务处理不可同时获得冲突的锁;事务处理执行结束前,为每个被 它封锁的对象解锁;一旦一个事务处理释放一个锁,该事务处理就不能再获得另外的锁。 每个事务处理锁的过程可分成两个阶段:锁的增长阶段和锁的收缩阶段。增长阶段中事 务处理获得所有的锁而不释放任何锁;收缩阶段释放所有的锁而不取得另外的锁。由 2PL 所完成的串行化次序由各事务处理获得锁的次序决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值