第2章分布式操作系统课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第2章分布式操作系统课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 操作系统 课件
- 资源描述:
-
1、进程(进程(process)或任务()或任务(task)这)这一术语是在六十年代初期,首先在一术语是在六十年代初期,首先在麻省理工学院(麻省理工学院(MIT)的)的MULTICS系统和系统和IBM公司的公司的CTSS/360系统中系统中引入的,其后有许多人对进程下过引入的,其后有许多人对进程下过各式各样的定义,下面列举几种比各式各样的定义,下面列举几种比较能反映进程实质的定义:较能反映进程实质的定义:有界缓冲区(生产者和消费者)问有界缓冲区(生产者和消费者)问题题假设一个系统包含两个进程,其中之一假设一个系统包含两个进程,其中之一产生信息,称之为生产者进程(产生信息,称之为生产者进程(prod
2、ucerprocess),另一个使用生产者进程所产),另一个使用生产者进程所产生的信息,称之为消费者进程(生的信息,称之为消费者进程(consumer process)。两个进程可以交换所需信息,)。两个进程可以交换所需信息,使生产者进程从一个空缓冲池(使生产者进程从一个空缓冲池(buffer pool)中得到一个空缓冲区,将信息填写)中得到一个空缓冲区,将信息填写其中,然后再把它放到满缓冲池之中。其中,然后再把它放到满缓冲池之中。有界缓冲区(生产者和消费者)问有界缓冲区(生产者和消费者)问题题消费者进程从满缓冲池内取出满缓冲区,消费者进程从满缓冲池内取出满缓冲区,从满缓冲区复制出信息,然后再
3、把它放到从满缓冲区复制出信息,然后再把它放到空缓冲池之中,以便再循环利用。我们不空缓冲池之中,以便再循环利用。我们不喜欢给生产者和消费者进程以无限个缓冲喜欢给生产者和消费者进程以无限个缓冲区;而只分配区;而只分配N个缓冲区给它们以交换信个缓冲区给它们以交换信息。下列程序表示了生产者和消费者进程息。下列程序表示了生产者和消费者进程的程序。的程序。有界缓冲区(生产者和消费者)问有界缓冲区(生产者和消费者)问题题Semaphores=1;Semaphorefull=0;Semaphoreempty=N;buf_type bufferN;producer()AND consumer();produrc
4、er()buf_type*next,*here;while(TRUE)produce_item(next);P(empty);P(s);here:=obtain(empty);V(s);copy_buffer(next,here);P(s);release(here,full);V(s);V(full);consumer()buf_type*next,*here;while(TRUE)P(full);P(s);here:=obtain(full);V(s);copy_buffer(here,next);P(s);release(here,empty);V(s);V(empty);consume
5、_item(next);读者和作者读者和作者(Readers-Writers)问题问题Courtois,Heymans和和Parnas在在1971年提出年提出了另一个有趣的同步问题,即读者和作者了另一个有趣的同步问题,即读者和作者问题。假设一个资源被两类不同类型的进问题。假设一个资源被两类不同类型的进程集合之间共享,一类进程称为读者,而程集合之间共享,一类进程称为读者,而另一类进程称为作者。一个读者进程可以另一类进程称为作者。一个读者进程可以和任何其它读者进程共享该资源,但是不和任何其它读者进程共享该资源,但是不和任何一个作者进程共享。每当一个作者和任何一个作者进程共享。每当一个作者进程需要访
6、问这个资源时,要求互斥访问。进程需要访问这个资源时,要求互斥访问。这种情景非常类似于一个文件被一组进程这种情景非常类似于一个文件被一组进程所共享。所共享。读者和作者读者和作者(Readers-Writers)问题问题为了管理共享资源,可以实施若干不为了管理共享资源,可以实施若干不同的策略。通常有弱读者进程优先、同的策略。通常有弱读者进程优先、强读者进程优先和作者进程优先三种强读者进程优先和作者进程优先三种策略。例如,每当任何一个读者进程策略。例如,每当任何一个读者进程访问该共享资源时,则任何一个作者访问该共享资源时,则任何一个作者进程请求访问该共享资源必须等待,进程请求访问该共享资源必须等待,
7、直到无活动的读者进程为止。该共享直到无活动的读者进程为止。该共享资源变为可用。这种弱读者进程优先资源变为可用。这种弱读者进程优先的策略其实现算法请见。的策略其实现算法请见。弱读者进程优先策略弱读者进程优先策略resource_type*resource;int read_count=0;读者计数器读者计数器semaphore s=1;semaphore write_block=1;第一个读者和所有作者执行第一个读者和所有作者执行P(write_block)最后一个读者离开时执行最后一个读者离开时执行V(write_block)read()while(TRUE)other_computing;P
8、(s);read_count:=read_count+1;if(read_count=1)P(write_block);V(s);access(resource);P(s);read_count:=read_count-1;if(read_count=0)V(write_block);V(s);writer()while(TRUE)other_computing;P(write_block);access(resource);V(write_block);/*There could be many readers and many writers*/reader()AND writer();作
9、者进程优先策略作者进程优先策略resource_type *resource;int read_count=0write_count=0;semaphore s1=1,s2=1;semaphore read_block=1;semaphore write_pending=1;semaphore write_block=1;第一个作者阻塞在第一个作者阻塞在read_block上上随后读者随后读者 阻塞在阻塞在write_pending上上read()while(TRUE)other_computing;P(write_pending);P(read_block);P(s1);read_count
10、:=read_count+1;if(read_count=1)P(write_block);V(s1);V(read_block);V(write_pending);access(resource);P(s1);read_count:=read_count-1;if(read_count=0)V(write_block);V(s1);writer()while(TRUE)other_computing;P(s2);write_count:=write_count+1;if(write_count=1)P(read_block);V(s2);P(write_block);access(resou
11、rce);V(write_block);P(s2);write_count:=write_count-1;if(write_count=0)V(read_block);V(s2);/*There could be many readers and many writers*/reader()AND writer();AND同步机制同步机制在许多并行程序中,进程们必须在某个条在许多并行程序中,进程们必须在某个条件集合上而不是仅在单个条件上同步。件集合上而不是仅在单个条件上同步。下面的哲学家用餐问题就是一个很好下面的哲学家用餐问题就是一个很好的例子。的例子。哲学家用餐问题哲学家用餐问题Dijkst
12、ra引入了五个哲学家问题。假定五引入了五个哲学家问题。假定五个哲学家围住在餐桌旁每人前面放了一个个哲学家围住在餐桌旁每人前面放了一个盘子,在相邻的两个盘子之间放了一只筷盘子,在相邻的两个盘子之间放了一只筷子,当哲学家在思考时,他不使用盘子和子,当哲学家在思考时,他不使用盘子和筷子,但是当哲学家决定吃时,他必须拿筷子,但是当哲学家决定吃时,他必须拿到他面前盘子的左右两只筷子才能吃。我到他面前盘子的左右两只筷子才能吃。我们规定在一个给定的时刻,哲学家只能拿们规定在一个给定的时刻,哲学家只能拿一只筷子。哲学家们就这样交替地思考和一只筷子。哲学家们就这样交替地思考和吃。是一个典型的信号量解。不幸地,这
13、吃。是一个典型的信号量解。不幸地,这个解是不安全的,因为当所有的同时决定个解是不安全的,因为当所有的同时决定吃时,出现死锁。吃时,出现死锁。semaphorefork5;philosopher(i)int i;while(TRUE)Thinking();P(forki);P(fork(i+1)mod 5);eat();V(fork(i+1)mod 5);V(forki);同时同时P(simultaneous P)操作)操作假定一个假定一个P操作能够保证得到在一个集操作能够保证得到在一个集合中的所有信号量或者没有任一个,合中的所有信号量或者没有任一个,我们称这个我们称这个P操作为操作为同时同时P
14、(simultaneous P)操作。)操作。同时同时P操作具有形式为:操作具有形式为:Psimultaneous(S1,S2,Sn)同时同时V操作具有形式为:操作具有形式为:Vsimultaneous(S1,S2,Sn)Psimultaneous(S1,S2,Sn)Vsimultaneous(S1,S2,Sn)当当n=2时时Psimultaneous的一种实现的一种实现/*Shared variables*/int S1,R1;semaphore mutex;semaphore block;/*Initialize semaphores*/mutex:=1;block:=0;P(S,R)P(
15、mutex);S1:=S1-1;R1:=R1-1;if(S1 0)(R1 0)V(mutex);P(block);else V(mutex);V(S,R)P(mutex);S1:=S1+1;R1:=R1+1;if(S10)(R10)V(block);V(mutex);Psimultaneous(S1,t1,d1,S2,t2,d2,Sn,tn,dn)t1t2tntiVsimultaneous(S1,d1,S2,d2,Sn,dn)条件临界域条件临界域虽然信号量基本上可用于解决差不多虽然信号量基本上可用于解决差不多任何类型的同步问题,但任何类型的同步问题,但P、V操作是操作是非结构化的原语,因此在使
16、用它们时非结构化的原语,因此在使用它们时极易出错,执行临界段之前必须先执极易出错,执行临界段之前必须先执行一个行一个P操作。在退出临界段时再执操作。在退出临界段时再执行一个行一个V操作(在相同的信号量上)。操作(在相同的信号量上)。忽略一个忽略一个P或或V操作或者意外地让操作或者意外地让P操操作在一个信号量上而让作在一个信号量上而让V操作在另一操作在另一个信号量上就会乱套,在这种情况下,个信号量上就会乱套,在这种情况下,互斥执行的特性不再会得到保证。互斥执行的特性不再会得到保证。条件临界域条件临界域此外,在运用信号量时,程序员可能会此外,在运用信号量时,程序员可能会忘记将所有涉及到共享变量的语
17、句包括忘记将所有涉及到共享变量的语句包括在临界段中,显然,这也可能破坏临界在临界段中,显然,这也可能破坏临界段所需要的互斥执行。使用信号量的另段所需要的互斥执行。使用信号量的另一困难是条件同步互斥都是使用相同形一困难是条件同步互斥都是使用相同形式的原语对偶来编码的,从而难以弄清式的原语对偶来编码的,从而难以弄清一对给定的一对给定的P、V操作的目的。因为互斥操作的目的。因为互斥和条件同步是不同的概念,它们应该有和条件同步是不同的概念,它们应该有不同的表示形式。不同的表示形式。条件临界域条件临界域条件临界域(条件临界域(conditional critical region)Hoare,1972;
18、Brinch Hansen,1972通过提供结构化的表示法来描述同步而通过提供结构化的表示法来描述同步而弥补了上述不足。共享变量明显地归纳弥补了上述不足。共享变量明显地归纳为一组,并且予以命名,称为资源为一组,并且予以命名,称为资源resource),每个共享变量至多只处于),每个共享变量至多只处于一个一个resource中且只能在命名该中且只能在命名该resource的条件临界域(简记为的条件临界域(简记为CCR)语句中存)语句中存取。取。条件临界域条件临界域一个包含变量一个包含变量v1,v2,vn的的resource R说明为说明为resource R:v1,v2,vn;R中的变量只能由命
19、名中的变量只能由命名R的的CCR语句存语句存取。这种语句形如:取。这种语句形如:region R when B do S;其中,其中,B是一个布尔表达式,是一个布尔表达式,S是一组语是一组语句,局部于正在执行的进程的局部变量句,局部于正在执行的进程的局部变量也可以出现在也可以出现在CCR语句中。互斥是通过语句中。互斥是通过保证执行不同的保证执行不同的CCR语句来实现的。语句来实现的。条件临界域条件临界域即每个命名相同即每个命名相同resource的语句是不重的语句是不重迭的。条件同步是通过迭的。条件同步是通过CCR语句中明显语句中明显地给出的布尔条件加以保证。地给出的布尔条件加以保证。CCR语
20、句语句阻塞执行它的进程直至阻塞执行它的进程直至B为为true,然后,然后执行执行s。计算。计算B和执行和执行S是不可由另外命是不可由另外命名相同名相同resource的一些的一些CCR语句所中断语句所中断的。因此,当开始执行的。因此,当开始执行S时,时,B保证为保证为true。这种机制通常假定是公正的,一。这种机制通常假定是公正的,一个处于等待条件个处于等待条件B的进程最终会由于的进程最终会由于B为为true而得以继续执行。而得以继续执行。条件临界域条件临界域program OPSYS;type buffer(T)=record slots:array(0.N-1)of T;head,tail
21、:0.N-1 initial(0,0);size:0.N initial(0);end;var inpbuff:buffer(cardimage);outbuff:buffer(lineimage);resource ib:inpbuff,ob,outbuff;条件临界域条件临界域 process reader;var card:cardimage;loop read card from cardreader;region ib when inpbuff.size 0 do card:=inpbuff.slotsinpbuff.head;inpbuff.size:=inpbuff.size-1
22、;inpbuff.head:=(inpbuff.head+1)mod N end;process card and generate line;条件临界域条件临界域 region ob when outbuff.size 0 do line=outbuff.slotsoutbuff.head;outbuff.size:=outbuff.size-1;outbuff.head:=(outbuff.head+1)mod N end end end;end.条件临界域条件临界域虽然虽然CCR有许多优点,但实现起来代价有许多优点,但实现起来代价过大,因为过大,因为CCR语句中的条件可以包含语句中的条件
23、可以包含对局部变量的访问,而且每个进程都必对局部变量的访问,而且每个进程都必须计算它自己的条件。在一个含有多道须计算它自己的条件。在一个含有多道程序的处理机上,这种计算的结果导致程序的处理机上,这种计算的结果导致若干内容的切换(频繁地保存和恢复进若干内容的切换(频繁地保存和恢复进程状态),其中的许多工作可能是无效程状态),其中的许多工作可能是无效的,因为活跃的进程仍然可能发现相应的,因为活跃的进程仍然可能发现相应的条件为的条件为false。若每个进程都在它自己。若每个进程都在它自己的处理机上运行且内存是共享的,则的处理机上运行且内存是共享的,则CCR语句很容易利用忙等待技术实现。语句很容易利用
24、忙等待技术实现。条件临界域条件临界域Edison语言语言Brinch Hansen,1981包含有包含有CCR语句,该语言是专为多处语句,该语言是专为多处理机系统设计的。理机系统设计的。CCR语句的一些变语句的一些变种也在种也在DPBrinch Hansen,1978和和ArgueLiskov,Scheifler,1982中使中使用了。用了。管程(管程(monitor)管程(管程(monitor)Dijkstra,1968;BrinchHansen,1973;Hoare,1974是指一组公是指一组公共数据同与其有关的操作的集合。只有引共数据同与其有关的操作的集合。只有引用管程中的操作才能访问管
25、程中的数据。用管程中的操作才能访问管程中的数据。一个进程引用管程中操作时,只有在管程一个进程引用管程中操作时,只有在管程中的各操作均不处于活跃状态时才被响应,中的各操作均不处于活跃状态时才被响应,当管程中一个操作已执行完毕或在执行中当管程中一个操作已执行完毕或在执行中处于等待状态时,它就不是活跃状态。管处于等待状态时,它就不是活跃状态。管程将公共数据同与其有关的操作集中在一程将公共数据同与其有关的操作集中在一起,使得并发程序容易理解,也易于保证起,使得并发程序容易理解,也易于保证程序的正确性。因此,管程是一种结构化程序的正确性。因此,管程是一种结构化的同步机制。的同步机制。管程(管程(moni
展开阅读全文