预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共64页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第五章分布式系统文件共享5.1共享文件的语义 两个以上的用户共享同一个文件时,会产生多种情况,从而产生不同的语义.故文件服务时必须精确定义服务的读写语义。 一.UNIX语义(时间顺序) 对于单处理机而言,在UNIX系统中,其读操作的语义是,读取的结果是它前面最近一次写操作形成的结果。写操作的语义是,若先后连续有两个写操作,则文件结果决定于后面的写操作。因此,最后形成的语义是严格意义下的时间序操作。 在对分布式文件系统中的文件进行读操作时,能看到以前所有对该文件执行写操作的效果。特别是,客户对于已打开文件的写操作可立即为其它打开此文件的客户所见。客户可共享文件当前位置的指针。这样,一个客户将指针向前推进时将影响所有共享客户的视图。 此种语义的特点是易于理解和实现。 二.会话语义 对于打开文件的写操作可以立即为本地客户所见,远程的客户也同时打开该文件,但却不可见。一旦文件关闭,对此文件所作的修改仅为后面进行的操作所见,该文件已经打开的各副本不表现这些修改.三.不可改变文件语义 一但文件为共享文件,则所有用户均不能再修改它。这里的不可改变有两个含义:一是其名字不可再变;二是其内容不可改变。这样,不可改变的文件的名字代表该文件的固定内容,而不再是信息存储机制。这一语义非常简单,易于实现,但应用起来,很不灵活. 四.事务语义 用户若要访问一个文件或了组文件,首先要执行一个启动事务的操作,表示下面的操作必须独立执行,然后对文件进行读写操作,当工作完成后,再执行一个结束事务的操作。其关键特性是,保证事务期间的所有文件操作按序执行,而不受其它用户的干扰,也就是说,在事务内部严格具有UNIX语义、显然,事务语义是一种比较实用的文件语义。事务的完成要求一个客户机与一个或几个服务器进行协作。5.2原子事务 在分布式系统中,原子事物又简称事物,事务实际上就是一组逻辑上连续执行的操作,其具有动态性,有三种状态: ①提交事务中的文件数据项的修改永久保存 ②中止由于同其他事务冲突或硬件故障导致事务中止 ③临时事务执行中的存在的临时状态5.2.1事务的特性 事务具有以下四个特性,简称ACID特性 ①原子性(Atomic):即事务的作用要么完整,要么没有。 ②一致性(Consistent):事务处理不影响系统中的不变性:意思是,当系统具有某种不变特性需要保持时,在事务执行前后该不变性一定要保持。例如,银行业务系统中有一个关键的不变特性是“金钱不灭”,经过内部任何转帐之后,银行的总钱数是不变的。 ③孤立性(Isolated):并发的事务不会相互影响,多个事务处理可并发执行,其结果和各事务处理串行执行结果一样,也叫串行等价性。 三个事务A、B、C被三个独立的进程同时执行,若顺序执行其结果为1、2或3 BEGIN_TRANSACTIONABEGIN_TRANSACTIONBBEGIN_TRANSACTIONC X=0;X=0;X=0; X=X+1;X=X+2;X=X+3; END_TRANSACTIONEND_TRANSACTIONEND_TRANSACTION 时间 ④持久性(Durable):如果事务处理成功完成、则结果将永不消失,除非发生硬故障。 5.2.2事务需求 银行服务的例子5.3并发控制 并发控制的主要目标是满足事务处理的一致性(串行等价性),最早的方法: A.某一时刻只允许执行一个事务 B在启动多个事物操作之前先检查是否满足一致性 缺点: 解决的不好.为弥补不足.提出下面三种方法.5.3.1加锁 当某一事务访问一共享数据项时,由服务器对该数据项加锁,当完成访问时,再由服务器开锁,以便于其它事务访问。在上锁期间,只有锁定该数据项的事务才能对其访问,这样就保证了在某一时刻访问数据进程的唯一性和确定性。 一.基本原理 一个锁可由三都分组成: ①一个二值逻辑变量,用以指示上锁/开锁; ②一个类似于信号灯的条件变量; ③访问该锁的宿主事务标识符实现上锁机制时,需要注意锁的粒度。粒度是指被加锁的数据项的大小,粒度越细,则并行度越高,反之,并行度越低。对整个文件加锁是一种极端情况,这时候,事务串行执行。在下面的讨论中,上锁一般施加于文件中的数据项上。 锁定机制是分两个阶段进行的。一个事务在工作过程中,可分为“生长”和“消亡”两个阶段。生长阶段需要上锁,消亡阶段需要开锁,这就是两阶段锁定机制。在生长阶段,事务处于临时状态,其临时数据不为其它事务所见。在消亡阶段,临时数据要变成永久数据,为了保持事务的特性,必须在事务关闭的最后,才能开锁。二、几种加锁方案 1.最简单的加锁方法 在这种方案中,文件服务器对客户事务访问的每一个数据项加锁,而在事务完成(或中止)时打开所有的锁,当另一事务试图访问已上锁的数据项时,它必须等待到开锁为止。 2.读/写锁方案 由于简单锁定机制不