【问题标题】:linux bottom-half preemptionlinux下半部分抢占
【发布时间】: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


    【解决方案1】:

    Worqueues 和线程 IRQ 处理程序在进程上下文中运行并且可以被抢占。它们何时可以被抢占实际上取决于您的内核配置(CONFIG_PREEMPTCONFIG_PREEMPT_VOLUNTARY)以及您在处理线程上设置的实时优先级。

    您不能假设您的工作队列或下半部分不会被中断。这意味着如果您与上半部分共享资源,则必须使用适当的锁定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多