C_and_CPP 板


LINE

板友們晚安 我想請教一個Linux Kernel的問題,但看了Linux板,感覺不是在討論code。 所以我就來這裡發文看看。若我在這邊發文不適合可以在下面回文,我會 再刪除,謝謝。 我在【知乎】這個平台看到有關於spin_lock_irq()的介紹 https://reurl.cc/eWe4lb 裡面有個圖關於spin_lock_irq(&lock1)後再一次spin_lock_irq(&lock2) 緊接著spin_unlock_irq(&lock2)後,CPU發生了interrupt,若好死不死 這ISR內要執行lock1所保護的critical section,由於前面已有task獲取 到lock1的鎖了,ISR內鐵定拿不到lock1便會deadlock. 其實我不太知道為何deadlock的原因。查了網路上的說明更加混亂了... 這有兩種deadlock的原因請問是哪一種呢? 1.ISR內因獲得不到鎖所以永久的spin,所以先前拿到鎖的task也因此無法解鎖. 2.先前拿到鎖的task在被中斷後狀態變成TASK_INTERRUPT,schedual無法再調度 task使之有機會解鎖,這意味著ISR內不會永久spin,且有一定的時間霸佔CPU? 希望能有kernel高手能解答小弟疑惑@@,謝謝。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.93.106 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1675088723.A.42F.html
1F:推 wulouise: ISR lock要等被interrupt的task unlock->可是cpu不會切 01/30 22:36
2F:→ wulouise: 永遠等不到task unlock-> deadlock 01/30 22:36
3F:→ saxontai: 有LinuxDev版。 01/30 22:52
4F:→ KaiNBD: 原因如樓上,另外這主要是說明 spin_lock_irqsave 的需求 01/30 23:27
5F:→ KaiNBD: 因 lock_irq 沒有處理 nested,導致 unlock_irq(&lock2)時 01/30 23:28
6F:→ KaiNBD: 就立即 enable IRQ,因此進入 deadlock 狀態。 01/30 23:29
7F:→ KaiNBD: 修正上述: 有機會進入 deadlock 狀態 01/30 23:30
8F:→ KaiNBD: 改用 lock_irqsave 後才能在 unlock 時回復先前 IRQ 狀態 01/30 23:31
9F:→ KaiNBD: 而非無腦啟用 IRQ。進而解決了誤啟用 IRQ 導致的 deadlock 01/30 23:32
10F:→ gn00618777: 請問原因是我列的第一種情況嗎? ^^" 再確認一下 01/31 21:10
11F:推 dces4212: 你這句「schedual無法再調度 02/02 19:50
12F:→ dces4212: task使之有機會解鎖」是啥意思?沒法被排程的話,給定t 02/02 19:50
13F:→ dces4212: ask怎麼解開原先獲得的鎖? 02/02 19:50
14F:→ gn00618777: 我的意思是想說第2, ISR不會霸佔CPU, OS透過schedual 02/02 21:37
15F:→ gn00618777: 讓其他task使用CPU,只是不會給有lock的task。 02/02 21:40
16F:→ gn00618777: 因為也是從網路上看的,我也不知道是不是第2點而造成 02/02 21:41
17F:→ gn00618777: deadlock 02/02 21:42
18F:推 lc85301: ISR 霸佔 CPU 的理由是,interrupt 會設定較高的優先權 02/04 10:01
19F:推 lc85301: 優先處理,但 ISR 又卡死在搶佔 lock 的工作 02/04 10:02
20F:推 lc85301: 時間到了 timer interrupt 跳起來,CPU 進到 scheduler 02/04 10:03
21F:推 lc85301: scheduler 會選定優先權高的程序,也就是 ISR 繼續執行 02/04 10:04
gn00618777: lc大,schedual會選定優先權高的程序這句我不 太認同 02/08 21:32
22F:→ gn00618777: 因為查了資料,ISR並不是process,也就不會被schedual 02/08 21:33
23F:→ gn00618777: https://reurl.cc/QW1lpb 02/08 21:33
※ 編輯: gn00618777 (36.224.72.25 臺灣), 02/08/2023 21:47:28
24F:推 lc85301: 這樣說有道理,應該說 ISR 是中斷處理,除非有權限更高的 02/08 22:42
25F:推 lc85301: interrupt,否則它不會被 timer interrupt 打斷 02/08 22:42
26F:推 lc85301: 所以一但 ISR 在等待某個資源解鎖,CPU 就直接卡死在那裡 02/08 22:43







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP