死鎖是指兩個或多個進程因爭奪資源而造成的互相等待的現(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)系本站處理。
舉報投訴
相關(guān)推薦
Linux操作系統(tǒng)是當(dāng)今世界上最為廣泛使用的開源操作系統(tǒng)之一,內(nèi)核則是一個操作系統(tǒng)的核心和靈魂所在。對于一名Linux驅(qū)動開發(fā)者來說,了解Linux
發(fā)表于 07-06 11:46
?1763次閱讀
課件-Linux內(nèi)核的功能
發(fā)表于 06-19 08:01
能得到了提高。Linux 內(nèi)核管理操作系統(tǒng)資源,確保有足夠的內(nèi)存可供應(yīng)用程序運行,優(yōu)化處理器使用,并避免由競爭應(yīng)用程序需求導(dǎo)致的系統(tǒng)死鎖。Linux
發(fā)表于 07-22 18:26
本章學(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)度與死鎖
掌握處理機的三級調(diào)度
掌握作業(yè)調(diào)度及進程調(diào)度的概念
理解調(diào)度算法的評價準則
掌握并靈活運用常用的幾種作業(yè)調(diào)度、
發(fā)表于 04-28 14:59
?0次下載
內(nèi)核死鎖問題一般是讀寫鎖(rw_semaphore)和互斥鎖(mutex)引起的,本文主要講如何通過ramdump+crash工具來分析這類死鎖問題。
發(fā)表于 03-17 09:27
?1.5w次閱讀
了解如何配置和使用Linux內(nèi)核printk功能,包括其動態(tài)調(diào)試功能。
這樣可以選擇性地打印調(diào)試消息,而無需重新編譯內(nèi)核。
發(fā)表于 11-27 06:40
?3057次閱讀
今天,Linus Torvalds正式簽署了Linux 5.4內(nèi)核的正式版本,帶來了大量新功能,強化了安全,更新了硬件驅(qū)動,你值得擁有。
發(fā)表于 11-25 16:31
?1w次閱讀
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)核的功能。
發(fā)表于 09-17 14:40
?1355次閱讀
來源 :頭條號@Linux學(xué)習(xí)教程,冰凌塊兒 01 前言 本文主要講解什么是Linux內(nèi)核,以及通過多張圖片展示Linux內(nèi)核的作用與
發(fā)表于 10-19 17:46
?2088次閱讀
01 前言 本文主要講解什么是Linux內(nèi)核,以及通過多張圖片展示Linux內(nèi)核的作用與功能,以便于讀者能快速理解什么是
發(fā)表于 10-21 12:02
?4246次閱讀
簡單的AB-BA死鎖案例 下面舉一個簡單的AB-BA死鎖的例子: # include # include # include static DEFINE_SPINLOCK (hack_spinA
發(fā)表于 09-27 15:19
?678次閱讀
實際項目中的死鎖 下面的例子要復(fù)雜一些,這是從實際項目中抽取出來的死鎖,更具有代表性。 # include # include # include # include # include
發(fā)表于 09-27 15:24
?717次閱讀
。內(nèi)核測試技術(shù)是實現(xiàn)這一目標(biāo)的關(guān)鍵手段。本文將詳細介紹 Linux 內(nèi)核測試的各種技術(shù),包括單元測試、集成測試、功能測試和性能測試等,并討論不同測試方法的優(yōu)缺點及其適用場景。
發(fā)表于 08-13 13:42
?406次閱讀
評論