操作系统关于PV操作

合集下载

计算机操作系统pv操作

计算机操作系统pv操作

计算机操作系统pv操作1、引言1.1 定义PV操作,全称为P操作(原语操作)和V操作(原语操作),是计算机操作系统中用于实现进程间同步和互斥的重要机制之一。

P 操作用于请求访问临界资源,V操作用于释放临界资源。

1.2 目的本文档旨在提供关于计算机操作系统中PV操作的详细说明,进一步理解PV操作的概念、原理和使用方法,以及相关注意事项和最佳实践。

2、PV操作概述2.1 P操作P操作(Proberen操作)用于请求访问临界资源。

如果临界资源当前已被占用,则进程将被阻塞等待,直到获得资源访问权限。

2.2 V操作V操作(Verhogen操作)用于释放临界资源。

当进程完成对临界资源的访问后,应该及时释放资源,以便其他进程能够获得访问权限。

3、PV操作实现方式3.1 二进制信号量使用二进制信号量实现PV操作是最常见的方式之一。

二进制信号量只能取0或1两种值,用于表示资源的占用状态。

3.2 计数信号量计数信号量可以取多个非负整数值,用于表示资源的可用数量。

进程在请求资源时,如果信号量的值大于0,则减1并继续执行;若信号量值为0,则进程被阻塞等待。

3.3 互斥锁互斥锁是一种特殊的PV操作实现方式,用于实现进程对临界资源的互斥访问。

进程在访问临界资源前,需先获得互斥锁的所有权;在访问完成后,应释放互斥锁。

4、PV操作的应用场景4.1 进程同步PV操作常用于实现进程之间的同步,确保共享资源的安全访问。

通过P操作和V操作的配对使用,可以实现进程的有序执行。

4.2 进程互斥PV操作也可用于实现进程之间的互斥访问,即确保同一时间只有一个进程可以访问共享资源。

使用互斥锁实现的PV操作能够有效避免资源竞争问题。

5、PV操作的注意事项5.1 死锁使用PV操作时,必须避免出现死锁的情况。

死锁是指系统中的多个进程互相等待对方所占有的资源,导致所有进程无法继续执行的情况。

5.2 优先级关系在使用PV操作时,进程的优先级关系可能会对同步和互斥的实现产生影响。

操作系统-PV操作

操作系统-PV操作

未来研究方向和挑战
01
随着云计算、大数据和人工智能等技术的快速发展,操作系统中的并发和并行 处理需求越来越高,PV操作在解决并发和并行处理中的问题也面临着新的挑战 。
02
未来的研究需要进一步探索PV操作在新型计算环境中的应用,例如在分布式系 统、物联网、边缘计算等领域中,PV操作的应用和优化具有重要的研究价值。
详细描述
生产者消费者问题描述了一个共享缓冲区的场景,其中生产者产生数据放入缓冲区,消费者从缓冲区取出数据进 行处理。为了防止缓冲区溢出和数据饥饿,需要使用PV操作来控制对缓冲区的访问。
读者写者问题
总结词
读者写者问题是生产者消费者问题的 变种,主要解决多个读者共享数据和 单个写者修改数据时的同步问题。
03
同时,随着系统规模的扩大和复杂度的增加,PV操作的管理和维护也变得越来 越困难,如何有效地管理和维护PV操作也是未来的重要研究方向之一。
THANKS FOR WATCHING
感谢您的观看
操作系统-pv操作
目 录
• 引言 • PV操作原理 • PV操作实现 • PV操作的应用 • 总结与展望
01 引言
操作系统简介
操作系统是计算机系统的核心软件, 负责管理计算机硬件和应用程序的资 源分配、调度和监控。
操作系统的主要功能包括进程管理、 内存管理、文件管理和设备管理。
PV操作的基本概念
饥饿问题
饥饿问题是当一个或多个进程长期得不到足够的资源,导致其无法正常执行的情况。为避免饥饿问题 ,可以采用一些调度算法,如先来先服务、最短作业优先等,确保每个进程都能获得足够的资源。
04 PV操作的应用
生产者消费者问题
总结词
生产者消费者问题是操作系统中经典的并发循环执行

操作系统PV操作习题

操作系统PV操作习题

操作系统PV操作习题⼀、⽤P、V操作描述前趋关系。

P1、P2、P3、P4、P5、P6为⼀组合作进程,其前趋图如图2.3所⽰,试⽤P、V 操作描述这6个进程的同步。

p23图2.3说明任务启动后P1先执⾏,当它结束后P2、P3可以开始执⾏,P2完成后P4、P5可以开始执⾏,仅当P3、P4、P5都执⾏完后,P6才能开始执⾏。

为了确保这⼀执⾏顺序,设置5个同步信号量n、摄、f3、f4、g分别表⽰进程P1、P2、P3、P4、P5是否执⾏完成,其初值均为0。

这6个进程的同步描述如下:图2.3 描述进程执⾏先后次序的前趋图int f1=0; /*表⽰进程P1是否执⾏完成*/int f2=0; /*表⽰进程P2是否执⾏完成*/int f3=0; /*表⽰进程P3是否执⾏完成*/int f4=0; /*表⽰进程P4是否执⾏完成*/int f5=0; /*表⽰进程P5是否执⾏完成*/main() {cobeginP1( );P2( );P3( );P4( );P5( );P6( );coend}P1 ( ){┇v(f1);v(f1):}P2 ( ){p(f1);┇v(f2);v(f2);)P3 ( ){p(f1);┇v(f3);}P4( ){p(f2);┇v(f4);}P5 ( ){p(f2);┇v(f5);}P6( ){p(f3);p(f4);p(f5);┇}⼆、⽣产者-消费者问题p25⽣产者-消费者问题是最著名的进程同步问题。

它描述了⼀组⽣产者向⼀组消费者提供产品,它们共享⼀个有界缓冲区,⽣产者向其中投放产品,消费者从中取得产品。

⽣产者-消费者问题是许多相互合作进程的⼀种抽象。

例如,在输⼊时,输⼊进程是⽣产者,计算进程是消费者;在输出时,计算进程是⽣产者,打印进程是消费者。

因此,该问题具有很⼤实⽤价值。

我们把⼀个长度为n的有界缓冲区(n>0)与⼀群⽣产者进程P1、P2、…、Pm和⼀群消费者进程C1、C2、…、Ck 联系起来,如图2.4所⽰。

操作系统实验——PV操作实现生产者消费者模型

操作系统实验——PV操作实现生产者消费者模型
2. 生产者类
/** * 单个生产者类 * @author Vfdxvffd * @count 生产的物品数量标号 */ class Producer implements Runnable{ int count = 0; //数量 @Override public void run() { while(count < 20) { //最多生产20件商品
Global.empty.Wait(); /*要生产物品了,给剩余空 闲缓冲区数量--,如果减完后变为负数,则说明当前没 有空闲缓冲区,则加入等待队列*/ //临界区,生产商品 int index = count % 2; Global.buffer[index] = count; System.out.println("生产者在缓冲区"+index+"中生产了物品"+count); count++;
假如生产者号生产了0号商品,但此时他还没做Global.pCount++这一步操作,CPU将执行权切换到生产者2号,这时Global.pCount的值还是 刚刚的0,没有加1,所以又会生产出一个0号商品,那消费者也同理,消费完还没加1,就被切换了执行权。
那就有个问题,如果我们将Global.pCount++这一步提前能不能解决问题呢,当然也是不行的,因为可能++完还没输出就被切换执行权,那下次 执行权回来时候就会继续执行输出操作,但此时的Global.pCount的值已经不知道加了多少了。
/*remove a process P from the waiting queue*/ wakeup(P); } }
信号量的应用

pv操作和生产者消费者

pv操作和生产者消费者

关于 PV 操作在计算机操作系统中,PV操作是进程管理中的难点。

首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:P(S):①将信号量S的值减1,即S=S-1;②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。

V(S):①将信号量S的值加1,即S=S+1;②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。

PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。

PV操作属于进程的低级通信。

什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。

信号量的值与相应资源的使用情况有关。

当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。

注意,信号量的值仅能由PV操作来改变。

一般来说,信号量S³0时,S表示可用资源的数量。

执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。

而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S£0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。

利用信号量和PV操作实现进程互斥的一般模型是:进程P1 进程P2 ……进程Pn ………………P(S); P(S); P(S);临界区;临界区;临界区;V(S); V(S); V(S);……………………其中信号量S用于互斥,初值为1。

使用PV操作实现进程互斥时应该注意的是:(1)每个程序中用户实现互斥的P、V操作必须成对出现,先做P操作,进临界区,后做V操作,出临界区。

若有多个分支,要认真检查其成对性。

(2)P、V操作应分别紧靠临界区的头尾部,临界区的代码应尽可能短,不能有死循环。

计算机PV操作系统总结

计算机PV操作系统总结

计算机PV操作系统总结计算机PV操作系统总结一:概述1.1 引言在计算机系统中,操作系统是一种重要的软件组件,负责管理和协调计算机硬件与软件资源,提供用户和其他软件的接口,以实现计算机系统的正常运行和高效利用。

本文档总结了PV操作系统的基本原理、功能模块及其应用。

1.2 目的本文档旨在介绍PV操作系统的核心概念以及其在计算机系统中的作用,为开发人员和用户提供一个全面的参考。

二:PV操作系统的基本原理2.1 进程管理2.1.1 进程概念2.1.2 进程调度2.1.3 进程同步2.1.4 进程通信2.2 内存管理2.2.1 内存分配2.2.2 虚拟内存2.2.3 内存保护2.3 文件系统管理2.3.1 文件组织2.3.2 文件存储2.3.3 文件操作2.4 设备管理2.4.1 设备概念2.4.2 设备分配2.4.3 设备驱动三:PV操作系统的功能模块3.1 用户界面3.1.1 命令行界面3.1.2 图形用户界面3.2 系统调用接口3.2.1 系统调用类型3.2.2 系统调用的实现3.3 文件系统3.3.1 文件管理3.3.2 目录管理3.3.3 文件权限控制3.4 进程管理3.4.1 进程创建与撤销3.4.2 进程调度算法3.4.3 进程通信方式3.5 内存管理3.5.1 内存分配策略3.5.2 空间置换算法3.5.3 虚拟内存管理3.6 设备管理3.6.1 设备驱动程序3.6.2 设备分配策略3.6.3 设备中断处理四:PV操作系统的应用领域4.1 个人计算机4.2 服务器系统4.3 嵌入式系统4.4 移动设备附件:1. PV操作系统示例代码2. PV操作系统用户手册法律名词及注释:1. 版权:法律规定的对原创作品的独占权利。

2. 许可证:一种法律许可文件,允许使用者在符合某些条款和条件的情况下使用特定的软件或作品。

3. 用户协议:一种法律文件,规定了软件或服务的使用条款和条件,用户使用软件或服务前需要同意并接受这些条款和条件。

操作系统pv操作

操作系统pv操作

操作系统P V题解第一章The P,V Theorem在操作系统理论中有一个非常重要的概念叫做P,V原语。

在我们研究进程间的互斥的时候经常会引入这个概念,将P,V操作方法与加锁的方法相比较,来解决进程间的互斥问题。

实际上,他的应用范围很广,他不但可以解决进程管理当中的互斥问题,而且我们还可以利用此方法解决进程同步与进程通信的问题。

一Introduction of P,V Theorem阐述P,V原语的理论不得不提到的一个人便是赫赫有名的荷兰科学家E.W.Dijkstra。

如果你对这位科学家没有什么印象的话,提起解决图论中最短路径问题的Dijkstra算法应当是我们再熟悉不过的。

P,V原语的概念以及P,V操作当中需要使用到的信号量的概念都是由他在1965年提出的。

1 Some Conceptions信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作。

信号量为一个整数,我们设这个信号量为:S。

很显然,我们规定在S大于等于零的时候代表可供并发进程使用的资源实体数,S小于零的时候,表示正在等待使用临界区的进程的个数。

根据这个原则,在给信号量附初值的时候,我们显然就要设初值大于零。

p操作和v操作是不可中断的程序段,称为原语。

P,V原语中P是荷兰语的Passeren,相当于英文的pass,V是荷兰语的Verhoog,相当于英文中的incremnet。

P原语操作的动作是:(1)S减1;(2)若S减1后仍大于或等于零,则进程继续执行;(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。

V原语操作的动作是:(1)S加1;(2)若相加结果大于零,则进程继续执行;(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。

需要提醒大家的是:P,V操作首先是一个原语操作,对于每一个进程来说,都只能进行一次。

操作系统教程第5版第3章【PV】

操作系统教程第5版第3章【PV】

1
while(free); free=true;
临界区
3
free=false;
临界区 free=false;
……
……
Step3: Q下CPU,P上CPU;此时两个进程都在临界区!
该方法有问题。
30
软件方法1
free:临界区空闲标志 true:有进程在临界区;false:无进程在临界区
初值:free为false
27
软件方法1 free:临界区空闲标志
true:有进程在临界区;false:无进程在临界区 初值:free为false
P:
Q:
……
……
while(free); CPU free=true;
1
while(free); free=true;
临界区
临界区
free=false;
free=false;
……
……
Step1: P先上CPU
28
软件方法1
free:临界区空闲标志 true:有进程在临界区;false:无进程在临界区 初值:free为false
P:
Q:
……
…… CPU 2
while(free); CPU free=true;
1
while(free); free=true;
临界区
P: …… while(not turn); 临界区 turn=false; ……
Q: …… while(turn); 临界区 turn=ture; ……
若P想进临界区,由于turn=false;进不了; 同时Q进程始终不准备进临界区,即使临界区一直没有进程, 但P一直无法进入临界区 该方法,违反了使用临界区的原则
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.读写操作1、、设有一台计算机,有两条I/O通道,分别接一台卡片输入机和一台打印机。

卡片机把一叠卡片逐一输入到缓冲区B1中,加工处理后在搬到缓冲区B2中,并在打印机上印出,问:①系统要设几个进程来完成这个任务?各自的工作是什么?②这些进程间有什么样的相互制约关系?③用P、V操作写出这些进程的同步算法。

①系统可设三个进程来完成这个任务:R进程负责从卡片输入机上读入卡片信息,输入到缓冲区B1中;C进程负责从缓冲区B1中取出信息,进行加工处理,之后将结果送到缓冲区B2中;P进程负责从缓冲区B2中取出信息,并在打印机上印出。

②R进程受C进程影响,B1放满信息后R进程要等待——等C进程将其中信息全部取走,才能继续读入信息;C进程受R进程和P进程的约束:B1中信息放满后C进程才可从中取出它们,且B2被取空后C进程才可将加工结果送入其中;P进程受C进程的约束:B2中信息放满后P进程才可从中取出它们,进行打印。

③信号量含义及初值:B1full——缓冲区B1满,初值为0;B1empty——缓冲区B1空,初值为0;B2full——缓冲区B2满,初值为0;B2empty——缓冲区B2空,初值为0;R进程C进程P进程B1B22、用P.V操作处理生产者和消费者问题如下:mutex初值为1;empty初值为n;full初值为0生产者消费者L1:生产产品 L2:P(full)P(empty) P(mutex)P(mutex)取出产品产品装入缓冲区 V(empty)V(full) V(mutex)V(mutex) GOTO L2GOTO L1(1)信号量mutex,empty,full的作用是什么?(2)为什么P操作的顺序不能调换?(1)mutex起互斥作用,empty与full为同步作用。

(2)假设进程处于如下运行状态:缓冲区暂时无进程申请,故mutex=1。

缓冲区无空单元,即empty=0,此时生产者进程要放产品,若P(empty)与P(mutex)位置颠倒,先执行P(mutex),顺利通过,再执行P(empty),被阻塞,且该进程不会释放临界区资源,使消费者进程无法进入缓冲区,就不能取走产品,最终导致死锁3、设公共汽车上,司机、售票员的活动分别是:司机售票员启动车辆上乘客正常行车关车门到站停车售票开车门下乘客假设售票员关车门后司机才可启动车辆,到站停车后售票员方可开车门,在汽车不断到站、停车、行驶过程中,这两个活动有什么同步关系?用P.V操作实现它们的同步。

定义信号量stop,run初值为0。

司机售票员L1:P(run) L2:上乘客启动车辆关车门正常行车 V(run)售票到站停车 P(stop)V(stop)开车门GOTO L1 下乘客GOTO L24.某数据库有一个写进程,n个读进程,它们之间读、写操作的互斥要求是:(1)写进程正在写该数据库时,不能有其他进程读该数据库;(2)读进程之间不互斥,可以同时读该数据库;(3)如果有若干进程正在读该数据库,一个写进程在等待写,则随后欲读的进程不能读该数据库,需让写进程先写。

用P.V操作描述这一组进程的互斥工作过程。

答:设置:we记录是否有写进程访问请求,当后来到达的读进程发现wc=1,则该读进程循环等待。

Rc是计数器,记录正在访问数据库的读进程个数,rc,wc的初值为0。

Wr 为互斥访问数据库的信号量,初值为1;mutex为互斥访问rc的信号量,初值为1。

读进程与写进程如下:读进程写进程while(wc=1)do skip wc 1P(mutesx) P(wr)rc rc+1 写数据if(rc=1)then P(wr) wc 1V(metex) V(wr)读数据P(mutesx)rc rc-1if(rc=0)then V(wr)V(mutex)5. 图书馆有100个座位,每位进入图书馆的读者要在登记表上登记,退出时要在登记表上注销。

要几个程序?有多少个进程?(答:一个程序;为每个读者设一个进程)(1)当图书馆中没有座位时,后到的读者在图书馆为等待(阻塞)(2)当图书馆中没有座位时,后到的读者不等待,立即回家。

解(1 )设信号量:S=100; MUTEX=1P(S)P(MUTEX)登记V(MUTEX)阅读P(MUTEX)注销V(MUTEX)V(S)解(2)设整型变量COUNT=100;信号量:MUTEX=1;P(MUTEX);IF (COUNT==0){ V(MUTEX);RETURN;}COUNT=COUNT-1;登记V(MUTEX);阅读P(MUTEX);COUNT=COUNT+1;V(MUTEX);RETURN;6. 有一座东西方向的独木桥;用P,V操作实现:(1)每次只允许一个人过桥;(2)当独木桥上有行人时,同方向的行人可以同时过桥,相反方向的人必须等待。

(3)当独木桥上有自东向西的行人时,同方向的行人可以同时过桥,从西向东的方向,只允许一个人单独过桥。

(此问题和读者与写者问题相同,东向西的为读者,西向东的为写者)。

(1)解设信号量MUTEX=1P (MUTEX)过桥V (MUTEX)(2)解设信号量:MUTEX=1 (东西方互斥)MD=1 (东向西使用计数变量互斥)MX=1 (西向东使用计数变量互斥)设整型变量:CD=0 (东向西的已上桥人数)CX=0 (西向东的已上桥人数)从东向西:P (MD)IF (CD=0){P (MUTEX) }CD=CD+1V (MD)过桥P (MD)CD=CD-1IF (CD=0){V (MUTEX) }V (MD)从西向东:P (MX)IF (CX=0){P (MUTEX) }CX=CX+1V (MX)过桥P (MX)CX=CX-1IF (CX=0){V (MUTEX) }V (MX)(3) 解:从东向西的,和(2)相同;从西向东的和(1)相同。

7. 有一个俱乐部,有甲乙两个服务员,当顾客有请求时,甲负责送烟,乙负责送火,无顾客请求时,服务员睡眠。

顾客自己不能带烟和火,当顾客要抽烟时,可请求服务员送烟和火,烟和火还未送到时,顾客必须等待。

设信号量:SY, SH,CY,CH:初值都为0甲服务员REPEATP(SY)送烟V(CY)UNTIL FALSE乙服务员REPEATP(SH)送火V(CH)UNTIL FALSE顾客V(SY) /*(请求送烟)*/V(SH) /*(请求送火)*/P(CY) /* (等烟) */P(CH) /* (等火) */抽烟8.一家四人父、母、儿子、女儿围桌而坐;桌上有一个水果盘;(1)当水果盘空时,父亲可以放香蕉或者母亲可以放苹果,但盘中已有水果时,就不能放,父母等待。

当盘中有香蕉时,女儿可吃香蕉,否则,女儿等待;当盘中有苹果时,儿子可吃,否则,儿子等待。

解设信号量:SE=1 (空盘子);SA=0 (放了苹果的盘子);SB=0 (放了香蕉的盘子)父亲REPEAT剥香蕉P(SE)放香蕉V(SB)UNTIL FALSE母亲REPEAT削苹果P(SE)放苹果V(SA)UNTIL FALSE儿子P(SA)拿苹果V(SE)吃苹果女儿P(SB)拿香蕉V(SE)吃香蕉(2)把(1)改为:儿子要吃苹果时,请母亲放苹果,女儿要吃香蕉时,请父亲放香蕉,(还是盘子为空时才可以放)。

(2)解:再增加两个信号量:SF=0, SM=0父亲REPEATP(SF)剥香蕉P(SE)放香蕉V(SB)UNTIL FALSE母亲REPEATP(SM)削苹果P(SE)放苹果V(SA)UNTIL FALSE儿子V(SM)P(SA)拿苹果V(SE)吃苹果女儿V(SF)P(SB)拿香蕉V(SE)吃香蕉9.有一个超市,最多可容纳N个人进入购物,当N个顾客满员时,后到的顾客在超市外等待;超市中只有一个收银员。

可以把顾客和收银员看作两类进程,两类进程间存在同步关系。

写出用P;V操作实现的两类进程的算法(2003年系统设计员考试的题目)解:设信号量:S=0,C=0 (顾客与收银员的同步信号量),M=N收银员P(S)收银V(C)顾客P(M)进入店内购物V(S)P(C)V(M)10.有一个理发店,店内共有20个座位供顾客等待理发,(进入理发店的顾客,都在此座位上等待理发,正在理发的顾客不占用此座位),当20个座位坐满了,后到的顾客不等待,立即回家。

当没有顾客时,理发师睡眠等待。

解:设信号量:S=0.C=0,MUTEX=1设整型变量 SM=20理发师REPEATP(S) -------如无顾客,理发师等待V(C) 叫一个顾客理发理发UNTIL FALSE顾客P(MUTEX)IF (SM=0){ V(MUTEX)――――满座,离开,回家RETURNELSESM=SM-1―――――空座位数减1V(MUTEX)}V(S)――――――――通知理发师,增加了一个顾客,如理发师在等待则唤醒他P(C) ———————等理发师叫自己理发P(MUTEX)SM=SM+1―――――被叫到,释放一个空的座位V(MUTEX)接受理发如果此题改为:满座时,顾客等待空座位:则顾客进程的程序修改如下:把SM设为信号量 SM=20顾客P(SM) ---------------------申请一个座位,无则等待V(S)――――――――通知理发师,增加了一个顾客,如理发师在等待则唤醒他P(C) ———————等理发师叫自己理发V(SM)接受理发11.一个盒子,内有黑白两种棋子(数量相等),甲每次从盒子中取出一颗黑子,乙每次从盒子中取出一颗白子,一人取了棋子后,必须等另一方取过棋子方可再取,(可假设甲先取)。

解:设信号量:SJ=1,SY=0甲REPEATP(SJ)取一颗黑子V(SY)UNTIL 盒子中无黑子乙REPEATP(SY)取一颗白子V(SJ)UNTIL 盒子中无白子12.按要求完成下面的程序。

设有三个进程,input进程、compute进程和output进程;它们通过共享一个缓冲区buf的合作关系如下:(1)input进程每次输入数据后,把数据送到buf,供compute进程计算和output进程打印;(2)comput进程每次从buf取出已输入的可计算的数据进行计算,并当output进程把输入数据打印完成后,把计算结果送入buf供output进程打印;(3)output进程每次按顺序把buf中的输入数据和计算结果在打印机上输出。

解:设信号量:sa=1,sb=sc=sd=0, 请把能正确实现这三个进程同步关系的P、V 操作的语句填入下面的程序。

procedure inputbeginlocal datarepeatget(data); /*输入数据到data*/p(sa);buf=data;(1)V ( sc )v(sb);until falseend;procedure computebeginlocol datarepeat(2)P ( sb )data=buf;计算data并把结果保存在data;(3)P ( sd )buf=data;v(sc);until falseend;procedure outputbeginlocal datarepeatP(sc)打印buf;(4)V ( sd )p(sc)打印buf;v(sa);until falseend;。

相关文档
最新文档