红橙绿文创室——一个创造奇迹的地方
您当前位置:红橙绿编辑部 > 论文大全 > 技术 > 计算机 >
浅析PV操作在多道程序系统中的应用_红橙绿编辑部-一个创造奇迹的地方

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

在多道程序系统中,若干个进程可以同时执行,各进程之间可以是无关的,也可以是有交往的。有交往的并发进程由于共享内部资源,因此导致进程执行速度上的制约,这种制约分为:间接制约与直接制约。间接制约引起进程之间的互斥执行,直接制约引起进程的同步执行..

立即咨询

快速申请办理

称       呼 :
手机号码 :
备       注:
分享:

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

发布时间:2011-06-27 热度:

浅析PV操作在多道程序系统中的应用
刘羽鹏   南昌理工学院工程院
[摘要]在多道程序系统中,若干个进程可以同时执行,各进程之间可以是无关的,也可以是有交往的。有交往的并发进程由于共享内部资源,因此导致进程执行速度上的制约,这种制约分为:间接制约与直接制约。间接制约引起进程之间的互斥执行,直接制约引起进程的同步执行。如果并发进程对资源竟争不当会导致各种并发问题,我们可用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;
If  Ri>=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;
   If  Ri>=1 then begin Ri=Ri-1
                     Aj=Ri;
V(s);
  {输出一张票};
End;
Else begin v(s);
{输出“票已售完”}
End;
End;
上述程序把不属于临界区的语句“{按旅客要求找到Aj};”也放进了临界区,降低了系统并发执行的能力。我们的原则是能并发执行部分要保持其并发性,只有涉及到共享变量的程序段才是需要互斥执行临界区,临界区的代码应尽量小,同时确保不会出现死循环。
(二)用PV操作实现进程的同步。
进程的同步是指并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才能被唤醒。
在计算机系统中为了完成某个任务,进程之间有时要协作,由于各进程的执行速率可能不同,于是可能导致各进程在并发执行过程中出现数据覆盖和重复读取数据的错误,针对上述情况我们同样可以用PV操作来实现进程间互通消息的办法控制进程的执行速度。
例如,有一个生产者和一个消费者,它们公用一个缓冲器,每生产一个物品就要存入缓冲器,但缓冲器中每次只能存入一件物品,只有当消费者把物品取走后,生产者才能把下一个物品存入缓冲器。同样,消费者要不断取走物品去消费,当缓冲器中有物品时他就可去取,每取走一个物品后必须等生产者再放入一件物品后才能再取。要测试自己所期望的消息是否到达可调用P操作,发送消息时可调用V操作。
在PV操作实现同步时,一定要根据具体的问题来定义信号和调用P操作或V操作。一个信号量与一个消息联系在一起,当有多个消息时必须定义多个信号量;测量不同的消息是否达到或发送不同的消息时,应对不同的信号量调用P操作或V操作。


关闭窗口
上一篇:提高计算机运行速度方法的分析
下一篇:浅析树形控件在ASP.NET中的使用

相关阅读

官方微信公众号

论文部97435085

江西省赣州市长征大道

出版部97435086

江西省赣州市长征大道

文创部97435087

江西省赣州市长征大道