进程管理PV操作

简介: 进程管理PV操作

含义:PV操作是一种实现进程互斥与同步的有效方法。PV操作与信号量的处理相关,P表示通过的意思,V表示释放。

具体定义:

P(S):

①将信号量S的值减1,即S=S-1;

②如果S30,则该进程继续执行;否则该进程置为等待状态,排入等待队列。

V(S):

①将信号量S的值加1,即S=S+1;

②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。

考点:释放、等待

真题:

2020082617004764.png


分析:

首先,有顾客和收银员两进程,所以这个应该有同步的关系,要协作完成工作。顾客进程的主要工作是进入超市,在进超市之前看看自己能不能进,因为超市限制顾客的人数了。然后进去了,就开始买东西,买完了,就找收银员付钱,付完钱就可以走了。而收银员的工作应该是有顾客付钱来了,就要收钱了,收完钱了,再看看有没有买完东西要付钱的顾客,没有的话可以休息,有的话就继续收钱。

单看顾客进程,从上往下看。顾客进入的前提是要看看是不是能进去。题中信号量S1,S2,Sn初值分别为0,0,n。Sn表示超市可以放n个顾客进来,此时表示的是还有n个资源,也就是超市里一个顾客也没有。S1和S2都等于0是表示顾客和收银员都只有0个资源。

首先顾客进入,P(Sn)一下,Sn=Sn-1=n-1,n-1>0,所以可以放人。然后在超市购物,购完物要付款了,得找收银员了。是P一下,还是V一下,是P(S1)还是P(S2),是V(S1)还是V(S2)?

由于S1和S2都是0,虽然是先P,再V。而且一般同步是P自己,V别人。但是如果P一下,变-1<0,就要开始等待了,进行不下去了。所以应该是V一下,V谁呢,V收营员。哪个信号量是收银员? 不如假设一个,S1好了。V(S1),释放一个收营员的资源,S1=S1+1=1>0,所以收银员可以开始收费了。P(S2)一下,S2=S2-1=-1<0,其他顾客,就不要来付钱了,没地。而收银员要收费就看另一边好了

20200826170103639.png


收银员先怎样怎样,然后收费,然后怎样怎样。还是照一般的理,一般是先P,再V。而且一般同步是P自己,V别人。所以看看c1应该是P,P(S1)=S1-1=1-1=0,表示收银员的资源被占用了,其他要结账的顾客我忙着呢等等啊。c2,是收完钱,V(S2),S2=S2+1=1>0,所以顾客又可以开始来付钱了。

20200826170117300.png


最后顾客走了,释放了他在超市里占的那个资源,V(Sn)。 按照分析的结果,a、b1、b2、c1、c2分别是P(Sn),V(S1),P(S2),P(S1),V(S2)。然后根据选项答案是CDA


相关文章
|
7月前
进程管理——PV操作
进程管理——PV操作
176 1
|
安全 算法 调度
411操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(四)
411操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
175 1
411操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(四)
|
算法 调度 C++
410操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(三)
410操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
232 1
410操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(三)
|
算法 调度
409操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(二)
409操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
284 1
409操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(二)
|
存储 消息中间件 程序员
408操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(一)
408操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
532 1
408操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(一)
进程的同步、互斥以及PV原语
在处理进程间的同步与互斥问题时,我们离不开信号量和PV原语,使用这两个工具的目的在于打造一段不可分割不可中断的程序。应当注意的是,信号量和PV原语是解决进程间同步与互斥问题的一种机制,但并不是唯一的机制。
1214 0
|
6月前
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
137 13
|
5月前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
5月前
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
192 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
|
4月前
|
算法 Linux 调度
探索进程调度:Linux内核中的完全公平调度器
【8月更文挑战第2天】在操作系统的心脏——内核中,进程调度算法扮演着至关重要的角色。本文将深入探讨Linux内核中的完全公平调度器(Completely Fair Scheduler, CFS),一个旨在提供公平时间分配给所有进程的调度器。我们将通过代码示例,理解CFS如何管理运行队列、选择下一个运行进程以及如何对实时负载进行响应。文章将揭示CFS的设计哲学,并展示其如何在现代多任务计算环境中实现高效的资源分配。

相关实验场景

更多