课程名称:高级操作系统 任课老师:何炎祥 姓名:张琼露 学号:2011282110226
武汉大学计算机学院研究生课程设计 第 PAGE 1 页 共 NUMPAGES 25 页
高级操作系统
学 院: 计算机学院
专 业: 信息安全
任课老师: 何炎祥
学 号:
姓 名:
完成日期: 2013年10月15日
思考题
记得更改,只选择其中的五道题目,一些内容可以删除的,搜集的资料很多,大家们可以自行选择。(其中1、2、7答案基本固定)其它题目大家们选择的时候不要选重了。否则就是相同的作业了,选的时候说下。我选了6和8。
1.验证Lamport’s Algorithm算法的正确性,即该算法是否能保证
(1)在任何时刻,最多只有一个进程位于临界段(安全性);
(2)若位于临界段的进程在有限时间内退出临界段,则其它请求进入临界段的进程总会进入(可用性)。
答:第一个分布式互斥算法是由Lamport(1978)提出的,他利用了前述的时间定序方案去统一定序所有对临界段的请求,并按先来先服务的次序为请求的进程服务。他的方案在每次进出临界段时候需要3*(n-1)条消息。该算法的基本假定如下:
(1)进程Pi发送的请求消息形如Request(Ti,i),其中Ti=Ci,是进程Pi发送此消息时候对应逻辑时钟的值(时戳)。
(2)每个进程管理着一个请求队列,最初它为空,该队列包含用关系“=》”定序的请求消息。
该算法可描述为:
(1)当进程Pi请求进入临界段时候,它将Request(Ti,i)发送给系统中所有其它的进程,同时也将此消息置入它自己的请求队列中;
(2)当进程Pj受到这条Request(Ti,i)消息后,它便将此消息置入自己的请求队列中,并返回一个带有时戳的Reply消息;
(3)当下面两个条件都成立时候,Pi才允许进入临界段:
①Pi自己的Request(Ti,i)消息位于它自己请求队列的队首;
②Pi已收到来自其他每一进程发送过来的时戳迟于Ti的Reply消息。
(4)当退出临界段时候,进程Pi从自己的请求队列中去掉自己发出的Request(Ti,i)消息,并给其他每个进程发送一条带有时间戳的Release消息。
(5)当进程Pj接收到进程Pi的Release消息后,它也从自己的请求队列中去掉Pi发来的Request(Ti,i)消息。
不难证明该算法是正确的,因为
由(3)--②及消息是按其发送的次序接受的假定,就保证了进程Pi已经知道它先于它的当前请求的所有请求;(注:此步骤保证了若位于临界段的进程在有限时间内退出临界段,则其它请求进入临界段的进程总会进入,即可用性)
由于用关系“=》”定序了所有的请求消息,因此在任何情况下,(3)--①允许一个且只有一个进程进入临界段。(注:此步骤保证了在任何时刻,最多只有一个进程位于临界段,即安全性)
2.请求驱动式令牌传递方法中,若pi发出request消息后久未获得Token,该怎么处理?若引入时戳,该算法应做何修改?
答:请求驱动式令牌传递方法中,若pi发出request消息后久未获得Token,则需要引入时间戳的概念,我们将在以下内容做具体介绍。
在令牌传递算法中,令牌是系统中唯一存在的一种特殊的消息类型。假定系统由n个站点构成,每个站点上只运行一个进程,它们的编号是1~n。系统中的所有进程可组成一个虚拟或逻辑环。一般情况,令牌可在环中沿一个方向(单向环)或二个方向(双向环)流动。仅拥有令牌的进程才有权进入临界段。当进程退出临界段时,它就把令牌传递给它的邻居。因为系统只有一个令牌,所以一次只有一个进程可以进入临界段。
请求驱动Token传递算法假定系统组成一个双向环,系统中的每个进程循环不止地执行下面的程序段:
(1)当进程Pi请求进入CS但未握有token时,向其右邻的进程Pj发出request消息。
(2)Pj收到其左邻进程发来的request,若下面的条件都不满足时,则将转交给其右邻的进程。
它握有token,但已不在CS中,又不希望进入CS中,则将token传给其左邻进程。
它在CS中,退出时,将token传给其左邻的进程