1.互斥:进程A和进程B,要求都进入相同临界资源的临界段CS,下面实现互斥:
semaphor S=1;//定义信号量并确定初值
进程A:
:
P(S);
CS1;
V(S);
;
进程B:
:
P(S);
CS2;
V(S);
:
2.同步:舍友进程A和进程B,要求进程A的输出结果成为进程B的输入信号,即进程B必须在进程A执行完毕之后才能执行。
semaphore S=0;
进程A:
:
V(S);
:
进程B:
:
P(S);
:
信号量S(表示可用资源),当S为负数时,有进程在等待;当S不为负数,则有可用资源。
S的范围:有N个资源,M个进程
1.N>M,N-M表示剩下未用的资源数
2.N<M,S=N-M,|S|表示等待状态的最大进程数
3.N=M,S=N-M,表示所有资源刚好分给了所有进程
4.N>S>0,S表示可用资源数。