当前位置:首页 期刊杂志

浅析PV操作在多道程序系统中的应用

时间:2024-04-24

[摘 要]在多道程序系统中,若干个进程可以同时执行,各进程之间可以是无关的,也可以是有交往的。有交往的并发进程由于共享内部资源,因此导致进程执行速度上的制约,这种制约分为:间接制约与直接制约。间接制约引起进程之间的互斥执行,直接制约引起进程的同步执行。如果并发进程对资源竟争不当会导致各种并发问题,我们可用PV操作来管理相关临界区,实现进程的互斥和同步。

[关键词]PV操作 多道系统 临界区 互斥 同步

作者简介:刘羽鹏(1981-),男,江西吉安人,南昌理工学院教师,助教,主要研究方向:计算机科学与技术。

并发进程在访问资源时可能有两种关系:一种是竞争关系,另一种是协作关系。当并发进程存在竞争关系时必须互斥地使用共享资源;当并发进程存在协作关系时必须互通消息。把这两种关系分别称为“进程互斥”和“进程的同步”,正确应用PV操作,可实现进程互斥和同步。

一、PV原语和多道程序系统

(一)为了确保PV操作自身执行的正确性,约定PV操作必须由两个不可中断的过程,我们把不可被中断的过程称为“原语”。我们设置信号量sem,sem大于等于零时代表可供并发进程使用的资源实体数,但sem小于零时则表示正在等待使用临界区的进程数。

PV操作是由两个操作,即P操作和V操作组成。P操作和V操作是两个在信号量上进行的过程。

(二)让多个计算机问题同时装入一个计算机系统的主存储器并行执行,这种设计技术称“多道程序设计”,这种计算机系统称“多道程序设计系统”或简称“多道系统”。多道程序设计系统是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。两个或两个以上的程序在计算机系统中同处于开始和结束之间的状态。多道程序技术运行的特征:多道、宏观上运行、微观上串行。

在多道程序设计中,若干个进程可以同时执行,并发进程之间可以是无关的,也可以有交往的。例如只有一个教室,这个公有资源使得每个班只能互斥使用它,这就是间接制约。进程的互斥与同步可以很好的通过信号量和PV原语来实现。并发进程的资源竞争不当还会导致共享冲突。进程间正确的互斥和同步能避免出现与时间有关的错误。

二、PV操作

如果在并发进程中,有进程在相关临界区执行时,不让另一个进程进入相关的临界区执行就不会形成多个进程对相同的共享变量交叉访问。于是可避免出现与时间有关的错误。即只要涉及相同变量的若干个进程的相关临界区互斥执行,就不会造成与时间有关的错误。

(一)用PV操作实现进程的互斥。

进程的互斥是指:当若干个进程都要使用某一共享变量时,任何时刻最多只允许一个进程去使用其他要使用该变量的进程必须等待,直到占用资源者释放了该资源。用PV操作实现对相关临界区的管理,只要用一个信号量与一组涉及共享变量的相关临界区联系起来,让并发进程互斥进入自己的临界区。

1.PV操作可确保共享数据的一致性。

例如:用PV操作管理火车站售票系统,可以避免各售票终端同时卖出同一天同一车次的火车票和把一张票卖给几个不同的乘客的错误。

Begin

S:semaphore;

S:=1;

Cobegin

Process Pi(i=1,2,---,n)

Begin

{按旅客要求找到Aj};

P(s);

Ri=Aj;

IfRi>=1 then begin Ri=Ri-1;

Aj=Ri;

V(s);

{输出一张票};

End;

Else begin V(s); {输出“票已售完”};

End;

Coend;

End;

在编写上述程序时,千万别忘了 else begin V(s); {输出“票已售完”},end;这条语句,如果写成 else{输出“票已售完”} ,当Ri<1时,则会出现已进入临界区的进程无限地逗留在临界区中,而等待进入临界区的进程无限地等待进入临界区,这不符合相关临界区管理应满足的条件,将造成系统瘫痪。

2.调用PV操作时要注意确保并发效率,同时避免出现并发问题。上述程序段要注意以下不良的管理方法,写成:

Process Pi(i=1,2,---,n)

Begin

P(s);

{按旅客要求找到Aj};

Ri=Aj;

IfRi>=1 then begin Ri=Ri-1

Aj=Ri;

V(s);

{输出一张票};

End;

Else begin v(s);

{输出“票已售完”}

End;

End;

上述程序把不属于临界区的语句“{按旅客要求找到Aj};”也放进了临界区,降低了系统并发执行的能力。我们的原则是能并发执行部分要保持其并发性,只有涉及到共享变量的程序段才是需要互斥执行临界区,临界区的代码应尽量小,同时确保不会出现死循环。

(二)用PV操作实现进程的同步。

进程的同步是指并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才能被唤醒。

在计算机系统中为了完成某个任务,进程之间有时要协作,由于各进程的执行速率可能不同,于是可能导致各进程在并发执行过程中出现数据覆盖和重复读取数据的错误,针对上述情况我们同样可以用PV操作来实现进程间互通消息的办法控制进程的执行速度。

在PV操作实现同步时,一定要根据具体的问题来定义信号和调用P操作或V操作。一个信号量与一个消息联系在一起,当有多个消息时必须定义多个信号量;测量不同的消息是否达到或发送不同的消息时,应对不同的信号量调用P操作或V操作。

三、用PV操作实现并发进程互斥和同步应该注意的问题

(一)用PV操作实现并发进程的互斥和同步,要注意以下4个方面:1.识别临界资源:一是看是否被共享,二是看是否有排他性要求。2.划出临界区,PV原语操作应分别紧靠临界区的头尾部。3.临界区代码应尽可能小,且不能有死循环。4.要保证PV操作在程序相关的任一执行流程上成对出现。

(二)进程同步和进程互斥之间有以下的关系:1.进程互斥可在伙伴进程之间,也可以在非伙伴进程之间;同步发生在相互有逻辑关系的伙伴进程之间。2.广义地看,互斥是一种特殊的同步,所以把用来解决进程互斥和同步的工具统称为同步机制。

参考文献

[1]孙钟秀,谭耀铭。操作系统教程(第二版),高等教育出版社,1995

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!