据我所知,在 Linux 中实现底半部分的机制有很多:
- 软中断
- 任务组
- 工作队列
- 线程中断 ( request_threaded_irq() )
它们在可调度性方面都有其特点。我无法从文献中得到的是他们的先发制人的可能性。什么样的任务可以抢占各种不同的下半部分实现?
更具体地说,我对线程中断和工作队列感兴趣。一个线程 irq 或工作队列在完成之前不会被抢占,即一次运行,有多少人可以确信?哪些类型的任务能够抢占它们?
例如,Robert Love 的 Linux Kernel Development 指出只有上半部分可以抢占软中断,所以我会说软中断在大多数情况下都是一次性完成的(或者如果它们被抢占,它只会在很短的时间内完成)。
我的目标是定性评估同一线程 irq 或工作队列中两个操作之间的时间。特别是 i2c 数据读取和系统时钟读取之间的时间。
谢谢。