0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux內(nèi)核死鎖lockdep功能

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-09-27 15:13 ? 次閱讀

死鎖是指兩個或多個進程因爭奪資源而造成的互相等待的現(xiàn)象,如進程A需要資源X,進程B需要資源Y,而雙方都掌握對方所需要的資源,且都不釋放,這會導(dǎo)致死鎖。

在內(nèi)核開發(fā)中,時常要考慮并發(fā)設(shè)計,即使采用正確的編程思路,也不可能避免會發(fā)生死鎖。在Linux內(nèi)核中,常見的死鎖有如下兩種:

遞歸死鎖:如在中斷延遲操作中使用了鎖,和外面的鎖構(gòu)成了遞歸死鎖。

AB-BA死鎖:多個鎖因處理不當(dāng)而引發(fā)死鎖,多個內(nèi)核路徑上的鎖處理順序不一致也會導(dǎo)致死鎖。

Linux內(nèi)核在2006年引入了死鎖調(diào)試模塊lockdep,lockdep會跟蹤每個鎖的自身狀態(tài)和各個鎖之間的依賴關(guān)系,經(jīng)過一系列的驗證規(guī)則來確保鎖之間依賴關(guān)系是正確。

配置內(nèi)核要在Linux內(nèi)核中使用lockdep功能,需要打開CONFIG_DEBUG_LOCKDEP選項:

CONFIG_LOCK_STAT=yCONFIG_PROVE_LOCKING=yCONFIG_DEBUG_LOCKDEP=y

圖片

在proc目錄下會有l(wèi)ockdep、lockdep_chains和lockdep_stats三個文件節(jié)點,這說明lockdep模塊已經(jīng)生效:

圖片

然后重新編譯內(nèi)核,更換內(nèi)核重啟系統(tǒng)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1360

    瀏覽量

    40185
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

    208721
  • 死鎖
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    8059
收藏 人收藏

    評論

    相關(guān)推薦

    Linux內(nèi)核的作用

    Linux操作系統(tǒng)是當(dāng)今世界上最為廣泛使用的開源操作系統(tǒng)之一,內(nèi)核則是一個操作系統(tǒng)的核心和靈魂所在。對于一名Linux驅(qū)動開發(fā)者來說,了解Linux
    發(fā)表于 07-06 11:46 ?1763次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>的作用

    Linux內(nèi)核功能介紹

    課件-Linux內(nèi)核功能
    發(fā)表于 06-19 08:01

    【學(xué)習(xí)打卡】OpenHarmony的linux內(nèi)核介紹

    能得到了提高。Linux 內(nèi)核管理操作系統(tǒng)資源,確保有足夠的內(nèi)存可供應(yīng)用程序運行,優(yōu)化處理器使用,并避免由競爭應(yīng)用程序需求導(dǎo)致的系統(tǒng)死鎖。Linux
    發(fā)表于 07-22 18:26

    Linux內(nèi)核教程

    本章學(xué)習(xí)目標(biāo)掌握LINUX內(nèi)核版本的含義理解并掌握進程的概念掌握管道的概念及實現(xiàn)了解內(nèi)核的數(shù)據(jù)結(jié)構(gòu)了解LINUX內(nèi)核的算法掌握
    發(fā)表于 04-10 16:59 ?0次下載

    linux處理機調(diào)度與死鎖

    linux處理機調(diào)度與死鎖 掌握處理機的三級調(diào)度 掌握作業(yè)調(diào)度及進程調(diào)度的概念 理解調(diào)度算法的評價準則 掌握并靈活運用常用的幾種作業(yè)調(diào)度、
    發(fā)表于 04-28 14:59 ?0次下載

    用crash工具分析Linux內(nèi)核死鎖的一次實戰(zhàn)分享

    內(nèi)核死鎖問題一般是讀寫鎖(rw_semaphore)和互斥鎖(mutex)引起的,本文主要講如何通過ramdump+crash工具來分析這類死鎖問題。
    的頭像 發(fā)表于 03-17 09:27 ?1.5w次閱讀
    用crash工具分析<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>死鎖</b>的一次實戰(zhàn)分享

    如何配置和使用Linux內(nèi)核printk功能

    了解如何配置和使用Linux內(nèi)核printk功能,包括其動態(tài)調(diào)試功能。 這樣可以選擇性地打印調(diào)試消息,而無需重新編譯內(nèi)核
    的頭像 發(fā)表于 11-27 06:40 ?3057次閱讀

    Linux 5.4內(nèi)核正式版本有哪些新功能

    今天,Linus Torvalds正式簽署了Linux 5.4內(nèi)核的正式版本,帶來了大量新功能,強化了安全,更新了硬件驅(qū)動,你值得擁有。
    的頭像 發(fā)表于 11-25 16:31 ?1w次閱讀

    linux內(nèi)核是什么_linux內(nèi)核學(xué)習(xí)路線

    Linux內(nèi)核是一個操作系統(tǒng)(OS)內(nèi)核,本質(zhì)上定義為類Unix。它用于不同的操作系統(tǒng),主要是以不同的Linux發(fā)行版的形式。Linux
    發(fā)表于 09-16 15:49 ?2604次閱讀

    linux內(nèi)核參數(shù)設(shè)置_linux內(nèi)核功能有哪些

    本文主要闡述了linux內(nèi)核參數(shù)設(shè)置及linux內(nèi)核功能。
    發(fā)表于 09-17 14:40 ?1355次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)核</b>參數(shù)設(shè)置_<b class='flag-5'>linux</b><b class='flag-5'>內(nèi)核</b>的<b class='flag-5'>功能</b>有哪些

    最硬核的Linux內(nèi)核文章

    來源 :頭條號@Linux學(xué)習(xí)教程,冰凌塊兒 01 前言 本文主要講解什么是Linux內(nèi)核,以及通過多張圖片展示Linux內(nèi)核的作用與
    的頭像 發(fā)表于 10-19 17:46 ?2088次閱讀
    最硬核的<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>文章

    快速理解什么是Linux內(nèi)核以及Linux內(nèi)核的內(nèi)容

    01 前言 本文主要講解什么是Linux內(nèi)核,以及通過多張圖片展示Linux內(nèi)核的作用與功能,以便于讀者能快速理解什么是
    的頭像 發(fā)表于 10-21 12:02 ?4246次閱讀
    快速理解什么是<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>以及<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>的內(nèi)容

    Linux內(nèi)核中簡單的AB-BA死鎖案例

    簡單的AB-BA死鎖案例 下面舉一個簡單的AB-BA死鎖的例子: # include # include # include static DEFINE_SPINLOCK (hack_spinA
    的頭像 發(fā)表于 09-27 15:19 ?678次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>中簡單的AB-BA<b class='flag-5'>死鎖</b>案例

    Linux內(nèi)核實際項目中的死鎖

    實際項目中的死鎖 下面的例子要復(fù)雜一些,這是從實際項目中抽取出來的死鎖,更具有代表性。 # include # include # include # include # include
    的頭像 發(fā)表于 09-27 15:24 ?717次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>實際項目中的<b class='flag-5'>死鎖</b>

    Linux內(nèi)核測試技術(shù)

    內(nèi)核測試技術(shù)是實現(xiàn)這一目標(biāo)的關(guān)鍵手段。本文將詳細介紹 Linux 內(nèi)核測試的各種技術(shù),包括單元測試、集成測試、功能測試和性能測試等,并討論不同測試方法的優(yōu)缺點及其適用場景。
    的頭像 發(fā)表于 08-13 13:42 ?406次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>測試技術(shù)