计算机操作系统pv操作ppt课件_第1页
计算机操作系统pv操作ppt课件_第2页
计算机操作系统pv操作ppt课件_第3页
计算机操作系统pv操作ppt课件_第4页
计算机操作系统pv操作ppt课件_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机操作系统教程P、V操作P、V操作的引入 为制止两个进程同时进入临界区,运用了锁操作方法。 但这带来两个问题: 1.当临界资源被占用,不停的测试会呵斥错误。 2.无法实现同步 为此E.W.Dijkstra提出了一种处理同步,互斥问题的更普通的方法,这就是信号量以及有关的P、V操作信号量 信号量是表示资源的实体,是一个与队列有关的整型变量,其值只能由P、V操作来改动。 操作系统利用信号量对进程和资源进展控制和管理。 根据用途的不同,分为公用信号量和私用信号量。公用信号量通常用于实现进程之间的互斥,初值为1,他所联络的一组并发进程均可对其实施P,V操作;私用信号量普通用于实现进程间的同步,初值

2、为0或为某个正整数n,仅允许拥有它的进程对其实施P、V操作。P、V操作的定义 P、V操作是定义在信号量S上的两个操作。 P(S): (1S:=S-1; (2) 假设S=0,那么调用P(S)的进程继续运转。 (3)假设S0,那么调用V(S)的进程继续运转; (3)假设S0时的数值表示某类可用资源的数量,执行P操作意味着恳求分配一个单位的资源。因此可描画为S:=S-1,当S0时,表示已无资源可用,此时S的绝对值表示信号量S的阻塞队列中的进程数;而执行一次V操作意味着释放一个单位的资源,描画为S:=S+1,假设此时S= 1 then if r = 1 then begin begin r : = r

3、 r : = r 1;1; A := r; A := r; V(S); V(S); 售出一张票售出一张票; end end else else 售出票已售售出票已售完完;endend;PROCESS Pir : integer;begin P(S); r := A; if r = 1 then begin r := r 1; A := r; V(S); 售出一张票售出一张票; end else begin V(S); 售出票已售完售出票已售完 endend;例例3 3:有:有m m个消费者和个消费者和r r个消费者共享容量为个消费者共享容量为n n的缓冲器的缓冲器m m、r r、n n均大于均

4、大于1 1。每个消费者把本人消费的物品存入缓冲区,每个消费者从缓冲区。每个消费者把本人消费的物品存入缓冲区,每个消费者从缓冲区中取出物品去消费。要求用中取出物品去消费。要求用P P、V V操作对这些消费者和消费者进展正确操作对这些消费者和消费者进展正确管理。管理。定义:整型数组:定义:整型数组:B0n-1B0n-1 整型变量:整型变量:k k,t t 初值均为初值均为0 0 信号量:信号量:S1S1:初值:初值1 1 用于消费者放入物品用于消费者放入物品 S2 S2:初值:初值1 1 用于消费者取出物品用于消费者取出物品 SP SP:初值:初值n n 缓冲区能否可用缓冲区能否可用 SG SG:

5、初值:初值0 0 缓冲区里能否有物品缓冲区里能否有物品PROCESS PibeginL1: produce a product; P(SP); P(S1); Bk := product; k := (k + 1) mod n; V(S1); V(SG); goto L1endPROCESS CjbeginL2: P(SG); P(S2); take a product from Bt; t := (t + 1) mod n; V(S2); V(SP); consume; goto L1end消费者分别向消费者分别向缓冲区送产品,缓冲区送产品,由由S1控制互控制互斥访问。斥访问。消费者分别从消费

6、者分别从缓冲区中取出缓冲区中取出产品,由产品,由S2控制互斥访问控制互斥访问 例例4 4:读者写者问题:读者写者问题: 规定:允许多个进程同时读;只允许一个进程写;规定:允许多个进程同时读;只允许一个进程写;当有进程读时不允许其它进程写。当有进程读时不允许其它进程写。 第一种方案:定义信号量:第一种方案:定义信号量:S: semaphoreS: semaphore;初值;初值1 1;定义一个整数:定义一个整数:rs rs ,初值,初值0 0;读者:读者:PROCESS Readeribegin rs := rs + 1; if rs = 1 then P(S); read file F; rs

7、 := rs 1; if rs = 0 then V(S);end;写者:PROCESS Writerjbegin P(S); write file F; V(S);end;问题:对共享变量rs访问的程序段也是临界区。课后练习24有一阅览室,读者进入时必需先在一张登记表上进展登记。该表为每一作为列出了一个表目,包括座号,姓名。读者分开时要撤销登记信息。阅览室有100个作为,试问:(1)为描画读者的动作,应编写几个程序,应该设置几个进程?进程和程序之间的对应关系如何?2)试用P,V操作描画这些进程之间的同步算法。分析:设读者有恣意多个,但能同时阅览的只能100人,所以,设一个信号量S代表空座位数

8、目,初值为100,用它来控制进入阅览室的读者进程不超越100。另设信号量m,用于控制对登记表这一共享资源的互斥运用,其初值为1。(1)需编写一个程序,100个进程,进程之间经过登记表之间存在同步关系2Process 第i个读者进程 begin P(S); P(m); 填写登记表; V(m); 坐下阅览; P(m); 在登记表上去掉登记; V(m); V(S); goto L1; end25设有两个优先级一样的进程P1,P2如下所示。令信号量S1,S2的初值为0,试问P1,P2并发运转终了后,x=? ,y=? ,z=?进程P1 进程P2y:=1; x:=1;y:=y+2; x:=x+1;V(S1

9、); P(S1);z:=y+1; x:=x+y;P(S2); V(S2);y:=x+y z:=x+zX=5, y8, Z 9. 28.桌上有一只盘子,每次只能放一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中方桔子,一个女儿专等吃盘中的苹果,一个儿子专等吃盘中的桔子,试用P、V操作写出他们能同步的程序。 semaphore S_Plate=1, S_Apple=0, S_Orange=0;void father( ) / 父亲进程父亲进程 while(1) P(S_Plate); 往盘子往盘子中放入一个中放入一个苹果;苹果; V(S_Apple); void mother( ) / 母亲进程母亲进程 while(1) P(S_Plate); 往盘往盘子中放入子中放入一个桔子;一个桔子; V(S_Orange); void son( ) / 儿子进程儿子进程 while(1) P(S_Orange); 从盘中从盘中取出一个取出一个 桔桔子;子; V(S_Plate); 吃桔子;吃桔子; void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论