所谓死锁,指多个进程在运行过程中争夺资源而造成的一种僵局。
四个必要条件?
一、互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。
二、请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。
三、不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
四、环路等待条件:在发生死锁时,必然存在一个进程----资源的环形链。
最具有代表性的避免死锁算法是银行家算法。
在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。