在程序的世界里,所有资源都是有限的,比如存储资源或者cpu资源,但与此同时,在计算机里,会存在大量的进程,它们会互相争夺资源以供自己运行所需

在有限的资源里,进程就会因为抢夺同一资源而发生冲突,即所谓的“竞态”,而“竞态”最严重的后果就是发生死锁,本篇文章就准备好好聊聊 死锁,废话不多说,开搞!

ppx2.jpg

什么是死锁

死锁是指 两个或两个以上 的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法运行下去,此时称系统处于 死锁状态系统产生了死锁,这些永远在互相等待的进程称为 死锁进程

抛出一个小问题:系统中共有n个进程共享同一类资源,当每个进程都需要k个资源时,至少需要多少个资源才不会发生死锁?

yiwen.jpg

答案是:m=(k-1)*n + 1

产生死锁的必要条件

主要有四点:

解决死锁的方案

主要有四种方式