进程的PV操作

进程的同步与互斥

互斥:

        在同一时刻,只允许某一个进程使用资源,同一个资源不能同时服务于多个进程。

例如:

        单人独木桥,在同一时刻桥只服务于一人,同一时刻只允许一人通过,其他人只能等待他通过之后才能逐个继续通过。

与互斥相反的是共享:

        例如:过街天桥,同一时刻可通过多人,同一时刻可以服务于多个进程

同步:

        速度有差异,在一定情况下停下等代

例如:

        张三和李四同时从A点到B点,相同地点相同路径,张三骑车,李四走路,明显张三速度要快于李四,等差距较大时,张三停下等等李四两人一起到达。

实例:

        讨论下图哪里存在互斥哪里存在同步

互斥情况: 

        单缓冲区,同一时刻只允许一人(生产者或者消费者其中一个人)进行操作,一次只能存放一个物品,满足在同一时刻,只允许某一个进程使用资源,同一个资源不能同时服务于多个进程。此为互斥。

同步情况:

        单缓冲区只能放入一个物品,生产者放入一个物品后不能继续放入第二个,需等消费者将物品拿走之后才能继续放入,满足速度有差异,在一定情况下停下等代,此为同步。

同步情况:

        多缓冲区能放入多个物品,生产者放满之后不能继续存放,需等消费者将物品拿走之后才能继续放入,满足速度有差异,在一定情况下停下等代,此为同步。

综上:同步与互斥在同一题目中可能同时存在

PV操作

临界资源:

        诸进程之间需要以互斥方式对其进行访问的共享资源,如打印机,或上述问题中的独木桥;

临界区:

        临界区是代码段,是每个进程中访问临界资源的那段代码

信号量:

        存在于PV进程内部的一种变量,例如下面的变量S

P操作和V操作流程

 PV操作例题:

 题目中如果引入PV操作在运作的过程中极易出错:(单缓冲区只能存放一个产品)比如:

        若生产者进程先运行,生产者持续生产产品并送到单缓存区,而消费者还未消费此时生产过多造成单缓冲区溢出;

        若消费者进程先运行,消费者从缓冲区 取产品进行消费,此时生产者尚未生产,进程会出错

 

PV操作的作用:

        是解决某些并发进程中间某些约束(例如:先后等)。

P操作的特点:

        可以阻塞本流程P操作之后的操作(做题中常用)

V操作的特点:

        可以唤醒被阻塞的操作(做题中常用)

例题:

 在此类题目考察PV操作的应用,那么切入点一般是PV操作的作用(某些并发操作之间的约束关系)答案:AC

因此从并发操作之间的约束关系入手可看出:

        付款操作购书者进程无法独立完成,收费动作也不能由收银员独立完成,所以二者之间存在配合或交互等约束关系;

        收银员进程只能是等待购书者唤醒之后才能进行收银操作,在未唤醒时只能处在阻塞状态,所以b1出应该是P操作阻塞后续收费流程;

        付款操作购书者不能独立完成,因此到此步骤之后需要购书者唤醒收银员,唤醒需要用到V操作,所以a1处应该是V操作;

        唤醒收银员之后,购书者需要等待收银员完成收银进程再进行下步操作;

        因此a1处唤醒收银员之后需要立即阻塞购书者进程a1操作之后的操作,所以a2此处应该用P操作完成阻塞动作;

        收银员流程完成收费操作之后需要唤醒被阻塞的购书者进程,使购书者进程继续运行付款之后的操作,所以b2处应该用V操作来唤醒购书者进程;

关系(同组PV操作相同信号量)

        购书者流程中a1处V操作唤醒的是收银员流程中b1处被P操作阻塞的操作,所以a1,b1为是一组PV操作,运用相同信号量;

        收银员流程中b2处V操作唤醒的是购书者流程中a2处P操作被阻塞的操作,所以a2,b2为是一组PV操作,运用相同信号量;

PV操作与前驱图

        用PV 操作对前驱图中的操作进行先后限制 

PV操作对前驱图中进程的影响:

        P操作的阻滞功能一般作为“锁”来限制某项进程,使其在解锁之后才能运行;

        V操作的唤醒功能一般作为“钥匙”来解锁某项进程;

        例如右侧图中,先运行D是无法运行的,需要先运行ABC进程之后用其进程末尾的V(A),V(B),V(C)唤醒对D进程中的P(A),P(B),P(C),对其进行解锁之后才能运行D进程,进而解锁E进程

在前驱图与PV操作结合的题目中,一般主要考察PV操作对前驱图中各项进程的锁定与解锁;

例子:


 

此题考察前驱图中PV操作的锁定与解锁,答案:CAA

首先应对进程P4,P5用P操作进行锁定,使其只能在进程P3执行完毕之后运行V操作解锁之后才能运行;

在进程P3后设立V进程,使P3运行完毕之后可以用V进程解锁P4,P5;

再对进程P3用P操作进行锁定;使其只能在P1,P2进程均执行完毕之后才能运行;

在P1,P2进程之后设立V操作,用来解锁P3进程的锁定;

所以题目中

进程P1后a处应是V(P1);用来解锁进程P3执行前c处的P(P1);

进程P2后b处应是V(P2);用来解锁进程P3执行前c处的P(P2);

进程P3执行后的d处应是V(P4),V(P5)用来解锁进程P4,P5执行之前e,f处的P(P4),P(5);

另:此类题目中如有多个信号量,如此题中的S1,S2,S3,S4;其分布顺序一般为     左-->右;上-->下;

所以:

a-->V(S1);        b-->V(S2);        c-->P(S1),P(S2);        d-->V(S3),V(S4);        e-->P(S3);        f-->P(S4);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值