死锁是指两个或多个进程因争夺资源而造成的互相等待的现象,如进程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模块已经生效:
然后重新编译内核,更换内核重启系统。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
Linux操作系统是当今世界上最为广泛使用的开源操作系统之一,内核则是一个操作系统的核心和灵魂所在。对于一名Linux驱动开发者来说,了解Linux
发表于 07-06 11:46
•1776次阅读
课件-Linux内核的功能
发表于 06-19 08:01
能得到了提高。Linux 内核管理操作系统资源,确保有足够的内存可供应用程序运行,优化处理器使用,并避免由竞争应用程序需求导致的系统死锁。Linux
发表于 07-22 18:26
本章学习目标掌握LINUX内核版本的含义理解并掌握进程的概念掌握管道的概念及实现了解内核的数据结构了解LINUX内核的算法掌握
发表于 04-10 16:59
•0次下载
linux处理机调度与死锁
掌握处理机的三级调度
掌握作业调度及进程调度的概念
理解调度算法的评价准则
掌握并灵活运用常用的几种作业调度、
发表于 04-28 14:59
•0次下载
内核死锁问题一般是读写锁(rw_semaphore)和互斥锁(mutex)引起的,本文主要讲如何通过ramdump+crash工具来分析这类死锁问题。
发表于 03-17 09:27
•1.6w次阅读
了解如何配置和使用Linux内核printk功能,包括其动态调试功能。
这样可以选择性地打印调试消息,而无需重新编译内核。
发表于 11-27 06:40
•3066次阅读
今天,Linus Torvalds正式签署了Linux 5.4内核的正式版本,带来了大量新功能,强化了安全,更新了硬件驱动,你值得拥有。
发表于 11-25 16:31
•1w次阅读
Linux内核是一个操作系统(OS)内核,本质上定义为类Unix。它用于不同的操作系统,主要是以不同的Linux发行版的形式。Linux
发表于 09-16 15:49
•2613次阅读
本文主要阐述了linux内核参数设置及linux内核的功能。
发表于 09-17 14:40
•1361次阅读
来源 :头条号@Linux学习教程,冰凌块儿 01 前言 本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与
发表于 10-19 17:46
•2095次阅读
01 前言 本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是
发表于 10-21 12:02
•4255次阅读
简单的AB-BA死锁案例 下面举一个简单的AB-BA死锁的例子: # include # include # include static DEFINE_SPINLOCK (hack_spinA
发表于 09-27 15:19
•691次阅读
实际项目中的死锁 下面的例子要复杂一些,这是从实际项目中抽取出来的死锁,更具有代表性。 # include # include # include # include # include
发表于 09-27 15:24
•729次阅读
。内核测试技术是实现这一目标的关键手段。本文将详细介绍 Linux 内核测试的各种技术,包括单元测试、集成测试、功能测试和性能测试等,并讨论不同测试方法的优缺点及其适用场景。
发表于 08-13 13:42
•428次阅读
评论