死锁

定义
指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再次向前推进。

死锁产生原因
a.竞争资源
可剥夺资源,指某进程在获得这类资源后,该资源可以被其他进程或系统剥夺,CPU和主存均属于可剥夺资源
不可剥夺资源,当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自行释放,如磁带机、打印机等

竞争资源之一是竞争不可剥夺资源
竞争资源也可指竞争临时资源(包括硬件中断、信号、消息、缓冲区内的消息等)
b.进程间推进顺序非法
若P1保持了资源R1,P2保持了资源R2,系统处于不安全状态,因为这两个进程再向前推进,便可能发生死锁

死锁产生的四个必要条件
a.互斥条件——进程要求对所分配的资源进行排它性控制
b.请求和保持——当进程因请求资源而阻塞时,,对已获得的资源保持不变
c.不剥夺条件——进程已获得的资源再未使用之前,不能剥夺,只能再使用完时由自己释放
d.循环等待条件——在发生死锁时,必然存在一个进程-资源环形链

预防死锁
a.资源一次性分配(破坏请求条件)
b.只要有一个资源得不到分配,也不给这个进程分配其他资源(破坏保持条件)
c.可剥夺资源:当某进程获得了部分资源,但得不到其他资源,则释放已占有资源(破坏不可剥夺)
d.资源有序分配,系统给每类资源赋予一个编号,每个进程按编号递增的顺序请求资源,释放则相反(破坏循环等待)

posted @ 2020-11-17 20:11  走过路过哭过  阅读(97)  评论(0)    收藏  举报