计算机科学中, 同步(synchronization)是指两个不同但有联系的概念:进程同步与数据同步。进程同步指多个进程在特定点会合(join up)或者握手使得达成协议或者使得操作序列有序。数据同步指一个数据集的多份拷贝一致以维护完整性。常用进程同步原语实现数据同步。
死锁:某一个进程占有共享资源不能结束,导致其他进程因为不能获得共享资源无法执行。
信号量和管程区别:信号量:进程获得信号量进入临界区,并且通过判断信号量
信号量:
P操作wait
wait(S){
while(s<=0);//当信号量小于零,进程处于阻塞状态(进入等待队列),无法进入临界区,需要等待唤醒
S--;
}
V操作signal()
signal(S){
S++;//唤醒一个等待的进程进入就绪状态,如果S>0表明没有正在等待的进程,就不需要做什么
}
管程:在管程中,进程通过抢占锁调用require()函数,然后通过对条件变量的判断来决定进程下一步操作