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高手能解答小弟疑惑@@,谢谢。 --
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.93.106 (台湾)
※ 文章网址: https://webptt.com/cn.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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP