进程管理之PV操作的个人理解

本文深入解析了进程的三态和五态模型,详细阐述了P、V操作在进程管理和资源分配中的应用,通过实例说明如何防止资源竞争和死锁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在了解PV操作之前,我认为有必要先简单理解进程的状态与其之间的转换。
进程图关系转换
三态模型(图左)中最基本的三个状态:运行、等待和就绪。

  • 运行:进程正在处理机上运行。对于单处理机系统,处于运行状态的进程只有一个。
  • 等待:进程因发生某事情而暂停执行。
  • 就绪:顾名思义进程已经具备执行条件但并未执行。

在进程运行过程中,由于自身进展情况及外界环境的变化,这三种状态在一定条件下相互转换。

五态模型则是在三态模型的基础上增加了新建态和终止态。

  • 新建态:简单理解为进程刚被创建但还没有被提交的状态,等待系统完成创建进程的所 有必要信息。创建进程分为两个阶段,第一个阶段为一个新进程创建必要的管理信息,第二个阶段让该进程进入就绪状态。
  • 终止态:进程已结束运行,回收除进程控制块之外的其他资源,并让其他进程从中收集有关信息。终止进程分为两个阶段,第一个阶段等待操作系统进行善后处理,第二个阶段释放主存。

由于进程不断创建,主存资源不能满足所有进程运行的要求,则需对某些进程挂起以平衡系统负载,则出现图右的情况。简单理解就是将进程对换到主辅存时进程的状态,这里不过多讲解。

P、V操作有三个概念需要理解:临界资源、临界区和信号量。

  • 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等。
  • 临界区:每个进程中访问临界资源的那段代码称为临界区
    有空即进,无空则等;有效等待,让权等待
  • 信号量:是一种特殊的变量(S)。

信号量机制主要有整形信号量、记录型信号量、信号量集机制。
这篇主要讲的是整形信号量与P、V操作。

信号量是一个整形变量,根据控制对象的不同赋不同的值,信号量可分为两类:

  • 公用信号量:实现进程间的互斥,初值等于1或资源的数目。
  • 私用信号量:实现进程间的同步,初值等于0或某个正整数。
    信号量S的物理意义为:S≥0,表示某资源的可用数;S<0,其绝对值表示阻塞队列中等待该资源的进程数。
(P、V操作流程图)

P操作定义:S=S-1,若S≥0,则执行P操作的进程继续执行;否则,若S<0,则置该进程为阻塞状态,并将其插入阻塞队列。
V操作定义:S=S+1,若S>0,则执行V操作的进程继续执行;否则,若S≤0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,执行V操作的进程继续执行。


下面我们来看一道例题加深理解:

(S1初值为1,S2初值为0)

       先不看P、V,单从生产者和消费者我们不难看出,生产者生产一个产品,并将产品送到缓冲区等待消费者使用,消费者从缓冲区拿走产品并消费产品这么一个流程。
      那么这里有一个问题,假设生产者进程生产一轮送到缓冲区后,消费者进程没有运行,再次执行生产者进程,则缓冲区中的产品则会溢出,反之消费者一直取出产品直至缓冲区为空,同样也会出现问题,PV操作的好处就体现在这里了。

       加入PV操作后,根据流程图公式计算可知,第一轮生产者进程的值为P(S1)为0,P(S2)为1,一个产品被放入缓冲区,当消费者进程没有运行时,生产者进程再次运行后P(S1)为-1时,则符合S<0的判断,并加入进程队列等待,这时就能较好解决产品溢出的问题了。


以上就是我对PV操作的理解和认识,如有错误可在下方评论我会及时做出修改。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值