如果多个进程同时占有对方需要的资源而同时请求对方的资源,而它们在得到请求之前不会释放所占有的资源,就会产生
死锁进程死锁的必要条件:
1.互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
2.请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
3.非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
4.循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
以上你说的5个情况中,第一个资源等于所需资源数,其他的都小于所需资源数,在总的资源数小于所需资源情况下,a进程需要等待b进程释放资源,但是b进程可能需要等待c进程释放资源,有可能c又在等待a进程释放资源,环路就产生了。
第一种情况不会死锁,不需解释
第二种:至少有一个进程获得两个资源,等待是可以结束的 ,死锁也就不会产生。
第三种情况,当每个进程拥有一个资源,还剩一个资源,但是每个进程还需要2个资源,只有一个资源于是死锁产生
第四种情况:但其中一个进程没有占用资源的时候,不会死锁,如果每个都占用资源,那么还有2个资源可以用,而每个进程只需要一个资源就能结束,也不会死锁。
第五种情况不做解释,和第三种同理,死锁