P操作,V操作 与 disable(),enable() 的区别

        disable()----enable()是通知处理器:在这两个函数及其之间的程序执行期间,不理睬外界提出的中断要求(这里的不理睬,是假设外界有提出中断,如果外界没有提出中断要求,那最好了,程序本身就是顺序执行到enable()结束),外界的中断请求只有在enable()语句执行以后,才会被响应。
        而P操作和V操作,其是加在临界区前后的两个操作,是对临界资源实现访问保护的一种机制。首先,我们知道,P操作和V操作,其本身也是一个函数,在处理机执行P()内部的指令时,是不会让外界打断的,这就是因为在P()函数内部开始先添加了disable()函数结尾加了enable()实现的功能(如上段对disable()和enable()的介绍。V()函数同理),但是,P操作和V操作之间的程序是一般程序,其在被执行期间,其是允许外界中断打断的。刚开始接触PV操作时,大多会对这里感到困惑:允许外界中断打断?那不是没有实现对临界资源访问保护了吗?稍微去思考一下信号量的作用,就可以理解了:比如说,系统此时有两个进程,两个进程中都有要访问共用的临界资源的语句,所以,我们在这两个进程的访问临界资源的语句前后分别加上了P操作和V操作。在其中一个进程访问临界资源前,肯定是执行了P操作的,而且这个P操作是原子性的(由前面对P操作的分析可得),在P操作中,我们设置对信号量做“更改”的操作(形象地讲,可以说是该进程宣布“我正在使用临界资源”)。P操作后,V操作前,如时间片中断发生,该进程运行被打断(此时仅做了P操作还没做V操作),CPU调度,另外一个进程如访问临界资源,开始也一样要执行P操作,在P操作里查询到前一个进程正在访问临界资源,所以当前进程被阻塞。该进程可以在另一进程被重新调度后执行了V操作后被唤醒。这就是PV操作和disable()enable()综合起到的作用。
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值