2、试给出P、V操作的定义。
P、V操作是定义在信号量S上的两个操作,其定义如下:
P(S):①S:=S-1;
②若S≥0,则调用P(S)的进程继续运行;
③若S<0,则调用P(S)的进程被阻塞,并把它插入到等待信号量S的阻塞队列中。
V(S):①S:=S+1;
②若S>0,则调用V(S)的进程继续运行;
③若S≤0,则从等待信号量S的阻塞队列中唤醒头一个进程,然后调用V(S)的进程继续运行。
如何利用P、V操作实现进程间的互斥?
P、V操作是解决同步与互斥问题的有力工具。为解决互斥问题,应采取如下步骤: 首先根据给定问题的描述,列出各进程要执行的程序。其次,设置信号量。互斥问题中,在临界区前面加P(S),临界区后面加V(S)。最后确定信号量的初值。在互斥问题中,信号量通常取为互斥资源的个数。
说明信号量的物理意义:
信号量S>0时,S的数值表示某类可用资源的数目,执行P操作意味着申请分配一个单位的资源;当S≤0时,表示无资源可用,此时S的绝对值表示信号量S的阻塞队列中的进程数。执行V操作意味着释放一个单位的资源。