PV操作常在考研,软考,计考中出现,讲真这个概念在一开始有点让我晕头转向,尤其是多个并行的进程需要计算的情况,现在弄懂了写一篇文章权且当作笔记。

首先我们需要了解三个概念:信号量,P,V(统称PV操作)

1.信号量

信号量(Saphore)是由一个值和一个指针组成,指针指向等待该信号的进程,信号量的值表示资源的使用情况。常用来解决进程的同步与互斥问题。一般而言用S表示,S表示可用资源数(信号量)。

S>=0,存在可用资源

S<0,无可用资源,|S| 此时表示等待该资源的进程数

2.PV操作

包含两个部分,P操作和V操作,P表示通过(passeren),V表示释放(vrijgeven)【注:荷兰语】

PV操作:一种实现进程互斥与同步的有效方法,包含P操作与V操作。

P操作:使 S-1 ,若 S>=0 ,则该进程继续执行,否则排入等待队列。

V操作:使 S+1 ,若 S<0 ,唤醒等待队列中的一个进程。

临界资源:同一时刻只允许一个进程访问的资源,与上面所说的 S有关联。

多说无益直接上题目:

例题:

进程P1,P2,P3,P4的前趋图如下,其包含了S1,S2,S3,S4四个信号量,且初值均等于0,写出进程即PV操作的过程

分析:如图所示,其包含了四个进程,P1,P2,P3,P4,分开写内容。

【由于图片限制,因此以进程名:开始,进程执行,结束,表示各个阶段】如:

P2:P(S1),进程执行,V(S2)

 

 

 

P1:首先他没有任何的来源,因此开始填【空】,进程执行,结束后分别向P2,P3进程发送信号量S1,S2,因此结束时需要释放S1,S2,填写【V(S1),V(S2)】

P2:接收到P1提供的信息量S1,因此开始需要通过进程S1,开始填写【P(S1)】,接着进程执行,结束时需要给P3进程提供信息S3,因此填写【V(S3)】

P3:接收到P1提供的信息量S2,P2提供的信息量S3,因此开始填写【P(S2),P(S3)】,接着进程执行,结束时需要给进程P4提供信息S4,因此填写【V(S4)】

P4:接收到P3提供的信息S3,因此开始填写【P(S4)】,接着执行进程,结束时由于没有下一步的传递项,故直接填写【空】

 

特别注明:S信号量的顺序并没有与进程标号拥有绝对的对应关系,如P2并不一定对应发送S2信号,但是S的顺序选择应该与进程的先后顺序有关,如P1是第一个进程至少会有一个S1信号量(这也是我当初最不理解的地方)

分类: 软件工程

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注