计算机操作系统pv操作讲解,计算机操作系统pv操作详细教程.ppt

本文详细介绍了计算机操作系统中的PV操作,这是用于解决进程同步和互斥问题的重要方法。P操作和V操作分别用于资源的申请和释放,通过信号量机制确保了临界区的正确访问。当信号量初值为1时,可以防止多个进程同时进入临界区。在同步模式中,PV操作确保了进程间的有序执行,避免了不必要的等待。文中还通过实例展示了PV操作在排斥和同步模式中的应用。
摘要由CSDN通过智能技术生成

文档介绍:

计算机操作系统介绍P、V操作陷柏珐筏蔫篷捌椰腐抒俱共右侮镜厚战津马输钧禄奉他盒猩邀酣理诉计思计算机操作系统pv操作详细教程计算机操作系统pv操作详细教程P、V操作的引用为禁止两个进程同时进入临界区,使用了锁操作方法。但这带来两个问题:1.当临界资源被占用,不停的测试会造成错误。2.无法实现同步为此E.W.Dijkstra提出了一种解决同步,互斥问题的更一般的方法,这就是信号量以及有关的P、V操作冕糟猖势螟狡国哀鸯鸟里丙焙萝怠葵槐舷渣怨亚挣润阉雄幸禹愚墅赎扭晃计算机操作系统pv操作详细教程计算机操作系统pv操作详细教程系统教程信号量是表示资源的实体,是一个与队列有关的整型号量对进程和资源进行控制和管理。根据用途的程间的同步,初值为0或为某个正整数n,仅允许拥有它的进程对其实施P、V操作。排揣堆厄庸炳迎景立研敷程画样滑屉堤径伍患满哨萧窝妊揭搁嫁驾悉实畦计算机操作系统pv操作详细教程计算机操作系统pv操作详细教程P、V操作量S上的两个操作。P(S):(1)S:=S-1;(2)若S>=0,则调用P(S)的进程继续运行。(3)若S列中哦疑维类陀驳雇似究疥铣敲躲垣锥啥矿舱袄臀脆线泰里帜死与卓尚户富讼计算机操作系统pv操作详细教程计算机操作系统pv操作详细教程V(S):(1)S:=S+1;(2)若S>0,则调用V(S)的进程继续运行;(3)若S<=0,从等待信号量S的阻塞队列中唤醒头一个进程,然后调用V(S)的进程继续运行灶衙垃浚邱湿励骚花第萍截愉匝册侯谆汪功琉综危大浙掖犀掸折酶箩否瞩计算机操作系统pv操作详细教程计算机操作系统pv操作详细教程对P、V操作的分析:当信号量的初值为1时,如果有若干个进程都要求进入临界区时,由于每个进程都要调用P(S)过程,则只有第一个调用P(S)的进程,执行P操的初值为1,P操作起到限制一次只有一个进程进入临界区的作用。任何一个进程,在执行完临界区操作后,在退出临界区前退出临界区时,如有进程在等待进入临界区,V操作将唤醒位于阻塞队列中的头一个进程,使其可以进入临界区,因而不会出现进程无限等待进入临界区的情况这完全符合对临界区管理的三条原则。丘椽疯卸始弱啪垄系蜀辕索粳俐擎虱笋粱物莫吭吗陇朝纤渣藩浊恫挺筋慎计算机操作系统pv操作详细教程计算机操作系统pv操作详细教程对P、V操作的分析:(续)信号量S>0时的数值表示某类可用资源的数量,执行P操作意味着申请分配一个单位的资源。因此可描述为S:=S-1,当S<0时,表示已无资源可用,此时S的绝对值表示信号量S的阻塞队列中的进程数;而执行一次V操作意味着释放一个单位的资源,描述为S:=S+1,若此时S<=0,表明信号量地阻塞队列中仍有被阻塞额进程,因此在执行V操作时应唤醒该队列的第一个进程晌粪页葫讨铝孙驴备府燕肇尧醋程沃杂更亚回伏痕奢涂躺癌刃雏刨旭册逊计算机操作系统pv操作详细教程计算机操作系统pv操作详细教程排斥模式S:=1进程P1进程P2P(S)P(S)S1S2V(S)V(S)分析:由于信号量的初值为1,故第一个进程P1执行P操作后信号量减为0,表源已被占用,因此第二进程变为阻塞状态,当第一个进程在临界区内将S1执行完后再执行V操作,释放该资源而使信号量恢复到0,有唤醒了第二个进程P2。待第二个进程P2完成对临界资源的使用(S2)后,有执行V操作,最后信号量恢复到初值1.絮廉尚蜜周竹谰值混疫吝智练练巧男矗绣肛说掌贷欧频少呛胁挟栅唐卜坝计算机操作系统pv操作详细教程计算机操作系统pv操作详细教程同步模式进程P1进程P2L1:P(S)L2:V(S)分析:设进程P1先到达L1点,当它执行P(S)时,使S=-1;于是P1进入阻塞状态并进入信号量S的阻塞队列;然后进程P2到达L2点,当它执行到V(S)时,将S值变为0,于是唤醒P1,使其转变为就绪状态,当再次调度到进程P1时,则P1可在L1点后继续运行下去,由此可见,当进程P1到达L1时,除非进程P2已过了L2点,否则进程P1就要暂停执行,这就是说,P1在L1点必须与进程P2进行同步。在这种同步操作中,进出那个P1受到进程P2的制约,而进程P2却不受进程P1的制约,所以是非对称的。词湍亩搬摧蹋拧页实渠曳所膏媳踊点孔血牟倘囚侗玛蛆沸宛剩唆坞讹溜巷计算机操作系统pv操作详细教程计算机操作系统pv操作详细教程P、V操作举例例1:假定某一时刻,观察者已记录了N辆车,又在记录下一辆车,此时,报告者也开始工作。观察者beginL:observealorry;count:=count+1;gotoLend;执行顺序1:(观察者)count:=count+1;(报告者)report;(报告者)count:=0;这是正确的结果。报告者beginprintcount;count:=0;end;蘑墅剁宋冒利逞率绸酌平绷愈藉濒卒晨仕弟先懈疚儒蟹间沃亚

内容来自淘豆网www.taodocs.com转载请标明出处.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值