目录
死锁是指两个或多个进程等待对方释放自己所持有的资源,导致所有进程都被阻塞,无法继续执行。这种情况可能会导致系统瘫痪,需要通过手动干预才能解除死锁。
通常,死锁发生在以下场景中:
死锁、饥饿和死循环是计算机系统中常见的问题,它们的区别如下:
死锁:是多个进程或线程因竞争资源而陷入的僵局,即互相等待对方释放所持有的资源,导致所有进程或线程都无法继续执行。死锁是一种不可避免的系统问题,需要通过算法等手段来避免或解决。
饥饿:是指一个或多个进程长时间得不到需要的资源,导致无法正常执行。这种情况通常是由于资源分配不合理或调度算法不当所致。饥饿虽然不会导致系统瘫痪,但会影响系统的稳定性和性能。
死循环:是指进程或线程在执行中出现无限循环的情况,导致无法执行其他的代码。死循环通常是由于编码错误或算法问题所致。尽管死循环不会导致系统崩溃,但会浪费系统的资源,降低系统的响应速度。
死锁的必要条件有四个,称为“死锁的铁四律”:
只有当这四个条件同时满足时,才会产生死锁。
产生死锁的条件是,当多个进程在占用某些资源的同时,它们又同时请求另外一些资源,而这些资源被其它进程所占用,从而被阻塞。这样,所有进程都在等待其它进程释放它们所需要的资源,形成了一个死循环,被称为死锁。
注意:发生死锁时一定有循环等待,但是循环等待不一定会产生死锁。
