1.1死锁定义
多个进程因为竞争资源而造成一种僵局,没有外力的作用下,这些进程无法向前推进
这种僵局可以解释为:每个进程继续执行所需的资源都被另一个进程占用
这里举一个简单的例子:
假设现在有进程P1,P2,资源R1,R2
进程P1的执行情况为:
P(R1)
输入输出操作
p(R2)
临界区
v(R2)
v(R1)
进程P2的执行情况为:
P(R2)
输入输出操作
p(R1)
临界区
v(R1)
v(R2)
先执行进程P1或者先执行进程P2都不会产生问题
如果同时递交了进程P1和P2呢?---此处的"同时"是指进程P1立刻递交给P2,不是广义上的同时递交
分配资源出现问题,R1的资源分配给P1,R2的资源分配给P2,当P1提出对R2资源的申请请求时,R2资源已经被P2占据,发生死锁
1.2产生死锁的原因:
1.2.1根本原因:资源不足
1.2.2其他原因:
a.竞争非剥夺性资源(一旦占有CPU直至完成或者阻塞)
b.进程间推进顺序(eg.p操作)非法
1.3产生死锁的必要条件:
1互斥
2请求和保持
eg.P1占有