死锁是指多个进程之间相互等待对方的资源,而在得到对方资源之前有不释放自己的资源,这样,造成循环等待的一种现象。如果一个进程在等待一个不可能发生的时间,则进程死锁了。如果一个或多个进程产生死锁,就会造成系统的死锁。
1.死锁发生的必要条件
产生死锁的根本原因在于系统提供的资源书少于并发进程所要求的该类资源数。产生死锁有四个必要条件:互斥条件、不可抢占条件、保持与等待条件、循环等待条件。
(1)互斥条件:即一个资源每次只能被一个进程使用
(2)保持与等待条件:有一个进程已获得了一些资源,但因请求其他资源而被阻塞时,自己的资源并为释放。
(3)不可抢占条件:有些系统资源是不可抢占的,当某个进程已经获得了这个资源,系统无法强制回收,只能等进程使用完时释放。
(4)循环等待条件:若干个进程形成环链,每个进程都占有对方下一个要申请的资源。
2.银行家算法
银行家算法是指在分配资源之前先看清楚资源分配是否会造成死锁,如果会,则不分配,否则就分配。
网友评论