0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux内核死锁lockdep功能

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-09-27 15:13 次阅读

死锁是指两个或多个进程因争夺资源而造成的互相等待的现象,如进程A需要资源X,进程B需要资源Y,而双方都掌握对方所需要的资源,且都不释放,这会导致死锁。

在内核开发中,时常要考虑并发设计,即使采用正确的编程思路,也不可能避免会发生死锁。在Linux内核中,常见的死锁有如下两种:

递归死锁:如在中断延迟操作中使用了锁,和外面的锁构成了递归死锁。

AB-BA死锁:多个锁因处理不当而引发死锁,多个内核路径上的锁处理顺序不一致也会导致死锁。

Linux内核在2006年引入了死锁调试模块lockdep,lockdep会跟踪每个锁的自身状态和各个锁之间的依赖关系,经过一系列的验证规则来确保锁之间依赖关系是正确。

配置内核要在Linux内核中使用lockdep功能,需要打开CONFIG_DEBUG_LOCKDEP选项:

CONFIG_LOCK_STAT=yCONFIG_PROVE_LOCKING=yCONFIG_DEBUG_LOCKDEP=y

图片

在proc目录下会有lockdep、lockdep_chains和lockdep_stats三个文件节点,这说明lockdep模块已经生效:

图片

然后重新编译内核,更换内核重启系统。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1309

    浏览量

    39848
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
  • 死锁
    +关注

    关注

    0

    文章

    25

    浏览量

    8046
收藏 人收藏

    评论

    相关推荐

    Linux内核的作用

    Linux操作系统是当今世界上最为广泛使用的开源操作系统之一,内核则是一个操作系统的核心和灵魂所在。对于一名Linux驱动开发者来说,了解Linux
    发表于 07-06 11:46 1218次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>的作用

    Linux内核功能介绍

    课件-Linux内核功能
    发表于 06-19 08:01

    【学习打卡】OpenHarmony的linux内核介绍

    能得到了提高。Linux 内核管理操作系统资源,确保有足够的内存可供应用程序运行,优化处理器使用,并避免由竞争应用程序需求导致的系统死锁Linux
    发表于 07-22 18:26

    Linux内核教程

    本章学习目标掌握LINUX内核版本的含义理解并掌握进程的概念掌握管道的概念及实现了解内核的数据结构了解LINUX内核的算法掌握
    发表于 04-10 16:59 0次下载

    linux处理机调度与死锁

    linux处理机调度与死锁 掌握处理机的三级调度 掌握作业调度及进程调度的概念 理解调度算法的评价准则 掌握并灵活运用常用的几种作业调度、
    发表于 04-28 14:59 0次下载

    用crash工具分析Linux内核死锁的一次实战分享

    内核死锁问题一般是读写锁(rw_semaphore)和互斥锁(mutex)引起的,本文主要讲如何通过ramdump+crash工具来分析这类死锁问题。
    的头像 发表于 03-17 09:27 1.5w次阅读
    用crash工具分析<b class='flag-5'>Linux</b><b class='flag-5'>内核</b><b class='flag-5'>死锁</b>的一次实战分享

    如何配置和使用Linux内核printk功能

    了解如何配置和使用Linux内核printk功能,包括其动态调试功能。 这样可以选择性地打印调试消息,而无需重新编译内核
    的头像 发表于 11-27 06:40 2877次阅读

    Linux 5.4内核正式版本有哪些新功能

    今天,Linus Torvalds正式签署了Linux 5.4内核的正式版本,带来了大量新功能,强化了安全,更新了硬件驱动,你值得拥有。
    的头像 发表于 11-25 16:31 9879次阅读

    linux内核是什么_linux内核学习路线

    Linux内核是一个操作系统(OS)内核,本质上定义为类Unix。它用于不同的操作系统,主要是以不同的Linux发行版的形式。Linux
    发表于 09-16 15:49 2386次阅读

    linux内核参数设置_linux内核功能有哪些

    本文主要阐述了linux内核参数设置及linux内核功能
    发表于 09-17 14:40 1221次阅读
    <b class='flag-5'>linux</b><b class='flag-5'>内核</b>参数设置_<b class='flag-5'>linux</b><b class='flag-5'>内核</b>的<b class='flag-5'>功能</b>有哪些

    最硬核的Linux内核文章

    来源 :头条号@Linux学习教程,冰凌块儿 01 前言 本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与
    的头像 发表于 10-19 17:46 1900次阅读
    最硬核的<b class='flag-5'>Linux</b><b class='flag-5'>内核</b>文章

    快速理解什么是Linux内核以及Linux内核的内容

    01 前言 本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是
    的头像 发表于 10-21 12:02 3943次阅读
    快速理解什么是<b class='flag-5'>Linux</b><b class='flag-5'>内核</b>以及<b class='flag-5'>Linux</b><b class='flag-5'>内核</b>的内容

    Linux内核】从小小的宏定义窥探Linux内核的精妙设计

    Linux内核】从小小的宏定义窥探Linux内核的精妙设计
    的头像 发表于 08-31 13:30 1644次阅读

    Linux内核中简单的AB-BA死锁案例

    简单的AB-BA死锁案例 下面举一个简单的AB-BA死锁的例子: # include # include # include static DEFINE_SPINLOCK (hack_spinA
    的头像 发表于 09-27 15:19 390次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>中简单的AB-BA<b class='flag-5'>死锁</b>案例

    Linux内核实际项目中的死锁

    实际项目中的死锁 下面的例子要复杂一些,这是从实际项目中抽取出来的死锁,更具有代表性。 # include # include # include # include # include
    的头像 发表于 09-27 15:24 314次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>实际项目中的<b class='flag-5'>死锁</b>