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