其实很简单呢,信号量就是一个资源计数器,对信号量有两个操作来达到互斥,分别是P和V操作。
一般情况是这样进行临界访问或互斥访问的:
设信号量值为1,
当一个进程1运行时,使用资源,进行P操作,即对信号量值减1,也就是资源数少了1个。这时信号量值为0。系统中规定当信号量值为0时,必须等待,直到信号量值不为零才能继续操作。
这时如果进程2想要运行,那么也必须进行P操作,但是此时信号量为0,所以无法减1,即不能P操作,也就阻塞。这样就达到了进程1排他访问。
当进程1运行结束后,释放资源,进行V操作。资源数重新加1,这时信号量的值变为1.
这时进程2发现资源数不为0,信号量能进行P操作了,立即执行P操作。信号量值又变为0.此时进程2占有资源,排他访问资源。
这就是信号量来控制互斥的原理。
希望能帮助到你,如果帮助到你,请采纳为意见。
温馨提示:答案为网友推荐,仅供参考