面试题答案
一键面试- 资源争用循环特征
- 特征描述:日志中出现多个进程对资源的请求形成循环等待关系。例如进程A请求资源R1,而R1被进程B持有,进程B请求资源R2,R2被进程C持有,进程C又请求进程A持有的资源R3,形成一个资源请求的环形链。
- 定位方法:通过梳理日志中进程对资源的请求和持有记录,绘制资源 - 进程关系图,若发现有闭合的环形关系,很可能存在死锁。
- 进程长时间等待特征
- 特征描述:部分进程在日志中有长时间处于等待状态的记录,且等待原因一直未得到解决。例如某个进程在日志中持续几个小时处于等待某一特定资源的状态,而该资源没有被释放的相关记录。
- 定位方法:设置一个等待时间阈值(如10分钟),对日志中进程的等待时间进行统计,若发现有进程等待时间超过阈值且等待资源一直未变化,可初步怀疑死锁,并进一步查看相关资源的占用和请求情况。
- 资源占用与请求不匹配特征
- 特征描述:日志显示进程持有一些资源但又在请求其他资源,且请求的资源被其他进程以一种不合理的方式持有。比如进程P持有资源S1,同时请求资源S2,而资源S2被进程Q持有,进程Q又在等待进程P持有的资源S1才能释放S2,导致资源无法合理分配。
- 定位方法:分析日志中进程的资源持有和请求记录,查看是否存在资源持有和请求之间出现相互制约且无法推进的情况,若存在则可能是死锁。
- 重复出现的错误或异常特征
- 特征描述:在日志中反复出现与资源获取失败相关的错误信息,如“资源不可用”“获取锁失败”等错误频繁出现,且涉及的进程和资源有一定规律。
- 定位方法:对日志中的错误信息进行分类统计,关注那些频繁出现且与资源相关的错误,结合错误中涉及的进程和资源,查看是否存在进程间的循环等待等死锁迹象。