三个进程1、2、3的执行都需要A、B、C、D四个资源,那么最少的分配情况就是,我给你3个A,3个B,3个C,1个D,然后你们三个进程分别得到了ABC,差个D就可以进行任务了,然后三个进程就去抢夺这个D,而这个过程是不会发生死锁的。
抢夺资源这个过程本身不会发生死锁,因为资源是一整块的,可以用原子性来理解,所以不存在一个进程占有这个资源的一半的这种情况。而当D被其中一个进程占用后,其他两个进程是无法进行资源抢占的,所以就阻塞等待直到资源释放,再抢夺再等待
死锁的发生是因为:我进程1要执行一个任务,这个任务同时需要资源A、B,而我进程1在抢占了A资源后要抢占B时发现B已经被另一个进程抢占了,这个时候另一个进程又不放手资源B,所以就僵持到天亮等等等等等等等等等等等等
个人理解,有错望指教
死锁是指多个进程因竞争系统资源或相互通信而处于永远阻塞状态,若无外力作用,这些进程都无法向前推进。死锁的产生与资源的使用相关,死锁产生的原因之一就是资源竞争,如果系统中只有一个进程在运行,所有资源为一个进程独享,则不会产生死锁现象。
死锁产生的另外一个原因是进程的推进顺序不当,竞争资源虽然可能导致死锁,但是资源竞争并不等于死锁,只有在进程运行顺序不当的时候才会出现死锁。死锁产生的必要条件包括:互斥条件、不剥夺条件、请求和保持条件、循环等待条件,当发生死锁时候,这四个条件必须都满足。