2-3 资源互斥
进程死锁
死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。
死锁避免:指进程在每次申请资源时判断这些操作是否安全,典型避免死锁的算法是银行家算法。
不产生死锁的条件:资源数≥并发进程数 *(每个进程所需资源-1)+1,即n(m-1)+1,其中n表示并发进程数,m表示每个进程所需资源数
例题

解析:
解法一:利用公式(i-1)*3+1>8,得出i最小为4。
解法二:尝试法
不产生死锁的条件:资源数≥并发进程数*(每个进程所需资源-1)+l,即n(m-1)+1为1或2时,合计需要资源3或6个,R为8,完全够用,不会发生死锁。
为3时,合计需要资源9个,R为8,但P1可以分配3个,P2可以分配3个,P1和P2能顺利完成执行,之后可以释放资源,则P3可以获取P1和P2的资源。
为4时,P1分配3,P2分配3,P3分配2,那么所有进程都在等待,可能进入死锁。