擦鞋匠 发表于 2021-3-10 11:18:31

请教在Linux驱动中:中断、信号以及中断信号之间的区别和联系

如题,有些概念我不是很清楚,请教各位,不胜感激。

我看的书是《Linux设备驱动开发详解:基于最新的Linux4.0内核》这本书。
书中有如下描述:
mutex_lock()和mutex_lock_interrupt()区别,前者引起的睡眠不能被信号打断,而后者可以。

问题1:是否需要严格区分书中所说的中断、信号、中断信号这三个概念。
我的理解:这里的中断就是指硬件中断,信号就是指类似于SIGINT这样的事件,我把它理解为类似于软件意义上的中断(但并非软中断),而中断信号就是前两者的并集。不知道这样理解是否正确?

问题2:上述语句中描述的不能被信号打断,是否可以理解为可以被中断打断,但是不能被信号打断?

问题3:是否存在这样的场景:某些情景只允许被中断打断,某些情景只允许被信号打断,某些情景同时允许被中断或者信号打断?

问题4:如果不允许被中断打断,但允许被信号打断,是否硬件上已经关闭了相应中断(类似于软件上采用轮询的方式,额,我想了解其中的大概机制)?

额,由于对其中的概念缺乏理解,所以一股脑问出很多问题(我猜测很多问题可能本质上是相同的,主要是因为我没有抓住问题的本质)。所以请教各位了,再次感谢!

azeng 发表于 2021-3-10 14:05:31

https://www.kernel.org/doc/htmldocs/kernel-locking/API-mutex-lock-interruptible.html

擦鞋匠 发表于 2021-3-11 11:30:00

azeng 发表于 2021-3-10 14:05
https://www.kernel.org/doc/htmldocs/kernel-locking/API-mutex-lock-interruptible.html

感谢指教!

brightchl 发表于 2021-3-11 13:13:17

https://pan.baidu.com/s/1c5XkDo

擦鞋匠 发表于 2021-3-12 13:56:41

brightchl 发表于 2021-3-11 13:13
https://pan.baidu.com/s/1c5XkDo

感谢指教。

擦鞋匠 发表于 2021-3-12 13:57:29

我从书中找到的原话,基本解释了我的疑惑:
硬中断是外部设备对CPU的中断,软中断是中断底半部的一种处理机制,而信号则是由内核(或其他进程)对某个进程的中断。在涉及系统调用的场合,人们也常说通过软中断(例如ARM为swi)陷入内核,此时软中断的概念是由软件指令引发的中断,和我们这个地方所的softirq是两个完全不同的概念,一个是softirq,一个是soft。
页: [1]
查看完整版本: 请教在Linux驱动中:中断、信号以及中断信号之间的区别和联系