信号量和管程分析

计算机科学中, 同步(synchronization)是指两个不同但有联系的概念:进程同步与数据同步。进程同步指多个进程在特定点会合(join up)或者握手使得达成协议或者使得操作序列有序。数据同步指一个数据集的多份拷贝一致以维护完整性。常用进程同步原语实现数据同步。

死锁:某一个进程占有共享资源不能结束,导致其他进程因为不能获得共享资源无法执行。

信号量和管程区别:信号量:进程获得信号量进入临界区,并且通过判断信号量

信号量:

P操作wait

wait(S){
while(s<=0);//当信号量小于零,进程处于阻塞状态(进入等待队列),无法进入临界区,需要等待唤醒
S--;
}

V操作signal()

signal(S){
  S++;//唤醒一个等待的进程进入就绪状态,如果S>0表明没有正在等待的进程,就不需要做什么
}


管程:在管程中,进程通过抢占锁调用require()函数,然后通过对条件变量的判断来决定进程下一步操作


猜你喜欢

转载自www.cnblogs.com/guosai1500581464/p/13190981.html