首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

一个Linux死锁信息分析

我个人原来一直没有看过Linux的死锁跟踪机制,为了看懂这个问题,我先速成一下,整理一下笔记。内核代码基于5.2-rc3。...网上有人说第一个版本就解决掉了大部分Linux内核的死锁问题。不过它的设计目标不是用于产品(release)版本的,对性能有不小的影响,所以一般用于内部测试阶段。...Linux内核的lockdep-design.txt对这个东西有介绍,但我觉得文档写得很烂,前后矛盾,语焉不详,还不如直接看代码。不过这个代码也很不规整,基本上都是细节,我也耗不起这个时间。...除了这些基本接口,lockdep还有可以用来检查某个锁肯定已经上了的lockdep_assert_is_held(),或者确认锁不会被中途释放的lockdep_*pin_lock()等辅助性的函数。...注1:lockdep用的搜索算法叫bfs,我猜了很久都没有搞明白是个什么算法,后来无意中看了一个Patch,才发现这就是简单的“Broad-First Search”。

1.4K20

内核发生死锁,怎么排查?

内核提供了Lockdep来检测死锁的异常情况 3、Lockdep 内核配置 CONFIG_LOCKDEP: CONFIG_DEBUG_LOCK_ALLOC:检查内核是否错误地释放被持有的锁。...CONFIG_DEBUG_LOCKDEP :在死锁发生,内核报告相应的死锁 CONFIG_LOCK_STAT:追踪锁竞争的点,解释的更详细 4、Lockdep 初探 lockdep操作的基本单元并非单个的锁实例...:是用来描述Linux内核中锁的状态的符号,也称作锁的标志位或锁标志。...在 Linux 内核调试中,报告锁状态通常都使用这种简洁的符号,通过观察锁标志位,可以快速地了解内核锁的状态,诊断性能问题和死锁问题。...在Linux内核中,每个锁的释放次数需要与该锁的获取次数相匹配,否则就会出现锁释放不平衡的情况。

39740

Linux内核中的软中断、tasklet和工作队列具体解释

[TOC] 本文基于Linux2.6.32内核版本号。...引言 软中断、tasklet和工作队列并非Linux内核中一直存在的机制,而是由更早版本号的内核中的“下半部”(bottom half)演变而来。 下半部的机制实际上包含五种,但2.6版本号的内核中。...work_func_t func; //工作函数,用户自己定义实现 #ifdef CONFIG_LOCKDEP struct lockdep_map lockdep_map; #endif };...struct lockdep_map lockdep_map; #endif }; 每cpu工作队列(每cpu都相应一个工作者线程worker_thread) struct cpu_workqueue_struct...详细流程图例如以下所看到的: ---- 是否处于中断中在Linux中是通过preempt_count来判断的,详细例如以下: 在linux系统的进程数据结构里,有这么一个数据结构: #define

1.7K30
领券