进程-PV操作

在多道程序系统中,进程是并发执行的,这些进程间存在不同的相互制约关系。

一、临界资源

  进程在运行过程中,一般会与其他的进程共享资源,而有些资源具有排他性。一次只能为一个进程所使用,通常把这种一次仅允许一个进程使用的资源称为临界资源(如:打印机、绘图机、一些进程间共享的变量、缓存区)。进程访问临界资源的那段代码称为临界区,也叫临界段。

  访问临界资源应遵循如下原则:

1、空闲让进(或有空即进):当进程处于临界区时,可以允许一个请求进出临界区的进程立即进出自己的临界区。

2、忙则等待(或无空则等):当已有进程进入临界区时,其他试图进入临界区的进程必须等待。

3、有限等待:对要求访问临界资源的进程,应保证能在有限的时间内进入自己的临界区。

4、让权等待:当进程不能进入自己的临界区时,应释放处理机。

二、同步互斥

1、同步

同步是合作进程间的直接制约问题。

进程间的同步是指进程间完成一项任务时直接发生相互作用的关系。

2、互斥

互斥是申请临界资源进程间的间接制约问题。

进程互斥是指系统中各进程互斥使用临界资源。

三、信号量

1、定义:一个整型变量,根据控制对象的不同被赋予不同的值。

2、分类:公用信号量和私用信号量。

  公用信号量——实现进程间的互斥,初值为1或资源的数目。

   私用信号量——实现进程间的同步,初值为0或某个正整数。

3、 信号量的物理意义:

  S>=0,表示某资源的可用数;

  S<0,则其绝对值表示阻塞队列中等待该资源的进程数。

四、P操作

1、定义:

S:=S-1

  若S>=0,则执行P操作的进程继续执行;

  若S<0,则置该进程为阻塞状态(因为无可以用资源),并将其插入阻塞队列。

2、操作过程:

  Procedure(Var S:Semaphore)

  {

    S--;

    if(S<0)

    {

    阻塞该进程;

      将该进程插入信号量S的等待队列;

     }

  }

  Semphore表示所定义的变量是信号量。

五、V操作

1、定义:

  S:=S+1

   若S>0,则执行V操作的进程继续执行;

   若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续执行。

2、操作过程:

       Procedure V(Var S:Semaphore)

   {

    S++;

    if(S <= 0)

    {

    从信号量的等待队列中取出队首进程;

      将其插入就绪队列;

      }

   }

时间: 2024-07-30 04:08:49

进程-PV操作的相关文章

PV 操作经典例题---三个进程之间的同步

问题: 总共有 读入.执行.打印 三个进程,试用PV操作描述读入B1打印B2的同步过程. 问题解读: 这个问题就是说了这样一件事:一个输入B1,被操作之后,成为B2,将B2打印.怎样用PV操作来说这件事.那么新的问题来了:啥是个PV操作? 就拿这道题来解释PV操作吧,我想打印一个值,前提条件是这个值存在吧,如果不存在,那么打印这个动作就不应该被执行,不能说啥也没有在那瞎打印吧.那么怎样才能让它不执行呢? 这就需要引入信号量机制了: 当一个操作的信号量为负数的话,就会挂起等待,不执行. 当一个操作

Operating System-进程/线程内部通信-信号量、PV操作的实现和应用(解决哲学家进餐和生产者消费者问题)

本文主要内容: 信号量的实现 利用信号量解决哲学家用餐问题 利用信号量解决生产者消费者问题 一.信号量的实现 1.1 信号量结构 typedef struct { int value; struct process * list } semaphore; value代表当前信号量可以使用的数量,list代表当前信号量上所等待的进程. 1.2 P操作实现 P(semaphore * s) { s.value--; if(s.value < 0) { add current process to s

Operating System-进程/线程内部通信-信号量和PV操作

本文介绍操作系统进程管理的两个核心概念: 信号量 PV操作 一.信号量介绍 1.1 信号量引入 信号量(Semaphore)1965年由Dijkstra引入的.信号量一般由一个值是一个变量,其值有可能是0,或者一个正数,或者是负数: 0表示没有资源可以使用 大于0,标识可用资源的数量 小于0,其绝对值表示等待这个资源的进程的个数 针对信号量,Dijkstra提出了两个操作: P操作 V操作 信号量的值只有通过PV操作来完成. 1.2 PV原语操作(atomic action) PV操作里面会有一

clients(PV操作共享内核内存进行输入输出分屏) - server(进程间通信)模型实现

1.拓扑结构 2.PV操作共享内核内存进行输入输出分屏 (1) 1 int semop(int semid,struct sembuf *sops,size_t nsops): 功能描述 操作一个或一组信号. semid: 信号集的识别码,可通过semget获取. sops: 指向存储信号操作结构的数组指针,信号操作结构的原型如下 1 struct sembuf 2 { 3 unsigned short sem_num; /* semaphore number */ 4 short sem_op

软考征程之Pv操作

一.概念 1.PV操作的含义 PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的值减1,即S=S-1: ②如果S30,则该进程继续执行:否则该进程置为等待状态,排入等待队列. V(S):①将信号量S的值加1,即S=S+1: ②如果S>0,则该进程继续执行:否则释放队列中第一个等待信号量的进程. PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥.PV操作属于进程的低级通信. 2.进程的同步和互斥 同步:指在并发进程之

信号量与PV操作

在操作系统中进程之间经常会存在互斥和同步两种关系.为了有效处理这种情况,W.Dijskra在1965年提出信号量和PV操作的概念(1)信号量:一种特殊的变量,表现形式是一个整型S和一个队列(2)P操作:也成为"down()和wait()操作",使S=S-1,若S<0,进程暂停执行并放入信号量的等待队列.(3)V操作,也称为"up()和signal()操作",使S=S+1,若S<=0,唤醒等待队列中的一个进程. PV操作属于进程的低级通信. 利用信号量和P

PV操作 (转载)

PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思.信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作. 信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程.信号量的值与相应资源的使用情况有关.当它的值大于0时,表示当前可用资源的数量:当它的值小于0时,其绝对值表示等待使用该资源的进程个数.注意,信号量的值仅能由PV操作来改变. 一般来说,信号量S>=0时,S表示可用资源的数量.执行一次P操作意

P-V操作

1.P-V操作原理 P操作和V操作是不可中断的程序段,称为原语. P原语操作的动作 (1).sem减1: (2).若sem减1后仍大于或等于0,则进程继续执行: (3).若sem减1后小于0,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度. V原语操作的动作 (1).sem加1: (2).若相加结果大于0,则进程继续执行: (3).若相加结果小于或等于0,则从该信号的等待队列中唤醒一等待进程,然后转进程调度. 注意:P.V操作对于每一个进程来说,都只能进行一次,而且必须是成对使用,且

PV操作——软考探究(五)

之前总结了和资源有关的银行家算法,随着学习的深入,对于资源的理解也有了更深的理解,此篇文章通过解决同步.异步问题的典型机制--PV操作来加深对资源的理解. P操作:申请一个资源.它是执行操作的前提,只有有了资源才可以执行操作.就和现实生活是一样的,只有有了资源才能够进行生产. V操作:释放一个资源.在执行完毕一个操作以后要将占用的资源释放掉,和银行家算法吻合, 同时发出信号. [例]两个相关联的进程A和B,他们共享一个缓冲器.进程A不断地读入数据,并送入缓冲器:进程B不断地从缓冲器中取出数据并加