死锁是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待 的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁, 这些永远在互相等待的进程称为死锁进程。
死锁发生的四个条件
1、 互斥条件:线程对资源的访问是排他性的,如果一个线程对占用了某资源,那么其他线程必须处于等待状态,直到资源被释放。
2、 请求和保持条件:线程T1至少已经保持了一个资源R1占用,但又提出对另一个资源R2请 求,而此时,资源R2被其他线程T2占用,于是该线程T1也必须等待,但又对自己保持的资 源R1不释放。
3、 不剥夺条件:线程已获得的资源,在未使用完之前,不能被其他线程剥夺,只能在使用完 以后由自己释放。
4、环路等待条件:在死锁发生时,必然存在一个“进程-资源环形链”,即:{p0,pl,p2,…pn}, 进程p0(或线程)等待pl占用的资源,pl等待p2占用的资源,pn等待p0占用的资源。(最 直观的理解是,p0等待pl占用的资源,而pl而在等待p0占用的资源,于是两个进程就相互等待)
活锁,是指线程1可以使用资源,但它很礼貌,让其他线程先使用资源,线程2也可以使用资 源,但它很绅士,也让其他线程先使用资源。这样你让我,我让你,最后两个线程都无法使用 资源。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.