进程死锁原因:
进程有三态:执行状态,就绪状态,等待状态。进程因等待资源的时候而睡眠进入等待状态,只有资源到来的时候才会唤醒进入就绪状态,进程死锁就会发生在这个阶段(等待态),如果多个进程同时占有对方需要的资源而同时请求对方的资源,而它们在得到请求之前不会释放所占有的资源,就会发生进程死锁,也就是进程不同步。
原因有两方面:1.系统能够提供的资源个数比要求该资源的进程少,即系统资源不足 2.进程推进顺序非法。
进程死锁发送条件(4):
1.互斥条件:资源不能被共享,只能由一个进程使用。
2.请求与保持条件:已经得到资源的进程可以再次申请新的资源。
3.非剥夺条件:已经分配的资源不能从相应的进程中被强制地剥夺。
4.循环等待条件:系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
解决方案
第一:根据互斥条件和请求和保持条件,我们可以采用资源静态分配策略,破坏"部分分配"条件;
第二:允许进程剥夺使用其他进程占有的资源,从而破坏"不可剥夺"条件;
第三:采用资源有序分配法,破坏"环路"条件。