分布式系统中的互斥算法

来源:互联网 发布:新闻联播配音软件 编辑:程序博客网 时间:2024/06/05 05:41

1分布式系统简介及优势

分布式系统是一种多处理器。各处理器通过互联网构成统一的系统。系统采用分布式计算结构,即把原来系统内中央处理器处理的任务分散给相应的处理器,实现不同功能的各个处理器相互协调,共享系统的外设与软件。通过与集中式系统的比较,分布式系统的优点主要体现在以下几个方面:(1) 能够实现资源共享。例如: CPU、存储设备等硬件资源、软件工具和软件环境等软件资源能被系统内所有主机使用。(2) 系统具有很快的反应能力。分布式系统将所接受的任何任务都会分配给其所支配的所有主机并行执行,因此它的响应时间就大大缩短了。(3) 伸缩性较强。是否能伸缩自如,与性能的好坏息息相关,对分布式系统进行缩减和扩充,灵活性和可扩展性高。(4) 适应范围较广。分布式系统可以适用于不同的环境,例如一些需要相互合作的工作,如事务处理、过程控制等。

2 互斥问题的产生

当有多个进程竞争系统中相同的资源时,互斥问题就产生了。一个正确的互斥算法必须避免冲突( 死锁和饿死) 和保证公平性。通常分布式操作系统使用的互斥算法有:集中式算法、分布式算法和令牌环算法。评价互斥算法性能的准则有(1)每次临界区请求所需要的消息的个数(2)响应时间(RT)(3)同步延迟(SD)。一个好的互斥算法应该是无饥饿,无死锁的。

3 三种传统算法

3.1 集中式算法

集中式算法借鉴了集中式互斥算法的思想,在分布式系统中,选出一个进程为协调者 (通过科学的分析制定一套规则) 。协调者对所有的请求进行排队并根据一定的规则授予许可。协调者接受请求以后,检查临界区内的资源是否被其他进程占用。如果是,则它将当前请求进程插入到对应临界资源的请求队列中; 否则,回复一个同意消息给请求进程,通知它可以访问该临界资源。该算法通俗易懂,既能够杜绝死锁、饥饿等现象发生,又能保证资源的互斥访问顺利进行。但是它也有缺点,由于是集中式管理,所以一旦管理进程出现故障,则整个系统将处于瘫痪状态。因此,管理进程的性能完全决定了算法的效率,应用范围小,难以普及。

3.2 分布式算法

分布式算法中运用到广播请求通信,当进程想请求共享资源时,需要首先建立三个变量: 准备进入临界区,实时时间和处理器号,并利用广播通信发送给正在运行的所有进程。该算法的核心思想如下:当进程想进入临界区时,要建立一个包括进入的临界区名字、处理器号和当前时间的消息,并把消息发送给所有其它进程。当进程接收到另一个进程的请求消息时,将分下面三种情况来区别对待:1)若接收者不在临界区中,也不想进入临界区,就向发送者发送OK消息;2)若接收者已经在临界区内就不必回答,而是负责对请求消息排队;3)若接收者要进入临界区,但还没进入,它就会把接收的消息和它发送的消息的时间戳进行对比,取小的那个。如果接收的消息时间戳小,就发OK消息,如果发送的消息时间戳小,那么接收者负责排列请求队列而不发送任何消息。当进程接收到允许消息时,它就进入临界区。从临界区退出时,向队列中的所有进程发送OK消息,并将自己从队列中删除。该算法可以保证访问临界区的互斥性以及无死锁进程、无饥饿进程。详细分析请参见文献。但是这种算法有个严重的缺点是算法太复杂并且不健壮,任何一个进程崩溃都会影响到算法的正确性。

3.3 令牌环算法

令牌算法中引入了令牌,所有的进程组成一个环模型,环中每个进程需要知道它的下一个位置的节点的名称。令牌在环上顺序传递,当某个进程拥有令牌时就表明可以访问临界区。当请求进程没有令牌时,算法需要 N 发送任何消息。如果得到令牌的进程不打算进入临界区,它只是简单地将令牌传送给它后面的进程。当每个进程都需要进入临界区时,令牌在环上的传递速度最慢; 相反,当没有进程想要进入临界区时,令牌在环上的传递速度最快。该算法的正确性是显而易见的,但是也存在一些问题,比如说,当令牌丢失时,需要重新生成。可是如何检测令牌丢失又是一个困难的问题。还有,如果环中的一个进程崩溃,那么环的连贯性就遭到破坏,算法也就会出现麻烦。

4 两层结构的分布式令牌环算法

4.1算法思想

两层结构的分布式令牌环算法是适用于多个节点网络的互斥算法,它将分布式算法和令牌环算法的优点集于一身,大大提高了算法性能上的优势。本算法把整个广域网系统组织成的两层逻辑结构:局域网是第一个层次,每个局域网中包含若干个局部进程和一个协调进程。局部进程在逻辑上组成一个环形结构,在每个环形结构上有且只有一个局部令牌Ti按顺时针方向不断从一个局部进程传递到另一个局部进程;每个局域网中的协调进程通过远程网络互相通讯,也按同样的方式组织成全局的逻辑环形结构,这个全局环是第二个层次,在这个全局环上也有且仅有一个全局令牌T按顺时针方向不断传递。

4.2正确性

由于只有一个全局令牌,而只有获得全局令牌的进程才能进入临界区,这就保证了任何时刻都只有一个进程才能进入临界区,即在整个系统中保证了对临界区的互斥操作。其次证明无饥饿的情况。根据令牌环算法的性质,局部进程可以在有限的时间内获得局部令牌,而协调进程也可以在有限的时间内获得全局令牌。另外,局部进程向本地协调进程请求全局令牌,协调进程把全局令牌传递给本地局部进程,以及局部进程释放全局令牌所需的3个消息传递的通讯延迟也是有限的。所以,任何一个局部进程都可以在有限的时间内获得局部令牌和全局令牌进入临界区,也就是说,系统中不会出现饥饿现象。

0 0
原创粉丝点击