PV操作疑问

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:34:51
现在在学PV操作,P操作我是理解的,但是V操作就不是很理解了。就V操作而言,为什么当s<=0是也要唤醒一个进程,不是没有资源吗,为什么不是s>0时唤醒呢,那为什么S>0时不唤醒进程呢?希望知道的人能告诉我为什么。

如果结果大于0,进程继续执行,否则.,要唤醒在等待队列上的一个进程.

可以这么理解吧,如果是p操作的时候s<0了,是从运行->等待;如果是v操作的时候s<=0了,是从等待->就绪

V操作 若s<=0则释放一个因执行P(S)而等待的进程

是唤醒,不是创建一个新的进程,是释放资源.明白吗?就是唤醒被P操作阻塞的进程.

V原语操作的本质在于:一个进程使用完临界资源后,释放临界资源,使S加1,以通知其它的进程,这个时候如果S<0,表明有进程阻塞在该类资源上,因此要从阻塞队列里唤醒一个进程来“转手”该类资源。
S大于零,资源够用,当然不用在转手