PV操作和信息量S

一、S信息量

信息量(Semaphore)是最早用来解决进程同步和互斥问题的机制

  • 由一个值和一个指针组成,指针指向等待该信息量的进程
  • 信息量的值标识相应资源的使用情况
  • 指针指向该信息量的下一个进程

二、PV操作

1、什么是PV操作

PV操作是一种实现进程互斥和同步的有效方法。由P操作原语和V操作原语组成,对信息量进行控制。

  • PV操作处理进程互斥问题,协调资源的争用
  • PV操作必定对应2个以上的进程
  • 每个进程都有自己的PV操作,每个PV操作也只能属于一个进程
  • 通俗理解:P操作请求资源,V操作释放资源

2、P操作

  • 代表需要、申请、锁定、占用的资源
  • P操作: S=S-1
  • 如果减1后大于等于0,即 S-1>=0,即 S>=1,则往下执行。否则进程挂起、等待,暂停执行。等待到信息量S,满足S>=1
  • 简而言之: 在P操作之前,信息量S-1<0,即S<0,说明资源未到位,所以需要等待。

3、V操作

  • V操作,代表释放资源
  • V操作: S=S+1
  • 如果信息量加1后,即S+1>0,则往下执行,否则继续从进程队列里唤醒其他进行进行处理。处理啥?释放资源,直到信息量满足: S+1>0
  • 简而言之: V操作之后,信息量如果还是零甚至为负,说明资源释放还不够,程序还要继续进行释放,不能进行下一步操作

三、互斥控制与同步控制

1、互斥控制

互斥控制是为了保护共享资源,不让多个进程同时访问这个共享资源。换句话说,就是阻止多个进程同时进入访问这些资源的di代码段,这个代码段成为临界区,而这种一次只允许一个进程访问的资源称为临界资源。

  • 信息量S初始值为 1
  • 当S<0时,其绝对值就是等待使用临界资源的进程数,也就是等待队列中的进程数
  • 当一个进程从临界区出来时,执行V操作(S=S+1),如果 等待队列还有进程(S<=0),则调入一个新的进程进入(唤醒)

2、同步控制

最简单的同步形式是:进程A在另一个进程B到达L2之前,不应前进超过点L1

  • 信息量S初始值为0
  • 如果进程A先执行到L1,那么执行P操作(S=S-1)后,则S<0,停止执行
  • 直到进程B执行到L2时,将执行V操作(S=S+1),唤醒A继续执行

3、生产者-消费者问题

以上是 PV操作和信息量S 的全部内容, 来源链接: utcz.com/a/29422.html

回到顶部