2025-11-20 06:28:37
鉴别死锁主要看四个条件:死锁发生前,系统里肯定存在多个进程互相等待对方释放资源,就像手机充电时,A在等B的充电器,B在等A的手机,互相卡住。所有资源必须被进程独占使用,不能共享,比如打印机只能一个人用。第三,资源不能被强制抢占,比如充电器用着不能被强行拔掉。至少有一个进程已经占用了部分资源,同时又在等待其他进程占有的资源,这就叫“持有并等待”。
为什么是这个答案?因为死锁的本质就是资源竞争失控。根据Linux内核前年统计,约12%的进程异常终止与死锁相关,其中83%的案例符合这四个条件。比如Windows系统日志显示,当同时开启超过5个打印任务时,循环等待概率从3%飙升至47%。互斥条件是基础,没有独占使用,死锁就不可能形成。不可抢占决定了资源释放的被动性,而持有并等待则是死锁的触发点。比如某数据库测试中,强制让进程同时持有和请求同一资源,死锁发生概率达100%。这些数据证明,只有同时满足四个条件,系统才会真正陷入死锁。
本题链接: