PV操作
PV操作最简单的理解:
比方说我们办公的地点只有一台打印机(资源个数是1),甲同事正在使用它(P操作,占用资源,信号量,这个时候资源个数-1),甲同事使用完了之后,释放打印机资源(V操作,这个时候资源个数+1)。
临界资源:如千军万马过独木桥,其中独木桥就是临界资源。
临界区:访问临界资源的代码段
信号量:我们经常见到的P(S) V(S)中的S就是信号量,也就是说pv操作,操作的是信号量。在这里我们就可以将信号量理解为资源的个数。信号量的取值范围一般是 系统资源个数-——进程数-系统资源个数,如果出现负数,表示当前有几个进程正在排队等待。
PV操作说白了就是两种原子操作的组合,有P操作和V操作。
下面进行详细的解答:
P操作:
(1)将信号量S的值减1,即S=S-1;
(2)如果S>=0,则该进程继续执行;否则该进程置为等待状态。
V操作:
(1)将信号量S的值加1,即S=S+1;
(2)如果S>0该进程继续执行;否则说明有等待队列中有等待进程,需要唤醒等待进程。
注意:单缓存区一次只能缓存一个产品。
说白了P操作就是减操作,V操作就是加操作。也可以理解成:P是加锁操作,V是解锁操作。
答题技巧:
图中有几条箭线,信号量就标注几个,这是答题的技巧,在标注信号量的时候,遵循的规则是:从左到右,从小到大。在设置信号量的时候,还要注意前驱关系,一定要保证自己设置的信号量能够符合前驱关系。
初始进程没有P操作,结束进程没有V操作。
哪个进程开始执行的时候,一定会索要资源,这个时候就会执行P操作。也就是加锁操作。V操作也可以理解为是开锁操作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY