信号量S的初值为8,在S上执行了10次P操作,6次V操作后,S的值为 多少
S的值为4。
P操作每执行一次,信号量减1; V操作每执行一次,信号量加1。
所以答案为 8-10+6 = 4。
PV操作是由两个操作,即P操作和V操作组成的。P操作和V操作是两个在信号量上进行操作的过程,假定用S表示信号量,则把这两个过程记作P(S)和V(S)。
扩展资料:
用PV操作来管理共享资源时,首先要确保PV操作自身执行的正确性。由于P(S)和V(S)都是在同一个信号量S上操作,为了使得它们在执行时不发生因交叉访问信号量S而可能出现的错误,约定P(S)和V(S)必须是两个不可被中断的过程,即让它们在屏蔽中断下执行。
把不可被中断的过程称为原语。于是,P操作和V操作实际上应该是P操作原语和V操作原语。
P操作的主要动作是:
①S减1;
②若S减1后仍大于或等于0,则进程继续执行;
③若S减1后小于0,则该进程被阻塞后放入等待该信号量的等待队列中,然后转进程调度。
V操作的主要动作是:
①S加1;
②若相加后结果大于0,则进程继续执行;
③若相加后结果小于或等于0,则从该信号的等待队列中释放一个等待进程,然后再返回原进程继续执行或转进程调度。
PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语执行期间不允许有中断发生。原语不能被中断执行,因为原语对变量的操作过程如果被打断,可能会去运行另一个对同一变量的操作过程,从而出现临界段问题。如果能够找到一种解决临界段问题的元方法,就可以实现对共享变量操作的原子性。
2024-12-19 广告