进程-PV操作
Posted 凌潇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程-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)
{
从信号量的等待队列中取出队首进程;
将其插入就绪队列;
}
}
以上是关于进程-PV操作的主要内容,如果未能解决你的问题,请参考以下文章